source: 2017/27/UunoT/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 8970

Revision 8970, 12.5 KB checked in by npo17_46, 4 years 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 Tasohyppelypeli1 : PhysicsGame
10{
11
12    const double nopeus = 200;
13    const double hyppyNopeus = 750;
14    const int RUUDUN_KOKO = 40;
15    Image Blast = LoadImage("Blast");
16    Image brick = LoadImage("Castle birck");
17    Image explusion = LoadImage("explusion");
18    Image norsu = LoadImage("norsu");
19    Image Lyontii = LoadImage("Lyonti");
20    Image meteorit = LoadImage("meteorit");
21    PlatformCharacter pelaaja1;
22    PlatformCharacter pelaaja2;
23    IntMeter laskuri;
24    IntMeter laskuri2;
25    // IntMeter laskurimana;
26    SoundEffect maaliAani = LoadSoundEffect("maali");
27
28    public override void Begin()
29    {
30        AloitaPeli();
31        IsFullScreen = false;
32
33    }
34    void AloitaPeli()
35    {
36
37        Physiikka();
38        LuoKentta();
39        //Lisaalaskurit();
40        LisaaLaskuri();
41        LisaaLaskuri2();
42        LisaaNappaimet();
43        Kamera();
44    }
45
46    void Physiikka()
47    {
48        Gravity = new Vector(0, -1000);
49    }
50    //void Lisaalaskurit
51    //{
52    //  LisaaLaskuri();
53    // LisaaLaskuri2();
54    //}
55    void Kamera()
56    {
57        Camera.Follow(pelaaja1);
58        Camera.ZoomFactor = 1.2;
59        Camera.StayInLevel = true;
60    }
61    void LuoKentta()
62    {
63        TileMap kentta = TileMap.FromLevelAsset("kentta1");
64        kentta.SetTileMethod('#', LisaaTaso);
65        kentta.SetTileMethod('N', LisaaPelaaja1);
66        kentta.SetTileMethod('M', LisaaPelaaja2);
67        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
68        Level.CreateBorders();
69        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
70       
71    }
72
73    void LisaaTaso(Vector paikka, double leveys, double korkeus)
74    {
75        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
76        taso.Position = paikka;
77        taso.Color = Color.Green;
78        taso.Tag = "seina";
79        taso.Image = brick;
80        taso.CollisionIgnoreGroup = 3;
81        Add(taso);
82    }
83
84    PlatformCharacter LisaaPelaaja(Vector paikka, double leveys, double korkeus)
85    {
86        PlatformCharacter pelaaja = new PlatformCharacter(leveys, korkeus);
87        pelaaja.Position = paikka;
88        pelaaja.Image = norsu;
89        pelaaja.Mass = 4.0;
90        //AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
91        Add(pelaaja);
92        return pelaaja;
93    }
94    void LisaaPelaaja1(Vector paikka, double leveys, double korkeus)
95    {
96
97        pelaaja1 = LisaaPelaaja(paikka, leveys, korkeus);
98        pelaaja1.CollisionIgnoreGroup = 1;
99        pelaaja1.Tag = "pel";
100        pelaaja1.IgnoresExplosions = true;
101        AddCollisionHandler(pelaaja1, "dmg", PelaajaOsuu);
102       
103
104    }
105
106    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
107    {
108        pelaaja2 = LisaaPelaaja(paikka, leveys, korkeus);
109        pelaaja2.Tag = "seina";
110        AddCollisionHandler(pelaaja2, "expluded", expluded);
111       
112        pelaaja2.CollisionIgnoreGroup = 2;
113        pelaaja2.IgnoresExplosions = false;
114    }
115    void LisaaNappaimet()
116    {
117        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
118        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
119
120
121
122        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus, 180.0);
123        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus, 0.0);
124        Keyboard.Listen(Key.W, ButtonState.Down, Katsoo, "Pelaaja Katsoo ylös", pelaaja1, 90.0);
125        Keyboard.Listen(Key.S, ButtonState.Down, Katsoo, "Pelaaja Katsoo alas", pelaaja1, 270.0);
126        Keyboard.Listen(Key.J, ButtonState.Pressed, RuneBlast, "Pelaaja ampuu", pelaaja1);
127        Keyboard.Listen(Key.K, ButtonState.Pressed, viskaa, "Pelaaja heittää pois ympäriltä", pelaaja1);
128        Keyboard.Listen(Key.L, ButtonState.Pressed, tulipallo, "Pelaaja heittää pois ympäriltä", pelaaja1);
129
130        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus, 180.0);
131        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus, 0.0);
132        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
133        Keyboard.Listen(Key.NumPad4, ButtonState.Pressed, slash, "Lyö alas", pelaaja2, 180.0);
134        Keyboard.Listen(Key.NumPad6, ButtonState.Pressed, slash, "Lyö ylös", pelaaja2, 0.0);
135        Keyboard.Listen(Key.NumPad8, ButtonState.Pressed, slash, "Lyö vasemmalle", pelaaja2, 90.0);
136        Keyboard.Listen(Key.NumPad5, ButtonState.Pressed, slash, "Lyö oikealle", pelaaja2, 270.0);
137        Keyboard.Listen(Key.NumPad7, ButtonState.Pressed, dashL, "dash Left", pelaaja2);
138        Keyboard.Listen(Key.NumPad9, ButtonState.Pressed, dashR, "dash right", pelaaja2);
139
140        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
141
142        //ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
143        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
144        //ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
145
146        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
147    }
148
149    void dashL(PlatformCharacter pelaaja2)
150    {
151        pelaaja2.X -= 25;
152    }
153    void dashR(PlatformCharacter pelaaja2)
154    {
155        pelaaja2.X += 25;
156    }
157    void tulipallo(PlatformCharacter hahmo)
158    {
159       
160            PhysicsObject runeblast3 = new PhysicsObject(50, 50);
161            runeblast3.Position = pelaaja1.Position;
162            runeblast3.Image = meteorit;
163            runeblast3.CollisionIgnoreGroup = 4;
164            runeblast3.Y += 50;
165            runeblast3.Angle = pelaaja1.Angle;
166            runeblast3.Brain = new FollowerBrain(pelaaja2);
167            Add(runeblast3);
168        runeblast3.Tag = "expluded";
169            runeblast3.Y += 50;
170            Timer.SingleShot(2.0, runeblast3.Destroy);
171            AddCollisionHandler(runeblast3, "seina", rajahd);
172
173       
174    }
175    void rajahd(PhysicsObject runeblast3, PhysicsObject pelaaja2)
176    {
177
178        Explosion rajahdys3 = new Explosion(80);
179        rajahdys3.Image = explusion;
180        rajahdys3.Position = runeblast3.Position;
181        rajahdys3.Force = 100;
182        rajahdys3.Tag = "expluded";
183       
184
185        Add(rajahdys3);
186       
187
188    }
189
190    void Liikuta(PlatformCharacter hahmo, double nopeus, double kulma)
191    {
192        hahmo.Walk(nopeus);
193        hahmo.Angle = Angle.FromDegrees(kulma);
194    }
195    //  void Liikuta(PlatformCharacter hahmo, double nopeus, double kulma)
196    //  {
197    //     hahmo.Walk(nopeus);
198    //     hahmo.Angle = Angle.FromDegrees(kulma);
199    //}
200    void Katsoo(PlatformCharacter hahmo, double kulma)
201    {
202        hahmo.Angle = Angle.FromDegrees(kulma);
203    }
204    void slash(PlatformCharacter hahmo, double kulma2)
205    {
206        hahmo.Angle = Angle.FromDegrees(kulma2);
207        Lyo();
208    }
209    void Hyppaa(PlatformCharacter hahmo, double nopeus)
210    {
211        hahmo.Jump(nopeus);
212    }
213    void RuneBlast(PlatformCharacter pelaaja1)
214    {
215        PhysicsObject runeblast = new PhysicsObject(20.0, 5.0);
216        runeblast.Position = pelaaja1.Position;
217        Angle suunta = pelaaja1.Angle;
218        runeblast.CollisionIgnoreGroup = 1;
219        //runeblast.IgnoresCollisionWith(pelaaja1);
220        runeblast.Image = Blast;
221        runeblast.Angle = suunta;
222        runeblast.IgnoresGravity = true;
223        runeblast.Mass = 10;
224        //runeblast.Brain = new FollowerBrain();
225        //AddCollisionHandler(runeblast, "seina", Tromaaseina);
226        //runeblast.MaximumLifetime = TimeSpan.FromSeconds(15.0);
227
228        Add(runeblast);
229        runeblast.Hit(Vector.FromLengthAndAngle(5000.0, pelaaja1.Angle));
230        runeblast.Tag = "Prjectile";
231        runeblast.Tag = "expluded";
232
233        AddCollisionHandler(runeblast, "seina", Tromaaseina);
234
235    }
236    void Lyo()
237    {
238        PhysicsObject lyonti = new PhysicsObject(20, 40);
239        lyonti.Position = pelaaja2.Position;
240        Angle suunta = pelaaja2.Angle;
241
242        lyonti.CollisionIgnoreGroup = 2;
243        //runeblast.IgnoresCollisionWith(pelaaja1);
244        lyonti.Image = Lyontii;
245        lyonti.Angle = suunta;
246        lyonti.IgnoresGravity = true;
247        lyonti.Mass = 10;
248        lyonti.Tag = "dmg";
249        //runeblast.Brain = new FollowerBrain();
250        //AddCollisionHandler(runeblast, "seina", Tromaaseina);
251        //runeblast.MaximumLifetime = TimeSpan.FromSeconds(15.0);
252        lyonti.MaximumLifetime = TimeSpan.FromSeconds(0.2);
253
254        Add(lyonti);
255        lyonti.Hit(Vector.FromLengthAndAngle(3000.0, pelaaja2.Angle));
256     
257
258       
259
260
261    }
262    void viskaa(PlatformCharacter pelaaja1)
263    {
264       
265        Explosion rajahdys2 = new Explosion(80);
266        rajahdys2.Image = explusion;
267        rajahdys2.Position = pelaaja1.Position;
268        rajahdys2.Force = 1000;
269        rajahdys2.Tag = "expluded";
270       
271       
272        Add(rajahdys2);
273       
274    }
275
276    void dmg(PlatformCharacter player1, PhysicsObject lyonti)
277    {
278        laskuri.Value -= 20;
279
280
281        if (laskuri.Value <= 0)
282            pelaaja1.Destroy();
283    }
284    //  Runicexplude(PhysicsObject runeblast, Vector paikka)
285    // {
286    //   Explosion rajahdys = new Explosion(50);
287    //   rajahdys.Position = runeblast.Position;
288    //  Add(rajahdys);
289    //  runeblast.Destroy;
290    //}
291    void LuoPisteLaskuri(double x, double y)
292    {
293        laskuri = new IntMeter(350);
294        laskuri.MaxValue = 350;
295
296        Label naytto = new Label();
297        naytto.X = x;
298        naytto.Y = y;
299        naytto.TextColor = Color.Black;
300        naytto.BorderColor = Color.Green;
301        naytto.Color = Color.Red;
302
303        naytto.BindTo(laskuri);
304        Add(naytto);
305        naytto.Title = "Elämä";
306    }
307    void LisaaLaskuri()
308
309    {
310        LuoPisteLaskuri(Screen.Left + 100.0, Screen.Bottom + 100.0);
311    }
312    //   void LuoManaLaskuri(double x, double y)
313    //  {
314    //    laskurimana = new IntMeter(100);
315    //      laskurimana.MaxValue = 100;
316
317    //     Label naytto = new Label();
318    //   naytto.X = x;
319    //     naytto.Y = y;
320    //naytto.TextColor = Color.Black;
321    //    naytto.BorderColor = Color.Green;
322    //    naytto.Color = Color.Blue;
323
324    //     naytto.BindTo(laskurimana);
325    //    Add(naytto);
326    //     naytto.Title = "Mana";
327    //  }
328    //void LisaaManaLaskuri()
329
330    //{
331    //    LuoManaLaskuri(Screen.Left + 100.0, Screen.Top + 100.0);
332    //  }
333
334    void LuoPisteLaskuri2(double x, double y)
335    {
336        laskuri2 = new IntMeter(500);
337        laskuri2.MaxValue = 500;
338
339        Label naytto = new Label();
340        naytto.X = x;
341        naytto.Y = y;
342        naytto.TextColor = Color.Black;
343        naytto.BorderColor = Color.Green;
344        naytto.Color = Color.Red;
345
346        naytto.BindTo(laskuri2);
347        Add(naytto);
348        naytto.Title = "Elämä";
349    }
350    void LisaaLaskuri2()
351    {
352        LuoPisteLaskuri2(Screen.Right - 100.0, Screen.Bottom + 100.0);
353    }
354
355    void Tromaaseina(PhysicsObject runeblast, PhysicsObject taso)
356    {
357        //Explosion rajahdys = new Explosion(75);
358        //rajahdys.Position = runeblast.Position;
359        //Add(rajahdys);
360        //Runicexplude(runeblast.Position);
361        Explosion rajahdys = new Explosion(15);
362        rajahdys.Image = explusion;
363        rajahdys.Position = runeblast.Position;
364        rajahdys.Force = 1;
365        rajahdys.Tag = "expluded";
366        Add(rajahdys);
367        runeblast.Destroy();
368    }
369
370    void expluded(PhysicsObject pelaaja2, PhysicsObject kohde)
371    {
372
373
374        laskuri2.Value -= 25;
375
376
377        if (laskuri2.Value <= 0)
378            pelaaja2.Destroy();
379    }
380    void PelaajaOsuu(PhysicsObject pelaaja1, PhysicsObject kohde)
381    {
382
383
384        laskuri.Value -= 50;
385
386
387        if (laskuri.Value <= 0)
388            pelaaja1.Destroy();
389    }
390    void Bam(PlatformCharacter pelaaja2,PhysicsObject kohde)
391    {
392
393
394        laskuri2.Value -= 50;
395
396
397        if (laskuri.Value <= 0)
398            pelaaja2.Destroy();
399    }
400    //void Tekeedmg()
401    //{
402    // laskuri.Value -= 20;
403
404
405    //  if (laskuri.Value <= 0)
406    //        pelaaja1.Destroy();
407    //  }
408}
Note: See TracBrowser for help on using the repository browser.