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

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