source: 2016/30/HenriJ/qq/qq/qq/qq.cs @ 9271

Revision 9271, 9.4 KB checked in by npo17_88, 21 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class qq : PhysicsGame
10{
11    const double nopeus = 500;
12    const double hyppyNopeus = 1020;
13    const int RUUDUN_KOKO = 40;
14    bool kutistettu = false;
15   
16    Image seina = LoadImage("puuseina");
17    Image loota = LoadImage("Loota");
18    Image laatikko = LoadImage("Laatikko");
19    Image posahdus = LoadImage("bom");
20
21    PlatformCharacter pelaaja1;
22
23    Image pelaajanKuva = LoadImage("sankari");
24    Image tahtiKuva = LoadImage("tahti");
25
26
27    int Kenttanro = 1;
28
29    public override void Begin()
30    {
31        aloitapeli();
32    }
33    void aloitapeli()
34    {
35        ClearAll();
36
37        if (Kenttanro == 1) LuoKentta("kentta1");
38        else if (Kenttanro == 2) LuoKentta("kentta2");
39        else if (Kenttanro == 3) LuoKentta("kentta3");
40
41        Mouse.IsCursorVisible = true;
42
43        Gravity = new Vector(0, -1000);
44        kutistettu = false;
45
46        //LuoKentta("kentta1");
47        LisaaNappaimet();
48
49        Camera.Follow(pelaaja1);
50        Camera.ZoomFactor = -1;
51        Camera.StayInLevel = true;
52    }
53
54    void LuoKentta(string kentannimi)
55    {
56        TileMap kentta = TileMap.FromLevelAsset(kentannimi);
57        kentta.SetTileMethod('h', LisaaTaso2);
58        kentta.SetTileMethod('#', LisaaTaso);
59        kentta.SetTileMethod('1', LisaaTykki, new Vector(0, 200), 1);
60        kentta.SetTileMethod('2', LisaaTykki, new Vector(0, -200), 2);
61        kentta.SetTileMethod('3', LisaaTykki, new Vector(-200, 0), 3);
62        kentta.SetTileMethod('4', LisaaTykki, new Vector(200, 0), 4);
63        kentta.SetTileMethod('y', LisaaTaso3);
64        kentta.SetTileMethod('t', LisaaLoota);
65        kentta.SetTileMethod('l', LisaaLoota2);
66        kentta.SetTileMethod('*', LisaaTahti);
67        kentta.SetTileMethod('N', LisaaPelaaja);
68        kentta.SetTileMethod('o', LisaaKone);
69        kentta.SetTileMethod('k', LisaaKone2);
70        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
71        Level.CreateBorders();
72        Level.Background.CreateGradient(Color.LightGreen, Color.Green);
73    }
74
75    void LisaaTaso(Vector paikka, double leveys, double korkeus)
76    {
77        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
78        taso.Position = paikka;
79        taso.Tag = "block";
80        taso.Color = Color.Green;
81        Add(taso);
82    }
83
84    void LisaaAmmus(Vector paikka, Vector ampumasuunta, int ryhma)
85    {
86        PhysicsObject ammus = new PhysicsObject(20, 20);
87        ammus.Position = paikka;
88        ammus.Shape = Shape.Circle;
89        ammus.Color = Color.Red;
90        ammus.Tag = "ammus";
91        ammus.IgnoresGravity = true;
92        ammus.CollisionIgnoreGroup = ryhma;
93        AddCollisionHandler(ammus, Osuu);
94        Vector amnopeus = ampumasuunta;
95        Add(ammus);
96        ammus.Velocity = amnopeus;
97    }
98
99    void Osuu(PhysicsObject ammus, PhysicsObject kohde)
100    {
101        if (kohde.Tag.Equals("ammus") || kohde.Tag.Equals("tnt"))
102        {
103            ammus.Destroy();
104            kohde.Destroy();
105            return;
106        }
107        if (kohde.Tag.Equals("trap") || kohde.Tag.Equals("block")) ammus.Destroy();
108    }
109
110
111    void LisaaTykki(Vector paikka, double leveys, double korkeus, Vector ammusSuunta, int ryhma)
112    {
113        PhysicsObject tykki = PhysicsObject.CreateStaticObject(leveys, korkeus);
114        tykki.Position = paikka;
115        tykki.CollisionIgnoreGroup = ryhma;
116        tykki.Color = Color.Gray;
117        tykki.Tag = "block";
118        Timer ajastin = new Timer();
119        ajastin.Interval = 2;
120        ajastin.Timeout += delegate { LisaaAmmus(paikka, ammusSuunta, ryhma); };
121        ajastin.Start();
122        Add(tykki);
123    }
124
125    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
126    {
127        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
128        taso.Position = paikka;
129        taso.Tag = "block";
130        taso.Image = seina;
131        Add(taso);
132    }
133
134
135    void LisaaTaso3(Vector paikka, double leveys, double korkeus)
136    {
137        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
138        taso.Position = paikka;
139        taso.Image = seina;
140        taso.Tag = "trap";
141        Add(taso);
142    }
143    void LisaaLoota(Vector paikka, double leveys, double korkeus)
144    {
145        PhysicsObject taso = new PhysicsObject(leveys, korkeus);
146        taso.Position = paikka;
147        taso.Y += 10;
148        taso.Image = loota;
149        taso.Tag = "tnt";
150        taso.CanRotate = false;
151        taso.LinearDamping = 0.96;
152        Add(taso);
153    }
154    void LisaaLoota2(Vector paikka, double leveys, double korkeus)
155    {
156        PhysicsObject taso = new PhysicsObject(leveys, korkeus);
157        taso.Position = paikka;
158        taso.Image = laatikko;
159        taso.Tag = "block";
160        taso.CanRotate = false;
161        AddCollisionHandler(taso, "trap", Ansal);
162        taso.LinearDamping = 0.96;
163        taso.Mass = 20;
164        Add(taso);
165    } 
166    void LisaaTahti(Vector paikka, double leveys, double korkeus)
167    {
168        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
169        tahti.IgnoresCollisionResponse = true;
170        tahti.Position = paikka;
171        tahti.Image = tahtiKuva;
172        tahti.Tag = "tahti";
173        Add(tahti);
174    }
175
176    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
177    {
178        pelaaja1 = new PlatformCharacter(leveys, korkeus + 20.0);
179        pelaaja1.Position = paikka;
180        pelaaja1.Mass = 4.0;
181        pelaaja1.Image = pelaajanKuva;
182        pelaaja1.CanRotate = false;
183        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
184        AddCollisionHandler(pelaaja1, "tnt", Blowup);
185        AddCollisionHandler(pelaaja1, "ammus", Blowup);
186        AddCollisionHandler(pelaaja1, "trap", Ansal);
187        Add(pelaaja1);
188    }
189
190
191    void LisaaKone(Vector paikka, double leveys, double korkeus)
192    {
193        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
194        taso.Position = paikka;
195        taso.Tag = "block";
196        taso.Color = Color.DarkGray;
197        Timer ajastin2 = new Timer();
198        ajastin2.Interval = 0.5;
199        ajastin2.Timeout += delegate { LisaaLoota2(paikka, 40, 40); };
200        ajastin2.Start(5);
201        Add(taso);
202    }
203
204    void LisaaKone2(Vector paikka, double leveys, double korkeus)
205    {
206        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
207        taso.Position = paikka;
208        taso.Tag = "block";
209        taso.Color = Color.Black;
210        Timer ajastin2 = new Timer();
211        ajastin2.Interval = 5;
212        ajastin2.Timeout += delegate { LisaaLoota(paikka, 40, 40); };
213        ajastin2.Start(5);
214        Add(taso);
215    }
216
217   
218    void Ansal(PhysicsObject pelaaja1, PhysicsObject trap)
219    {
220        Timer ajastin = new Timer();
221        ajastin.Interval = 0.25;
222        ajastin.Timeout += delegate { nytsekatoo(trap); };
223        ajastin.Start();
224       
225    }
226    void nytsekatoo(PhysicsObject trap)
227    {
228        trap.Destroy();
229    }
230
231    void Blowup(PhysicsObject pelaaja1, PhysicsObject tnt)
232    {
233       
234        int pMaxMaara = 300;
235        ExplosionSystem rajahdys = new ExplosionSystem(posahdus, pMaxMaara);
236        Add(rajahdys);
237        double x = tnt.X;
238        double y = tnt.Y;
239        int pMaara = 30;
240        rajahdys.AddEffect(x, y, pMaara);
241        pelaaja1.Destroy();
242        tnt.Destroy();
243        Timer ajastin = new Timer();
244        ajastin.Interval = 1.5;
245        ajastin.Timeout += aloitapeli;
246        ajastin.Start();
247    }
248
249    void LisaaNappaimet()
250    {
251        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
252        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
253        Keyboard.Listen(Key.P, ButtonState.Pressed, KutistaPelaaja, "pienentää pelaajan lyhyeksi ajaksi");
254        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
255        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
256        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
257        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
258        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
259        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
260        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
261
262        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
263    }
264
265    void Liikuta(PlatformCharacter hahmo, double nopeus)
266    {
267        hahmo.Walk(nopeus);
268    }
269
270    void Hyppaa(PlatformCharacter hahmo, double nopeus)
271    {
272        hahmo.Jump(nopeus);
273    }
274
275    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
276    {
277        tahti.Destroy();
278        Kenttanro += 1;
279        ClearAll();
280        aloitapeli();
281    }
282    void KutistaPelaaja()
283    {
284        if (kutistettu) return;
285        kutistettu = true;
286        Vector koko = pelaaja1.Size;
287        pelaaja1.Size = new Vector(koko.X / 1.5, koko.Y / 1.5);
288        Timer.SingleShot(10, delegate { pelaaja1.Size = koko; kutistettu = false; });
289    }
290
291
292
293
294
295
296}
Note: See TracBrowser for help on using the repository browser.