source: 2012/26/AleksanteriV/Polla ja Rosvo/Poliisi ja Rosvo/Poliisi ja Rosvo/Poliisi ja Rosvo/Poliisi_ja_Rosvo.cs @ 3699

Revision 3699, 20.3 KB checked in by alvirmas, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Poliisi_ja_Rosvo : PhysicsGame
10{
11    PhysicsObject pelaaja;
12    PhysicsObject pelaaja2;
13    PhysicsObject pelaaja3;
14    PhysicsObject pelaaja4;
15    PhysicsObject pallo;
16    PhysicsObject ukkeli;
17    Timer ajastin;
18    IntMeter pisteLaskuri;
19    Label pisteNaytto;
20    int pelaajia;
21    int pelaajienMaara;
22
23    public override void Begin()
24    {
25        ClearAll();
26        MediaPlayer.Play("trolo");
27        Camera.ZoomFactor = 1.0;
28        IsFullScreen = true;
29
30        PelaajienMaaranValinta();
31    }
32
33    void PelaajienMaaranValinta()
34    {
35        MultiSelectWindow valikko1 = new MultiSelectWindow(" valitse pelaajien määrä", "2p.", "3p.", "4p.");
36        valikko1.ItemSelected += delegate(int valinta)
37        {
38            pelaajienMaara = valinta + 2; // valinta on 0 (2 pelaajaa), 1 (3 pelaajaa) tai 2 (4 pelaajaa)
39            KentanValinta();
40        };
41
42        Level.Width = Screen.Width;
43        Level.Height = Screen.Height;
44        valikko1.Color = Color.White;
45        Level.Background.Image = LoadImage("taustakuva");
46        Level.Background.FitToLevel();
47       
48
49        Add(valikko1);
50    }
51
52    void KentanValinta()
53    {
54        MultiSelectWindow valikko;
55        if (pelaajienMaara == 2)
56        {
57            valikko = new MultiSelectWindow("2 pelaajaa", "Kenttä 1", "Kenttä 2", "Kenttä 3", "Kenttä 4", "Kenttä 5");
58            valikko.ItemSelected += delegate(int valinta)
59            {
60                switch (valinta)
61                {
62                    case 0:
63                        AloitaPeli("kentta10");
64                        break;
65                    case 1:
66                        AloitaPeli("kentta4");
67                        break;
68                    case 2:
69                        AloitaPeli("kentta2");
70                        break;
71                    case 3:
72                        AloitaPeli("Kenttä");
73                        break;
74                    case 4:
75                        AloitaPeli("kentta6");
76                        break;
77                   
78
79                }
80            };
81            valikko.Color = Color.Green;
82            Level.BackgroundColor = Color.Black;
83            Add(valikko);
84        }
85
86        if (pelaajienMaara == 3)
87        {
88            valikko = new MultiSelectWindow("3 pelaajaa", "Kenttä 1", "Kenttä 2", "Kenttä 3", "Kenttä 4", "Kenttä 5");
89            valikko.ItemSelected += delegate(int valinta)
90            {
91                switch (valinta)
92                {
93                    case 0:
94                        AloitaPeli("kentta8");
95                        break;
96                    case 1:
97                        AloitaPeli("kentta12");
98                        break;
99                    case 2:
100                        AloitaPeli("kentta13");
101                        break;
102                    case 3:
103                        AloitaPeli("kentta3");
104                        break;
105                    case 4:
106                        AloitaPeli("kentta9");
107                        break;
108                }
109
110            };
111            valikko.Color = Color.Green;
112            Level.BackgroundColor = Color.Black;
113            Add(valikko);
114        }
115
116        if (pelaajienMaara == 4)
117        {
118            valikko = new MultiSelectWindow("4 pelaajaa", "Kenttä 1", "Kenttä 2", "Kenttä 3", "kentta 4");
119            valikko.ItemSelected += delegate(int valinta)
120            {
121                switch (valinta)
122                {
123                    case 0:
124                        AloitaPeli("kentta5");
125                        break;
126                    case 1:
127                        AloitaPeli("kentta7");
128                        break;
129                    case 2:
130                        AloitaPeli("kentta11");
131                        break;
132                    case 3:
133                        AloitaPeli("jalkapalloKentta");
134                        break;
135                }
136
137            };
138            valikko.Color = Color.Green;
139            Level.BackgroundColor = Color.Black;
140            Add(valikko);
141        }
142    }
143
144    void AloitaPeli(string kentanNimi)
145    {
146        luokenttä(kentanNimi);
147        lisaaohjaimet();
148        Camera.ZoomToLevel();
149        Level.CreateBorders();
150        LuoPistelaskuri();
151
152
153        MediaPlayer.Play("the benny hill show theme song");
154
155        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
156        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
157        Keyboard.Listen(Key.Space, ButtonState.Pressed, Begin, "aloita alusta");
158        //Image taustaKuva = LoadImage("moi");
159        Level.BackgroundColor = Color.DarkRed;
160        Level.Background.Image = LoadImage("moi");
161        Level.Background.ScaleToLevelFull();
162    }
163
164    void luokenttä(string kentanNimi)
165    {
166        pelaajia = 0;
167
168        ColorTileMap kentta = ColorTileMap.FromLevelAsset(kentanNimi);
169        kentta.SetTileMethod(Color.Black, LuoPalikka);
170        kentta.SetTileMethod(Color.Red, Luopelaaja);
171        kentta.SetTileMethod(new Color(0, 255, 0), Luopelaaja2);
172        kentta.SetTileMethod(Color.White, Luopelaaja3);
173        kentta.SetTileMethod(Color.Blue, Luopelaaja4);
174        kentta.SetTileMethod(Color.Gray, LuoHarmaaPalikka);
175        kentta.SetTileMethod(new Color(0, 255, 255), Luopallo);
176        kentta.SetTileMethod(new Color(255, 255, 0), LuoPallonurmiPalikka);
177        kentta.SetTileMethod(new Color(255, 0, 220), LuomaaliPalikka);
178        kentta.SetTileMethod(new Color(255, 106, 0), LuoOranssiPalikka);
179        kentta.SetTileMethod(new Color(182, 255, 0), LuoHarmaatextPalikka);
180        kentta.SetTileMethod(new Color(186, 255, 0), LuoHarmaatext2Palikka);
181        kentta.SetTileMethod(new Color(200, 255, 255), LuoHarmaatext3Palikka);
182        kentta.SetTileMethod(new Color(91, 255, 173), LuoHarmaatext4Palikka);
183        kentta.SetTileMethod(new Color(58, 255, 163), LuoHarmaatext5Palikka);
184        kentta.SetTileMethod(new Color(178, 0, 255), Luoukkeli);
185        kentta.Execute(40, 40);
186
187        //3AFFA3 = 58, 255, 163
188        // oranssi (255, 106, 0)
189        //vaalean vihreä (182, 255, 0)
190        ajastin = new Timer();
191        ajastin.Interval = 1;
192        ajastin.Timeout += delegate { pisteLaskuri.Value++; };
193
194        ajastin.Start();
195
196    }
197    void LuoPistelaskuri()
198    {
199        pisteLaskuri = new IntMeter(0);
200
201        pisteNaytto = new Label();
202        pisteNaytto.X = Screen.Left + 100;
203        pisteNaytto.Y = Screen.Top - 100;
204        pisteNaytto.TextColor = Color.Yellow;
205        pisteNaytto.Color = Color.Purple;
206
207        pisteNaytto.BindTo(pisteLaskuri);
208        Add(pisteNaytto);
209    }
210
211    void LuoHarmaatextPalikka(Vector paikka, double leveys, double korkeus)
212    {
213        LuoHarmaaPalikkaOikea(paikka, leveys, korkeus, "text");
214    }
215
216    void LuoHarmaatext3Palikka(Vector paikka, double leveys, double korkeus)
217    {
218        LuoHarmaaPalikkaOikea(paikka, leveys, korkeus, "text3");
219    }
220    void LuoHarmaatext4Palikka(Vector paikka, double leveys, double korkeus)
221    {
222        LuoHarmaaPalikkaOikea(paikka, leveys, korkeus, "text4");
223    }
224    void LuoHarmaatext5Palikka(Vector paikka, double leveys, double korkeus)
225    {
226        LuoHarmaaPalikkaOikea(paikka, leveys, korkeus, "text5");
227    }
228    void LuoHarmaaPalikkaOikea(Vector paikka, double leveys, double korkeus, string tag = "")
229    {
230        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
231        palikka.Position = paikka;
232        palikka.Color = Color.Gray;
233        palikka.Tag = tag;
234        palikka.IgnoresCollisionResponse = true;
235        Add(palikka);
236    }
237
238    void LuoHarmaatext2Palikka(Vector paikka, double leveys, double korkeus)
239    {
240        LuoHarmaaPalikkaOikea(paikka, leveys, korkeus, "text2");
241    }
242
243    void LuomaaliPalikka(Vector paikka, double leveys, double korkeus)
244    {
245        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
246        palikka.Position = paikka;
247        palikka.Color = Color.DarkGreen;
248        palikka.Tag = "maali";
249        palikka.IgnoresCollisionResponse = true;
250        Add(palikka);
251    }
252    void LuoHarmaaPalikka(Vector paikka, double leveys, double korkeus)
253    {
254        LuoHarmaaPalikkaOikea(paikka, leveys, korkeus);
255    }
256    void LuoOranssiPalikka(Vector paikka, double leveys, double korkeus)
257    {
258        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
259        palikka.Position = paikka;
260        palikka.Color = Color.Green;
261        palikka.IgnoresCollisionResponse = true;
262        Add(palikka);
263    }
264    void Luopallo(Vector paikka, double leveys, double korkeus)
265    {
266        pallo = new PhysicsObject(19, 19);
267        pallo.Position = paikka;
268        pallo.Shape = Shape.Circle;
269        pallo.Image = LoadImage("jalkapallo");
270
271        Add(pallo, 1);
272        AddCollisionHandler(pallo, "maali", naytamaalitexti);
273        AddCollisionHandler(pallo, "Rosvo", potkaisepalloa);
274        AddCollisionHandler(pallo, "Poliisi", potkaisepalloa);
275    }
276    void naytatexti(PhysicsObject text, PhysicsObject pelaaja)
277    {
278        MessageDisplay.Add("Jos ette jo huomannu lähes kaikki kentät on täysin turhia!! Onnea TÄN tekstin löydöstä! (ettikää lisää...)");
279    }
280    void naytatexti5(PhysicsObject text, PhysicsObject pelaaja)
281    {
282        MessageDisplay.Add("trololololololollololololllololoooo trololololoooo o o o o ooo!! (ettikää lisää...)(ettikää lisää...)(ettikää lisää...)");
283    }
284    void naytatexti4(PhysicsObject text4, PhysicsObject pelaaja)
285    {
286        MessageDisplay.Add("Jos ette jo huomannu mun löpinä on turhaa!! Onnea TÄN tekstin löydöstä! (ettikää lisää...)");
287    }
288    void naytatexti3(PhysicsObject text3, PhysicsObject pelaaja)
289    {
290        MessageDisplay.Add("Jos ette jo huomannu nää tekstit on aivan turhia!! Onnea TÄN tekstin löydöstä! (ettikää lisää...)");
291    }
292    void naytatexti2(PhysicsObject text2, PhysicsObject pelaaja)
293    {
294        MessageDisplay.Add("Jos ette jo huomannu jalkapallot lentää sitä potkastessa minne sattuu!! Onnea TÄN tekstin löydöstä! (ettikää lisää...)");
295    }
296    void naytamaalitexti(PhysicsObject pallo, PhysicsObject maali)
297    {
298        MessageDisplay.Add("Maali!!");
299    }
300
301    void LuoPallonurmiPalikka(Vector paikka, double leveys, double korkeus)
302    {
303
304
305        pallo = new PhysicsObject(19, 19);
306        pallo.Position = paikka;
307        pallo.Shape = Shape.Circle;
308        pallo.Image = LoadImage("jalkapallo");
309
310        Add(pallo, 1);
311        LuoOranssiPalikka(paikka, leveys, korkeus);
312        AddCollisionHandler(pallo, "maali", naytamaalitexti);
313        AddCollisionHandler(pallo, "Rosvo", potkaisepalloa);
314        AddCollisionHandler(pallo, "Poliisi", potkaisepalloa);
315    }
316    void LuoPalikka(Vector paikka, double leveys, double korkeus)
317    {
318        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
319        palikka.Position = paikka;
320        palikka.Image = LoadImage("seina2");
321        palikka.Tag = "palikka";
322        Add(palikka);
323    }
324    void Luoukkeli(Vector paikka, double leveys, double korkeus)
325    {
326        string ukkelirangen = RandomGen.SelectOne<string>("ukkeli", "ukkeli2", "ukkeli3", "ukkeli4", "ukkeli5", "");
327        if (ukkelirangen == "") { return; }
328        ukkeli = new PhysicsObject(25, 25);
329        ukkeli.Position = paikka;
330        ukkeli.Image = LoadImage(ukkelirangen);
331        ukkeli.Tag = "ukkeli";
332        Add(ukkeli);
333    }
334    //void Luoukkeli(Vector paikka, double leveys, double korkeus)
335    //{
336        //ukkeli = new PhysicsObject(25, 25);
337        //ukkeli.Position = paikka;
338        //ukkeli.Image = LoadImage("ukkeli");
339        //ukkeli.Tag = "ukkeli";
340        //Add(ukkeli);
341    //}
342    void Luopelaaja(Vector paikka, double leveys, double korkeus)
343    {
344        pelaaja = new PhysicsObject(25, 25);
345        pelaaja.Shape = Shape.Circle;
346        pelaaja.Position = paikka;
347        pelaaja.Image = LoadImage("Rosvo");
348        pelaaja.Tag = "Rosvo";
349        Add(pelaaja);
350        pelaajia++;
351
352        AddCollisionHandler(pelaaja, "text", naytatexti);
353        AddCollisionHandler(pelaaja, "text2", naytatexti2);
354        AddCollisionHandler(pelaaja, "text3", naytatexti3);
355        AddCollisionHandler(pelaaja, "text4", naytatexti4);
356        AddCollisionHandler(pelaaja, "text5", naytatexti5);
357        AddCollisionHandler(pelaaja, "palikka", PysaytaPelaaja);
358    }
359    void Luopelaaja2(Vector paikka, double leveys, double korkeus)
360    {
361        pelaaja2 = new PhysicsObject(25, 25);
362        pelaaja2.Position = paikka;
363        pelaaja2.Shape = Shape.Circle;
364        pelaaja2.Image = LoadImage("poliisi1");
365        Add(pelaaja2);
366        pelaaja2.Tag = "Poliisi";
367        pelaajia++;
368        AddCollisionHandler(pelaaja2, "palikka", PysaytaPelaaja);
369        AddCollisionHandler(pelaaja2, "Rosvo", aloitaalusta);
370        AddCollisionHandler(pelaaja2, "text", naytatexti);
371        AddCollisionHandler(pelaaja2, "text2", naytatexti2);
372        AddCollisionHandler(pelaaja2, "text3", naytatexti3);
373        AddCollisionHandler(pelaaja2, "text4", naytatexti4);
374        AddCollisionHandler(pelaaja2, "text5", naytatexti5);
375    }
376    void Luopelaaja3(Vector paikka, double leveys, double korkeus)
377    {
378        pelaaja3 = new PhysicsObject(25, 25);
379        pelaaja3.Position = paikka;
380        pelaaja3.Shape = Shape.Circle;
381        pelaaja3.Image = LoadImage("poliisi 2");
382        Add(pelaaja3);
383        pelaajia++;
384        pelaaja3.Tag = "Poliisi";
385        AddCollisionHandler(pelaaja3, "palikka", PysaytaPelaaja);
386        AddCollisionHandler(pelaaja3, "Rosvo", aloitaalusta);
387        AddCollisionHandler(pelaaja3, "text", naytatexti);
388        AddCollisionHandler(pelaaja3, "text2", naytatexti2);
389        AddCollisionHandler(pelaaja3, "text3", naytatexti3);
390        AddCollisionHandler(pelaaja3, "text4", naytatexti4);
391        AddCollisionHandler(pelaaja3, "text5", naytatexti5);
392    }
393    void Luopelaaja4(Vector paikka, double leveys, double korkeus)
394    {
395        pelaaja4 = new PhysicsObject(25, 25);
396        pelaaja4.Position = paikka;
397        pelaaja4.Shape = Shape.Circle;
398        pelaaja4.Image = LoadImage("poliisi 3");
399        Add(pelaaja4);
400        pelaajia++;
401        pelaaja4.Tag = "Poliisi";
402        AddCollisionHandler(pelaaja4, "palikka", PysaytaPelaaja);
403        AddCollisionHandler(pelaaja4, "Rosvo", aloitaalusta);
404        AddCollisionHandler(pelaaja4, "text", naytatexti);
405        AddCollisionHandler(pelaaja4, "text2", naytatexti2);
406        AddCollisionHandler(pelaaja4, "text3", naytatexti3);
407        AddCollisionHandler(pelaaja4, "text4", naytatexti4);
408        AddCollisionHandler(pelaaja4, "text5", naytatexti5);
409    }
410    void potkaisepalloa(PhysicsObject tormaaja, PhysicsObject kohde)
411    {
412        tormaaja.Hit(Vector.FromLengthAndAngle(300, kohde.Angle));
413    }
414    void aloitaalusta(PhysicsObject tormaaja, PhysicsObject kohde)
415    {
416        int pisteet = pisteLaskuri.Value;
417        Begin();
418
419        Label edellisetPisteet = new Label(pisteet.ToString());
420        edellisetPisteet.Left = pisteNaytto.Left;
421        edellisetPisteet.TextColor = Color.Black;
422        Add(edellisetPisteet);
423    }
424    void PysaytaPelaaja(PhysicsObject tormaaja, PhysicsObject kohde)
425    {
426        Timer.SingleShot(0.5, tormaaja.Stop);
427    }
428
429    void lisaaohjaimet()
430    {
431        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-200, 0));
432        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(200, 0));
433        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 200));
434        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -200));
435
436        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaajaX, null);
437        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaajaX, null);
438        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaajaY, null);
439        Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaPelaajaY, null);
440        //---------------------------------------------
441        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa2, null, new Vector(-205, 0));
442        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa2, null, new Vector(205, 0));
443        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa2, null, new Vector(0, 205));
444        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa2, null, new Vector(0, -205));
445
446        Keyboard.Listen(Key.A, ButtonState.Released, PysaytaPelaaja2X, null);
447        Keyboard.Listen(Key.D, ButtonState.Released, PysaytaPelaaja2X, null);
448        Keyboard.Listen(Key.W, ButtonState.Released, PysaytaPelaaja2Y, null);
449        Keyboard.Listen(Key.S, ButtonState.Released, PysaytaPelaaja2Y, null);
450        //----------------------------------------------------
451        if (pelaajienMaara > 2)
452        {
453            Keyboard.Listen(Key.V, ButtonState.Down, LiikutaPelaajaa3, null, new Vector(-200, 0));
454            Keyboard.Listen(Key.N, ButtonState.Down, LiikutaPelaajaa3, null, new Vector(200, 0));
455            Keyboard.Listen(Key.G, ButtonState.Down, LiikutaPelaajaa3, null, new Vector(0, 200));
456            Keyboard.Listen(Key.B, ButtonState.Down, LiikutaPelaajaa3, null, new Vector(0, -200));
457
458            Keyboard.Listen(Key.V, ButtonState.Released, PysaytaPelaaja3X, null);
459            Keyboard.Listen(Key.N, ButtonState.Released, PysaytaPelaaja3X, null);
460            Keyboard.Listen(Key.G, ButtonState.Released, PysaytaPelaaja3Y, null);
461            Keyboard.Listen(Key.B, ButtonState.Released, PysaytaPelaaja3Y, null);
462        }
463        //----------------------------------------------------------
464        if (pelaajienMaara > 3)
465        {
466            Keyboard.Listen(Key.NumPad4, ButtonState.Down, LiikutaPelaajaa4, null, new Vector(-200, 0));
467            Keyboard.Listen(Key.NumPad6, ButtonState.Down, LiikutaPelaajaa4, null, new Vector(200, 0));
468            Keyboard.Listen(Key.NumPad8, ButtonState.Down, LiikutaPelaajaa4, null, new Vector(0, 200));
469            Keyboard.Listen(Key.NumPad5, ButtonState.Down, LiikutaPelaajaa4, null, new Vector(0, -200));
470
471            Keyboard.Listen(Key.NumPad4, ButtonState.Released, PysaytaPelaaja4X, null);
472            Keyboard.Listen(Key.NumPad6, ButtonState.Released, PysaytaPelaaja4X, null);
473            Keyboard.Listen(Key.NumPad8, ButtonState.Released, PysaytaPelaaja4Y, null);
474            Keyboard.Listen(Key.NumPad5, ButtonState.Released, PysaytaPelaaja4Y, null);
475        }
476    }
477    void LiikutaPelaajaa(Vector liikuttaja)
478    {
479        if (pelaajia > 2)
480        {
481            liikuttaja = liikuttaja + Vector.FromLengthAndAngle(20, liikuttaja.Angle);
482        }
483        pelaaja.Move(liikuttaja);
484        pelaaja.Angle = liikuttaja.Angle + Angle.FromDegrees(90);
485    }
486    void PysaytaPelaajaX()
487    {
488        pelaaja.StopHorizontal();
489    }
490    void PysaytaPelaajaY()
491    {
492        pelaaja.StopVertical();
493    }
494    void LiikutaPelaajaa2(Vector liikuttaja)//-------------------------------------------
495    {
496        if (pelaajia > 2)
497        {
498            liikuttaja = liikuttaja + Vector.FromLengthAndAngle(-5, liikuttaja.Angle);
499        }
500        pelaaja2.Move(liikuttaja);
501        pelaaja2.Angle = liikuttaja.Angle + Angle.FromDegrees(90);
502    }
503    void PysaytaPelaaja2X()
504    {
505        pelaaja2.StopHorizontal();
506    }
507    void PysaytaPelaaja2Y()
508    {
509        pelaaja2.StopVertical();
510    }
511    void LiikutaPelaajaa3(Vector liikuttaja) //--------------------------------------
512    {
513        pelaaja3.Move(liikuttaja);
514        pelaaja3.Angle = liikuttaja.Angle + Angle.FromDegrees(90);
515    }
516    void PysaytaPelaaja3X()
517    {
518        pelaaja3.StopHorizontal();
519    }
520    void PysaytaPelaaja3Y()
521    {
522        pelaaja3.StopVertical();
523    }
524    void LiikutaPelaajaa4(Vector liikuttaja) // -----------------------------------------
525    {
526        pelaaja4.Move(liikuttaja);
527        pelaaja4.Angle = liikuttaja.Angle + Angle.FromDegrees(90);
528    }
529    void PysaytaPelaaja4X()
530    {
531        pelaaja4.StopHorizontal();
532    }
533    void PysaytaPelaaja4Y()
534    {
535        pelaaja4.StopVertical();
536    }
537
538
539
540
541}
542
Note: See TracBrowser for help on using the repository browser.