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

Revision 8934, 11.4 KB checked in by npo17_46, 3 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
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    void LisaaTaso(Vector paikka, double leveys, double korkeus)
73    {
74        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
75        taso.Position = paikka;
76        taso.Color = Color.Green;
77        taso.Tag = "seina";
78        taso.Image = brick;
79        taso.CollisionIgnoreGroup = 3;
80        Add(taso);
81    }
82
83    PlatformCharacter LisaaPelaaja(Vector paikka, double leveys, double korkeus)
84    {
85        PlatformCharacter pelaaja = new PlatformCharacter(leveys, korkeus);
86        pelaaja.Position = paikka;
87        pelaaja.Image = norsu;
88        pelaaja.Mass = 4.0;
89        //AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
90        Add(pelaaja);
91        return pelaaja;
92    }
93    void LisaaPelaaja1(Vector paikka, double leveys, double korkeus)
94    {
95
96        pelaaja1 = LisaaPelaaja(paikka, leveys, korkeus);
97        pelaaja1.CollisionIgnoreGroup = 1;
98        pelaaja1.Tag = "pel";
99        pelaaja1.IgnoresExplosions = true;
100        AddCollisionHandler(pelaaja1, "dmg", PelaajaOsuu);
101       
102
103    }
104
105    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
106    {
107        pelaaja2 = LisaaPelaaja(paikka, leveys, korkeus);
108        pelaaja2.Tag = "seina";
109        AddCollisionHandler(pelaaja2, "expluded", expluded);
110        pelaaja2.CollisionIgnoreGroup = 2;
111        pelaaja2.IgnoresExplosions = false;
112    }
113    void LisaaNappaimet()
114    {
115        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
116        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
117
118
119
120        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus, 180.0);
121        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus, 0.0);
122        Keyboard.Listen(Key.W, ButtonState.Down, Katsoo, "Pelaaja Katsoo ylös", pelaaja1, 90.0);
123        Keyboard.Listen(Key.S, ButtonState.Down, Katsoo, "Pelaaja Katsoo alas", pelaaja1, 270.0);
124        Keyboard.Listen(Key.J, ButtonState.Pressed, RuneBlast, "Pelaaja ampuu", pelaaja1);
125        Keyboard.Listen(Key.K, ButtonState.Pressed, viskaa, "Pelaaja heittää pois ympäriltä", pelaaja1);
126        Keyboard.Listen(Key.L, ButtonState.Pressed, tulipallo, "Pelaaja heittää pois ympäriltä", pelaaja1);
127
128        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus, 180.0);
129        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus, 0.0);
130        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
131        Keyboard.Listen(Key.NumPad4, ButtonState.Pressed, slash, "Lyö alas", pelaaja2, 180.0);
132        Keyboard.Listen(Key.NumPad6, ButtonState.Pressed, slash, "Lyö ylös", pelaaja2, 0.0);
133        Keyboard.Listen(Key.NumPad8, ButtonState.Pressed, slash, "Lyö vasemmalle", pelaaja2, 90.0);
134        Keyboard.Listen(Key.NumPad5, ButtonState.Pressed, slash, "Lyö oikealle", pelaaja2, 270.0);
135
136
137        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
138
139        //ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
140        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
141        //ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
142
143        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
144    }
145
146
147    void tulipallo(PlatformCharacter hahmo)
148    {
149       
150            PhysicsObject runeblast2 = new PhysicsObject(50, 50);
151            runeblast2.Position = pelaaja1.Position;
152            runeblast2.Image = Blast;
153            runeblast2.CollisionIgnoreGroup = 4;
154            //rune
155            runeblast2.Brain = new FollowerBrain(pelaaja2);
156            Add(runeblast2);
157            Timer.SingleShot(2.0, runeblast2.Destroy);
158
159       
160    }
161
162    void Liikuta(PlatformCharacter hahmo, double nopeus, double kulma)
163    {
164        hahmo.Walk(nopeus);
165        hahmo.Angle = Angle.FromDegrees(kulma);
166    }
167    //  void Liikuta(PlatformCharacter hahmo, double nopeus, double kulma)
168    //  {
169    //     hahmo.Walk(nopeus);
170    //     hahmo.Angle = Angle.FromDegrees(kulma);
171    //}
172    void Katsoo(PlatformCharacter hahmo, double kulma)
173    {
174        hahmo.Angle = Angle.FromDegrees(kulma);
175    }
176    void slash(PlatformCharacter hahmo, double kulma2)
177    {
178        hahmo.Angle = Angle.FromDegrees(kulma2);
179        Lyo();
180    }
181    void Hyppaa(PlatformCharacter hahmo, double nopeus)
182    {
183        hahmo.Jump(nopeus);
184    }
185    void RuneBlast(PlatformCharacter pelaaja1)
186    {
187        PhysicsObject runeblast = new PhysicsObject(20.0, 5.0);
188        runeblast.Position = pelaaja1.Position;
189        Angle suunta = pelaaja1.Angle;
190        runeblast.CollisionIgnoreGroup = 1;
191        //runeblast.IgnoresCollisionWith(pelaaja1);
192        runeblast.Image = Blast;
193        runeblast.Angle = suunta;
194        runeblast.IgnoresGravity = true;
195        runeblast.Mass = 10;
196        //runeblast.Brain = new FollowerBrain();
197        //AddCollisionHandler(runeblast, "seina", Tromaaseina);
198        //runeblast.MaximumLifetime = TimeSpan.FromSeconds(15.0);
199
200        Add(runeblast);
201        runeblast.Hit(Vector.FromLengthAndAngle(5000.0, pelaaja1.Angle));
202        runeblast.Tag = "Prjectile";
203        runeblast.Tag = "expluded";
204
205        AddCollisionHandler(runeblast, "seina", Tromaaseina);
206
207    }
208    void Lyo()
209    {
210        PhysicsObject lyonti = new PhysicsObject(20, 40);
211        lyonti.Position = pelaaja2.Position;
212        Angle suunta = pelaaja2.Angle;
213
214        lyonti.CollisionIgnoreGroup = 2;
215        //runeblast.IgnoresCollisionWith(pelaaja1);
216        lyonti.Image = Lyontii;
217        lyonti.Angle = suunta;
218        lyonti.IgnoresGravity = true;
219        lyonti.Mass = 10;
220        lyonti.Tag = "dmg";
221        //runeblast.Brain = new FollowerBrain();
222        //AddCollisionHandler(runeblast, "seina", Tromaaseina);
223        //runeblast.MaximumLifetime = TimeSpan.FromSeconds(15.0);
224        lyonti.MaximumLifetime = TimeSpan.FromSeconds(0.2);
225
226        Add(lyonti);
227        lyonti.Hit(Vector.FromLengthAndAngle(3000.0, pelaaja2.Angle));
228     
229
230       
231
232
233    }
234    void viskaa(PlatformCharacter pelaaja1)
235    {
236       
237        Explosion rajahdys2 = new Explosion(80);
238        rajahdys2.Image = explusion;
239        rajahdys2.Position = pelaaja1.Position;
240        rajahdys2.Force = 1000;
241        rajahdys2.Tag = "expluded";
242       
243        Add(rajahdys2);
244       
245    }
246
247    void dmg(PlatformCharacter player1, PhysicsObject lyonti)
248    {
249        laskuri.Value -= 20;
250
251
252        if (laskuri.Value <= 0)
253            pelaaja1.Destroy();
254    }
255    //  Runicexplude(PhysicsObject runeblast, Vector paikka)
256    // {
257    //   Explosion rajahdys = new Explosion(50);
258    //   rajahdys.Position = runeblast.Position;
259    //  Add(rajahdys);
260    //  runeblast.Destroy;
261    //}
262    void LuoPisteLaskuri(double x, double y)
263    {
264        laskuri = new IntMeter(350);
265        laskuri.MaxValue = 350;
266
267        Label naytto = new Label();
268        naytto.X = x;
269        naytto.Y = y;
270        naytto.TextColor = Color.Black;
271        naytto.BorderColor = Color.Green;
272        naytto.Color = Color.Red;
273
274        naytto.BindTo(laskuri);
275        Add(naytto);
276        naytto.Title = "Elämä";
277    }
278    void LisaaLaskuri()
279
280    {
281        LuoPisteLaskuri(Screen.Left + 100.0, Screen.Bottom + 100.0);
282    }
283    //   void LuoManaLaskuri(double x, double y)
284    //  {
285    //    laskurimana = new IntMeter(100);
286    //      laskurimana.MaxValue = 100;
287
288    //     Label naytto = new Label();
289    //   naytto.X = x;
290    //     naytto.Y = y;
291    //naytto.TextColor = Color.Black;
292    //    naytto.BorderColor = Color.Green;
293    //    naytto.Color = Color.Blue;
294
295    //     naytto.BindTo(laskurimana);
296    //    Add(naytto);
297    //     naytto.Title = "Mana";
298    //  }
299    //void LisaaManaLaskuri()
300
301    //{
302    //    LuoManaLaskuri(Screen.Left + 100.0, Screen.Top + 100.0);
303    //  }
304
305    void LuoPisteLaskuri2(double x, double y)
306    {
307        laskuri2 = new IntMeter(500);
308        laskuri2.MaxValue = 500;
309
310        Label naytto = new Label();
311        naytto.X = x;
312        naytto.Y = y;
313        naytto.TextColor = Color.Black;
314        naytto.BorderColor = Color.Green;
315        naytto.Color = Color.Red;
316
317        naytto.BindTo(laskuri2);
318        Add(naytto);
319        naytto.Title = "Elämä";
320    }
321    void LisaaLaskuri2()
322    {
323        LuoPisteLaskuri2(Screen.Right - 100.0, Screen.Bottom + 100.0);
324    }
325
326    void Tromaaseina(PhysicsObject runeblast, PhysicsObject taso)
327    {
328        //Explosion rajahdys = new Explosion(75);
329        //rajahdys.Position = runeblast.Position;
330        //Add(rajahdys);
331        //Runicexplude(runeblast.Position);
332        Explosion rajahdys = new Explosion(15);
333        rajahdys.Image = explusion;
334        rajahdys.Position = runeblast.Position;
335        rajahdys.Force = 1;
336        rajahdys.Tag = "expluded";
337        Add(rajahdys);
338        runeblast.Destroy();
339    }
340
341    void expluded(PhysicsObject pelaaja2, PhysicsObject kohde)
342    {
343
344
345        laskuri2.Value -= 25;
346
347
348        if (laskuri2.Value <= 0)
349            pelaaja2.Destroy();
350    }
351    void PelaajaOsuu(PhysicsObject pelaaja1, PhysicsObject kohde)
352    {
353
354
355        laskuri.Value -= 50;
356
357
358        if (laskuri.Value <= 0)
359            pelaaja1.Destroy();
360    }
361    //void Tekeedmg()
362    //{
363       // laskuri.Value -= 20;
364
365
366      //  if (laskuri.Value <= 0)
367    //        pelaaja1.Destroy();
368  //  }
369}
Note: See TracBrowser for help on using the repository browser.