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

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