source: 2013/23/LauriH/Peli_1/Peli_1/Peli_1/Peli_1.cs @ 3986

Revision 3986, 14.2 KB checked in by lanijohe, 9 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 Peli_1 : PhysicsGame
10{
11    PlatformCharacter Pelaaja;
12    PlatformCharacter Pelaaja2;
13    PlatformCharacter Vastustaja;
14    PlatformCharacter Vastustaja2;
15    PlatformCharacter PelaajanAlus;
16    PlatformCharacter Hyokkaaja;
17
18    PhysicsObject PAmmus;
19    PhysicsObject Ammus;
20
21    private Image [] VastustajanLiike = LoadImages("Vastustaja", "Vastustaja2", "Vastustaja3");
22    Image PelaajanKuva = LoadImage("Pelaaja");
23    Image HyokkaajanKuva = LoadImage("Hyokkaaja");
24    Image AluksenKuva = LoadImage("Alus");
25    Image AsteroidiKuva = LoadImage("Asteroidi");
26
27
28    const double Nopeus = 200;
29    const double HyppyNopeus = 750;
30    const double NousuNopeus = 500;
31    const double LaskuNopeus = 500;
32
33    DoubleMeter elamaLaskuri; 
34    IntMeter keratytPallot;
35    IntMeter TuhoLaskuri;
36    int kenttaNro = 1;
37    string kenttaTiedostonNimi;
38
39    public override void Begin()
40    {
41        Valikko();
42        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
43    }
44        void LuoKentta(string kenttaTiedostonNimi)
45        {
46            TileMap ruudut = TileMap.FromLevelAsset(kenttaTiedostonNimi);
47            ruudut.SetTileMethod('#', LuoPalikka);
48            ruudut.SetTileMethod('P', LuoPelaaja);
49            ruudut.SetTileMethod('p', LuoPelaaja2);
50            ruudut.SetTileMethod('?', LuoPallo);
51            ruudut.SetTileMethod('M', LuoMaali);
52            ruudut.SetTileMethod('O', LuoVastustaja);
53            ruudut.SetTileMethod('o', LuoVastustaja2);
54            ruudut.SetTileMethod('H', LuoHyokkaaja);
55            ruudut.Execute(20,20);
56           
57            Gravity = new Vector(0, -1000);
58            Camera.Follow(Pelaaja);
59            Camera.StayInLevel = true;
60            Laskurit();
61
62            Level.CreateBorders();
63        }
64
65        void SeuraavaKentta()
66        {
67            ClearAll();
68            if (kenttaNro == 1)
69            { LuoKentta("Taso_1"); }
70            else if (kenttaNro == 2)
71            { LuoKentta("Taso_2"); }
72            else if (kenttaNro == 3)
73            { LuoKentta("Taso_3"); }
74            else if (kenttaNro == 4)
75            { LuoKentta("Taso_4"); }
76            else if (kenttaNro == 5)
77            {LuoKentta5(); }
78            else if (kenttaNro > 5)
79            { Exit(); }
80
81            AsetaOhjaimet();
82
83        }
84
85        void LuoKentta5()
86        {
87            TileMap ruudut = TileMap.FromLevelAsset("Taso_5");
88            ruudut.SetTileMethod('A', LuoPelaajanAlus);
89            ruudut.SetTileMethod('H', LuoHyokkaaja);
90            ruudut.SetTileMethod('M', LuoAsteroidi);
91            ruudut.Execute(20, 20);
92
93            Level.CreateBottomBorder();
94            Level.CreateTopBorder();
95            Level.CreateLeftBorder();
96
97            Camera.Follow(Pelaaja);
98            Camera.StayInLevel = true;
99            Laskurit();
100            AsetaOhjaimet();
101        }
102
103        void Valikko()
104        {
105            MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Taso 1", "Taso 2", "Taso 3", "Taso 4", "Taso 5", "Lopeta");
106            Add(alkuValikko);
107
108            alkuValikko.AddItemHandler(0, delegate { kenttaNro = 1; SeuraavaKentta(); });
109            alkuValikko.AddItemHandler(1, delegate { kenttaNro = 2; SeuraavaKentta(); });
110            alkuValikko.AddItemHandler(2, delegate { kenttaNro = 3; SeuraavaKentta(); });
111            alkuValikko.AddItemHandler(3, delegate { kenttaNro = 4; SeuraavaKentta(); });
112            alkuValikko.AddItemHandler(4, LuoKentta5);
113        }
114
115        void LuoPelaaja(Vector paikka, double leveys, double korkeus)
116        {
117            Pelaaja = new PlatformCharacter(50,50);
118            Pelaaja.Position = paikka;
119            Pelaaja.Image = PelaajanKuva;
120            AddCollisionHandler(Pelaaja, "pallo", TormaaPalloon);
121            AddCollisionHandler(Pelaaja, "Vastustaja", TormaaVastustajaan);
122            AddCollisionHandler(Pelaaja, "Maali", TormaaMaaliin);
123            Add(Pelaaja);
124        }
125
126        void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
127        {
128            Pelaaja2 = new PlatformCharacter(50, 50);
129            Pelaaja2.Position = paikka;
130            Pelaaja2.Image = PelaajanKuva;
131            AddCollisionHandler(Pelaaja2, "pallo", TormaaPalloon);
132            AddCollisionHandler(Pelaaja2, "Vastustaja", TormaaVastustajaan);
133            AddCollisionHandler(Pelaaja2, "Maali", TormaaMaaliin);
134            Add(Pelaaja);
135            Pelaaja2.Weapon = new LaserGun(10, 10);
136            Pelaaja2.Weapon.FireRate = 5.0;
137
138
139        }
140
141        void LuoPelaajanAlus(Vector paikka, double leveys, double korkeus)
142        {
143            PelaajanAlus = new PlatformCharacter(50, 50);
144            PelaajanAlus.Position = paikka;
145            PelaajanAlus.Image = AluksenKuva;
146            AddCollisionHandler(PelaajanAlus, "Ammus", TormaaAmmukseen);
147            AddCollisionHandler(Pelaaja, "Maali", TormaaMaaliin);
148            AddCollisionHandler(Pelaaja, "Asteroidi", TormaaAsteroidiin); 
149            PelaajanAlus.Weapon = new LaserGun(10, 10);
150            PelaajanAlus.Weapon.FireRate = 5.0;
151           
152            Add(PelaajanAlus);
153           
154        }
155
156        void LuoHyokkaaja(Vector paikka, double leveys, double korkeus)
157        {
158            Hyokkaaja = new PlatformCharacter(50, 50);
159            Hyokkaaja.Position = paikka;
160            Hyokkaaja.Image = HyokkaajanKuva;
161            AddCollisionHandler(PAmmus, "Hyokkaaja", TormaaPAmmukseen);
162            Add(Hyokkaaja);
163
164            FollowerBrain seurausAivot = new FollowerBrain();
165            seurausAivot.Speed = 200;
166            Vastustaja2.Brain = seurausAivot;
167
168            Hyokkaaja.Weapon = new LaserGun(10, 10);
169            Hyokkaaja.Weapon.FireRate = 5.0;
170        }
171
172        void LuoAsteroidi(Vector paikka, double leveys, double korkeus)
173        { 
174            PhysicsObject Asteroidi = new PhysicsObject(30, 30);
175            Asteroidi.Position = paikka;
176            Asteroidi.Image = AsteroidiKuva;
177            Asteroidi.Tag = "Asteroidi";
178           
179            RandomMoverBrain HaahuiluAivot = new RandomMoverBrain();
180            HaahuiluAivot.ChangeMovementSeconds = 3;
181            HaahuiluAivot.WanderRadius = 200;
182            Asteroidi.Brain = HaahuiluAivot;
183
184
185
186        }
187
188        void LuoPalikka(Vector paikka, double leveys, double korkeus)
189        {
190            PhysicsObject Taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
191            Taso.Position = paikka;
192            Taso.Color = Color.Green;
193            Add(Taso);
194        }
195
196        void LuoPallo(Vector paikka, double leveys, double korkeus)
197        {
198            PhysicsObject pallo = new PhysicsObject (10,10);
199            pallo.MakeStatic();
200            pallo.Shape = Shape.Circle;
201            pallo.Color = Color.Red;
202            pallo.Position = paikka;
203            pallo.Tag = "pallo";
204            Add(pallo, 1);
205
206            pallo.IgnoresGravity = true;
207            pallo.IgnoresCollisionResponse = true;
208
209        }
210
211        void LuoVastustaja(Vector paikka, double leveys, double korkeus)
212        {
213            Vastustaja = new PlatformCharacter(50,50);
214            Vastustaja.Position = paikka;
215            Vastustaja.Animation = new Animation(VastustajanLiike);
216            Vastustaja.Tag = "Vastustaja";
217
218            Add(Vastustaja);
219
220            Vastustaja.Animation.Start();
221
222           // Vastustaja2.Weapon = new LaserGun(10, 10);
223
224            PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
225            tasoAivot.Speed = 100;
226
227            Vastustaja.Brain = tasoAivot;
228
229
230        }
231
232        void LuoVastustaja2(Vector paikka, double leveys, double korkeus)
233        {
234            Vastustaja2 = new PlatformCharacter(50, 50);
235            Vastustaja2.Position = paikka;
236            Vastustaja2.Animation = new Animation(VastustajanLiike);
237            Vastustaja2.Tag = "Vastustaja";
238
239            Add(Vastustaja);
240
241            Vastustaja.Animation.Start();
242
243            FollowerBrain seurausAivot = new FollowerBrain();
244            seurausAivot.Speed = 200;
245            Vastustaja2.Brain = seurausAivot;
246
247            Vastustaja2.Weapon = new LaserGun(10, 10);
248            Vastustaja2.Weapon.FireRate = 5.0;
249        }
250
251        void LuoMaali(Vector paikka, double leveys, double korkeus)
252        {
253            PhysicsObject Maali = new PhysicsObject(100, 1000);
254            Maali.Position = paikka;
255            Maali.Shape = Shape.Rectangle;
256            Maali.Color = Color.Yellow;
257            Maali.Tag = "Maali";
258            Add(Maali);
259        }
260
261        void AsetaOhjaimet()
262        {
263            if(kenttaNro <= 2)
264            {
265            Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
266            Keyboard.Listen(Key.Up, ButtonState.Pressed, PelaajaHyppaa, "Pelaaja hyppää", Pelaaja, HyppyNopeus);
267            Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liiku oikealle", Pelaaja, Nopeus);
268            Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liiku vasemmalle", Pelaaja, -Nopeus);
269            }
270
271            else if(kenttaNro == 3 && kenttaNro == 4)
272            {
273            Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
274            Keyboard.Listen(Key.Up, ButtonState.Pressed, PelaajaHyppaa, "Pelaaja hyppää", Pelaaja, HyppyNopeus);
275            Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liiku oikealle", Pelaaja, Nopeus);
276            Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liiku vasemmalle", Pelaaja, -Nopeus);
277            Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu vastustajaa", Pelaaja);
278            }
279           
280            else if(kenttaNro == 5)
281            {
282            Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
283            Keyboard.Listen(Key.Up, ButtonState.Down, SiirraPelaajaa, "Alus ylös", Pelaaja, 1.0);
284            Keyboard.Listen(Key.Escape, ButtonState.Down, SiirraPelaajaa, "Alus alas", Pelaaja, 1.0);
285            Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Lopeta peli", Pelaaja);
286            }
287        }
288
289        void PelaajaHyppaa(PlatformCharacter pelaaja, double nopeus)
290        {
291            pelaaja.Jump(nopeus);
292        }
293
294        void LiikutaPelaajaa(PlatformCharacter pelaaja, double nopeus)
295        {
296            pelaaja.Walk(nopeus);
297        }
298
299        void SiirraPelaajaa(PlatformCharacter Pelaaja, double paikanSiirto)
300        {
301            Pelaaja.Position += new Vector(0, paikanSiirto);
302        }
303
304
305        void AmmuAseella(PlatformCharacter Pelaaja)
306        {
307            PhysicsObject ammus = Pelaaja.Weapon.Shoot();
308
309            //if(ammus)
310        }
311   
312        void Laskurit()
313        {
314            LuoElamaLaskuri(Screen.Left + 100, Screen.Top - 100);
315            keratytPallot = LuoPistelaskuri(Screen.Left + 100, Screen.Top - 200);
316            TuhoLaskuri = LuoTuholaskuri(Screen.Left + 100, Screen.Top - 300);
317        }
318
319        void LuoElamaLaskuri(double x, double y)
320        {
321            elamaLaskuri = new DoubleMeter(10);
322            elamaLaskuri.MaxValue = 10;
323            elamaLaskuri.LowerLimit += ElamaLoppui;
324
325            ProgressBar elamaPalkki = new ProgressBar(100, 20);
326            elamaPalkki.BindTo(elamaLaskuri);
327            elamaPalkki.X = Screen.Left +100;
328            elamaPalkki.Y = Screen.Top - 100;
329            elamaPalkki.BorderColor = Color.Black;
330            Add(elamaPalkki);
331
332        }
333
334        void ElamaLoppui()
335        {
336            MessageDisplay.Add("AUUUUUUUU!!! \n Game Over");
337            SeuraavaKentta();
338        }
339
340        IntMeter LuoPistelaskuri(double x, double y)
341        {
342            IntMeter laskuri = new IntMeter(0);
343            laskuri.MaxValue = 11;
344
345            Label naytto = new Label();
346            naytto.BindTo(laskuri);
347            naytto.X = x;
348            naytto.Y = y;
349            naytto.TextColor = Color.White;
350            naytto.BorderColor = Level.BackgroundColor;
351            naytto.Color = Level.BackgroundColor;
352            Add(naytto);
353
354            return laskuri;
355
356        }
357
358        IntMeter LuoTuholaskuri(double x, double y)
359        {
360            IntMeter laskuri = new IntMeter(0);
361            laskuri.MaxValue = 10;
362
363            Label naytto = new Label();
364            naytto.BindTo(laskuri);
365            naytto.X = x;
366            naytto.Y = y;
367            naytto.TextColor = Color.Red;
368            naytto.BorderColor = Level.BackgroundColor;
369            naytto.Color = Level.BackgroundColor;
370            Add(naytto);
371
372            return laskuri;
373        }
374
375        void TormaaPalloon(PhysicsObject Pelaaja, PhysicsObject pallo)
376        {
377            MessageDisplay.Add("Sait pallon!");
378            keratytPallot.Value += 1;
379            pallo.Destroy();
380        }
381
382        void TormaaVastustajaan(PhysicsObject Pelaaja, PhysicsObject Vastustaja)
383        {
384            MessageDisplay.Add("Ai varo vähän!!!");
385            elamaLaskuri.Value -= 1;
386        }
387
388        void TormaaMaaliin(PhysicsObject Maali, PhysicsObject Pelaaja)
389        {
390            if (keratytPallot == 11)
391            {
392                MessageDisplay.Add("LOISTAVAA");
393                kenttaNro++;
394                SeuraavaKentta();
395            }
396
397            else if (keratytPallot < 11)
398            {
399                MessageDisplay.Add("Et ole viela valmis!!!");
400            }
401        }
402
403        void TormaaAmmukseen(PhysicsObject PelaajanAlus, PhysicsObject Ammus)
404        {
405            MessageDisplay.Add("Ai varo vähän!!!");
406            elamaLaskuri.Value -= 1;
407            Ammus.Destroy();
408        }
409
410        void TormaaPAmmukseen(PhysicsObject Hyokkaaja, PhysicsObject PAmmus)
411        {
412            MessageDisplay.Add("Ai varo vähän!!!");
413            TuhoLaskuri.Value += 1;
414            Hyokkaaja.Destroy();
415        }
416
417        void TormaaAsteroidiin(PhysicsObject PelaajanAlus, PhysicsObject Asteroidi)
418        {
419            Pelaaja.Destroy();
420            SeuraavaKentta();
421        }
422       
423}
Note: See TracBrowser for help on using the repository browser.