source: 2012/26/FanniO/Sailtilyousink/Sailtilyousink/Sailtilyousink/Sailtilyousink.cs @ 3381

Revision 3381, 19.9 KB checked in by faamojal, 7 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 Sailtilyousink : PhysicsGame
10{
11    Image veneenKuva = LoadImage("vene");
12    Image veneenKuva2 = LoadImage("vene2");
13    Image kivenKuva = LoadImage("kivi");
14    Image kuusenKuva = LoadImage("kuusi");
15    Image renkaankuva = LoadImage("rengas");
16    Image verkonKuva = LoadImage("verkko");
17    Image arkunKuva = LoadImage("arkku");
18    Image matalankuva = LoadImage("matala");
19    Image Mveneenkuva = LoadImage("Mvene");
20    Image kalankuva = LoadImage("kala");
21    Image vasarankuva = LoadImage("vasara");
22
23    Vector nopeusoikea = new Vector(400, 0);
24    Vector nopeusvasen = new Vector(-400, 0);
25    Vector nopeusylos = new Vector(0, 400);
26    Vector nopeusalas = new Vector(0, -400);
27    Vector nopeussuora = new Vector(0, 0);
28
29
30    PhysicsObject vene1;
31    PhysicsObject vene2;
32    DoubleMeter elamamittari;
33    DoubleMeter elamamittari2;
34    PhysicsObject rengas;
35    PhysicsObject kivi;
36    PhysicsObject verkko;
37    PhysicsObject arkku;
38    PhysicsObject matala;
39    PhysicsObject Mvene;
40    PhysicsObject kala;
41    PhysicsObject vasara;
42    IntMeter pisteet;
43    IntMeter merimailit;
44    IntMeter loppupoint;
45    IntMeter loppupoint2;
46    IntMeter pisteet2;
47    IntMeter merimailit2;
48
49    bool tuplapeli = false;
50
51    ScoreList toplista = new ScoreList(5, false, 0);
52
53
54
55
56
57    public override void Begin()
58    {
59        if (DataStorage.Exists("point.xml"))
60            toplista = DataStorage.Load<ScoreList>(toplista, "point.xml");
61        IsMouseVisible = true;
62        alkuvalikko();
63
64        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
65
66    }
67
68    void alkuvalikko()
69    {
70        ClearAll();
71        MultiSelectWindow alkuvalikko = new MultiSelectWindow("Sail 'Til You Sink", "Aloita peli", "Kaksinpeli", "Lopeta");
72        Add(alkuvalikko);
73        alkuvalikko.ItemSelected += Painettiinvalikkonappia;
74        alkuvalikko.Color = Color.LightBlue;
75
76    }
77
78
79    void aloitapeli(bool kaksinpeli)
80    {
81        tuplapeli = kaksinpeli;
82
83        vene1 = purjeVene(0, 0,veneenKuva);
84        lisaakivia();
85        ajastin();
86        lisaarengas();
87        lisaamatala();
88        lisaaMvene();
89        LuoKentta();
90        lisaaPlaskin();
91        lisaaMlaskin();
92        asetaohjaimet();
93        lisaaEmittari();
94        if (kaksinpeli)
95        {
96            vene2 = purjeVene(0, 0,veneenKuva2);
97
98            asetaveneen2ohjaimet();
99
100            pisteet2 = new IntMeter(0);
101            Label pistenaytto2 = new Label();
102            pistenaytto2.X = -400;
103            pistenaytto2.Y = -200;
104            pistenaytto2.TextColor = Color.Blue;
105            pistenaytto2.Color = Color.Aqua;
106            pistenaytto2.Title = "Astridin Pisteet";
107            pistenaytto2.BindTo(pisteet2);
108            Add(pistenaytto2);
109
110            merimailit2 = new IntMeter(0);
111            merimailit2.MaxValue = 100;
112            merimailit2.UpperLimit += vene2.Destroy;
113            Label mailinaytto2 = new Label();
114            mailinaytto2.X = -400;
115            mailinaytto2.Y = -250;
116            mailinaytto2.TextColor = Color.DarkBlue;
117            mailinaytto2.Color = Color.Aqua;
118            mailinaytto2.Title = "Astridin NM";
119            mailinaytto2.BindTo(merimailit2);
120            Add(mailinaytto2);
121            elamamittari2 = new DoubleMeter(10);
122            elamamittari2.MaxValue = 10;
123            ProgressBar elamapalkki2 = new ProgressBar(150, 15);
124            elamapalkki2.BindTo(elamamittari2);
125            elamapalkki2.BarColor = Color.Green;
126            elamapalkki2.BorderColor = Color.Red;
127            elamapalkki2.Color = Color.Red;
128            elamapalkki2.X = Screen.Left + 150;
129            elamapalkki2.Y = Screen.Bottom + 200;
130            Add(elamapalkki2);
131            elamamittari2.LowerLimit += elamaloppui;
132        }
133    }
134
135    void Painettiinvalikkonappia(int valinta)
136    {
137        switch (valinta)
138        {
139            case 0:
140                aloitapeli(false);
141                break;
142
143            case 1:
144                aloitapeli(true);
145                break;
146            case 2:
147                Exit();
148                break;
149            default:
150                break;
151        }
152    }
153
154    PhysicsObject purjeVene(double x, double y, Image veneenvari )
155    {
156        PhysicsObject vene = new PhysicsObject(veneenvari);
157        vene.Width = 40;
158        vene.Height = 90;
159        vene.Velocity = new Vector(0, 0);
160        Add(vene);
161        AddCollisionHandler(vene, "hyvis", pistelisaa);
162        AddCollisionHandler(vene, "este", veneosuu);
163        AddCollisionHandler(vene, "Aarkku", pistelisaa);
164        AddCollisionHandler(vene, "pluselama", elamalisaa);
165        return (vene);
166
167    }
168
169    void LuoKentta()
170    {
171        Surface vasenreuna = Surface.CreateLeft(Level, 300, 100, 20);
172        vasenreuna.Color = Color.LightGreen;
173        vasenreuna.Tag = "este";
174        Add(vasenreuna);
175
176        Surface oikeareuna = Surface.CreateRight(Level, 300, 100, 20);
177        oikeareuna.Color = Color.LightGreen;
178        oikeareuna.Tag = "este";
179        Add(oikeareuna);
180
181        Level.BackgroundColor = Color.Aqua;
182
183
184
185    }
186
187    void lisaakivia()
188    {
189        kivi = PhysicsObject.CreateStaticObject(kivenKuva);
190        kivi.Y = 500;
191        kivi.X = RandomGen.NextDouble(Level.Left, Level.Right);
192        kivi.Velocity = new Vector(0, -100);
193        kivi.Tag = "este";
194        Add(kivi);
195    }
196    void ajastin()
197    {
198        Timer ajastin = new Timer();
199        ajastin.Interval = 3;
200        ajastin.Timeout += lisaakivia;
201        ajastin.Start();
202        Timer ajastin2 = new Timer();
203        ajastin2.Interval = 7;
204        ajastin2.Timeout += lisaarengas;
205        ajastin2.Start();
206        Timer ajastin3 = new Timer();
207        ajastin3.Interval = 4;
208        ajastin3.Timeout += lisaamaili;
209        ajastin3.Start();
210        Timer ajastin4 = new Timer();
211        ajastin4.Interval = 5;
212        ajastin4.Timeout += lisaaverkko;
213        ajastin4.Start();
214        Timer ajastin5 = new Timer();
215        ajastin5.Interval = 11;
216        ajastin5.Timeout += lisaaarkku;
217        ajastin5.Start();
218        Timer ajastin6 = new Timer();
219        ajastin6.Interval = 9.5;
220        ajastin6.Timeout += lisaamatala;
221        ajastin6.Start();
222        Timer ajastin7 = new Timer();
223        ajastin7.Interval = 13;
224        ajastin7.Timeout += lisaavasara;
225        ajastin7.Start();
226        Timer ajastin8 = new Timer();
227        ajastin8.Interval = 7;
228        ajastin8.Timeout += lisaakala;
229        ajastin8.Start();
230        Timer ajastin9 = new Timer();
231        ajastin9.Interval = 12;
232        ajastin9.Timeout += lisaaMvene;
233        ajastin9.Start();
234
235
236    }
237    void lisaarengas()
238    {
239        rengas = PhysicsObject.CreateStaticObject(renkaankuva);
240        rengas.Y = 500;
241        rengas.X = RandomGen.NextDouble(Level.Left, Level.Right);
242        rengas.Velocity = new Vector(0, -100);
243        rengas.Tag = "hyvis";
244        rengas.IgnoresCollisionResponse = true;
245        Add(rengas);
246
247    }
248    void lisaakala()
249    {
250        kala = PhysicsObject.CreateStaticObject(kalankuva);
251        kala.Y = 500;
252        kala.X = RandomGen.NextDouble(Level.Left, Level.Right);
253        kala.Velocity = new Vector(0, -100);
254        kala.Tag = "hyvis";
255        kala.IgnoresCollisionResponse = true;
256        Add(kala);
257
258    }
259    void lisaavasara()
260    {
261        vasara = PhysicsObject.CreateStaticObject(vasarankuva);
262        vasara.Y = 500;
263        vasara.X = RandomGen.NextDouble(Level.Left, Level.Right);
264        vasara.Velocity = new Vector(0, -100);
265        vasara.Tag = "pluselama";
266        vasara.IgnoresCollisionResponse = true;
267        Add(vasara);
268    }
269    void lisaaverkko()
270    {
271        verkko = PhysicsObject.CreateStaticObject(verkonKuva);
272        verkko.Y = 500;
273        verkko.X = RandomGen.NextDouble(Level.Left, Level.Right);
274        verkko.Velocity = new Vector(0, -100);
275        verkko.Tag = "este";
276        Add(verkko);
277    }
278    void lisaamatala()
279    {
280        matala = PhysicsObject.CreateStaticObject(matalankuva);
281        matala.Y = 500;
282        matala.X = RandomGen.NextDouble(Level.Left, Level.Right);
283        matala.Velocity = new Vector(0, -100);
284        matala.Tag = "este";
285        Add(matala);
286
287    }
288    void lisaaMvene()
289    {
290        Mvene = PhysicsObject.CreateStaticObject(Mveneenkuva);
291        Mvene.Y = RandomGen.NextDouble(0, Level.Top);
292        Mvene.X = Level.Left;
293        Mvene.Velocity = new Vector(200, -100);
294        Mvene.Tag = "este";
295        Add(Mvene);
296
297    }
298    void lisaaarkku()
299    {
300        arkku = PhysicsObject.CreateStaticObject(arkunKuva);
301        arkku.Y = 500;
302        arkku.X = RandomGen.NextDouble(Level.Left, Level.Right);
303        arkku.Velocity = new Vector(0, -100);
304        arkku.Tag = "Aarkku";
305        arkku.IgnoresCollisionResponse = true;
306        Add(arkku);
307    }
308    void pistelisaa(PhysicsObject vene, PhysicsObject rengas)
309    {
310        if (vene == vene1)
311        {
312            pisteet.Value += 10;
313        }
314        if (vene == vene2)
315        {
316            pisteet2.Value += 10;
317        }
318        rengas.Destroy();
319
320    }
321
322    void pistelisaaA(PhysicsObject vene, PhysicsObject arkku)
323    {
324        if (vene == vene1) pisteet.Value += 30;
325        if (vene == vene2) pisteet2.Value += 30;
326
327        arkku.Destroy();
328    }
329
330    void elamalisaa(PhysicsObject vene, PhysicsObject vasara)
331    {
332        if (vene == vene1)
333        {
334            elamamittari.Value += 1;
335
336        }
337        if (vene == vene2)
338        {
339            elamamittari2.Value += 1;
340        }
341        vasara.Destroy();
342
343    }
344
345    void lisaaPlaskin()
346    {
347        pisteet = new IntMeter(0);
348        Label pistenaytto = new Label();
349        pistenaytto.X = 400;
350        pistenaytto.Y = -200;
351        pistenaytto.TextColor = Color.Blue;
352        pistenaytto.Color = Color.Aqua;
353        pistenaytto.Title = "Augustan Pisteet";
354
355        pistenaytto.BindTo(pisteet);
356        Add(pistenaytto);
357    }
358
359    void lisaaMlaskin()
360    {
361        merimailit = new IntMeter(0);
362        merimailit.MaxValue = 100;
363        merimailit.UpperLimit += mailittaynna;
364        Label mailinaytto = new Label();
365        mailinaytto.X = 400;
366        mailinaytto.Y = -250;
367        mailinaytto.TextColor = Color.DarkBlue;
368        mailinaytto.Color = Color.Aqua;
369        mailinaytto.Title = "Augustan NM";
370
371
372        mailinaytto.BindTo(merimailit);
373        Add(mailinaytto);
374
375
376
377
378
379    }
380
381    void lisaaEmittari()
382    {
383
384        elamamittari = new DoubleMeter(10);
385        elamamittari.MaxValue = 10;
386        ProgressBar elamapalkki = new ProgressBar(150, 15);
387        elamapalkki.BindTo(elamamittari);
388        elamapalkki.BarColor = Color.Green;
389        elamapalkki.BorderColor = Color.Red;
390        elamapalkki.Color = Color.Red;
391        elamapalkki.X = Screen.Right - 150;
392        elamapalkki.Y = Screen.Bottom + 200;
393        Add(elamapalkki);
394        elamamittari.LowerLimit += elamaloppui;
395
396
397
398    }
399
400    void asetaohjaimet()
401    {
402        Keyboard.Listen(Key.Right, ButtonState.Down, asetanopeus, "pelaaja, liikuta venettä oikealle", vene1, nopeusoikea);
403        Keyboard.Listen(Key.Right, ButtonState.Released, asetanopeus, null, vene1, Vector.Zero);
404        Keyboard.Listen(Key.Left, ButtonState.Down, asetanopeus, "pelaaja, liikuta venettä oikealle", vene1, nopeusvasen);
405        Keyboard.Listen(Key.Left, ButtonState.Released, asetanopeus, null, vene1, Vector.Zero);
406        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
407        Keyboard.Listen(Key.Up, ButtonState.Down, asetanopeus, "pelaaja, liikuta venettä ylös", vene1, nopeusylos);
408        Keyboard.Listen(Key.Up, ButtonState.Released, asetanopeus, null, vene1, Vector.Zero);
409        Keyboard.Listen(Key.Down, ButtonState.Down, asetanopeus, "pelaaja, liikuta venettä alas", vene1, nopeusalas);
410        Keyboard.Listen(Key.Down, ButtonState.Released, asetanopeus, null, vene1, Vector.Zero);
411        Keyboard.Listen(Key.A, ButtonState.Pressed, suovene, "pelaaja, suorista vene", vene1);
412
413    }
414    void asetaveneen2ohjaimet()
415    {
416        Keyboard.Listen(Key.NumPad6, ButtonState.Down, asetanopeus, "pelaaja2, liikuta venettä oikealle", vene2, nopeusoikea);
417        Keyboard.Listen(Key.NumPad6, ButtonState.Released, asetanopeus, null, vene2, Vector.Zero);
418        Keyboard.Listen(Key.NumPad4, ButtonState.Down, asetanopeus, "pelaaja2, liikuta venettä oikealle", vene2, nopeusvasen);
419        Keyboard.Listen(Key.NumPad4, ButtonState.Released, asetanopeus, null, vene2, Vector.Zero);
420        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
421        Keyboard.Listen(Key.NumPad8, ButtonState.Down, asetanopeus, "pelaaja2, liikuta venettä ylös", vene2, nopeusylos);
422        Keyboard.Listen(Key.NumPad8, ButtonState.Released, asetanopeus, null, vene2, Vector.Zero);
423        Keyboard.Listen(Key.NumPad2, ButtonState.Down, asetanopeus, "pelaaja2, liikuta venettä alas", vene2, nopeusalas);
424        Keyboard.Listen(Key.NumPad2, ButtonState.Released, asetanopeus, null, vene2, Vector.Zero);
425        Keyboard.Listen(Key.NumPad5, ButtonState.Pressed, suovene, "pelaaja2, suorista vene", vene2);
426
427    }
428    void suovene(PhysicsObject vene)
429    {
430        vene.Angle = Angle.Zero;
431        vene.AngularVelocity = 0;
432    }
433    void asetanopeus(PhysicsObject vene, Vector nopeus)
434    {
435        if ((nopeus.Y < 0) && (vene.Bottom < Level.Bottom))
436        {
437            vene.Velocity = Vector.Zero;
438            return;
439        }
440
441
442        if ((nopeus.Y > 0) && (vene.Top > Level.Top))
443        {
444            vene.Velocity = Vector.Zero;
445            return;
446        }
447        vene.Velocity = nopeus;
448
449
450    }
451
452    void elamaloppui()
453    {
454
455        MessageDisplay.Add("Veneesi upposi!");
456        if (elamamittari.Value == 0)
457        {
458
459            ClearAll();
460            naytavalikko();
461        }
462        if (elamamittari2 != null)
463        {
464            if (elamamittari2.Value == 0)
465            {
466                ClearAll();
467                naytavalikko();
468            }
469        }
470    }
471    void veneosuu(PhysicsObject vene, PhysicsObject kivi)
472    {
473        if (vene == vene1)
474            elamamittari.Value -= 1;
475        if (vene == vene2)
476            elamamittari2.Value -= 1;
477
478    }
479
480    void lisaamaili()
481    {
482        merimailit.Value += 1;
483        if (merimailit2 != null) merimailit2.Value += 1;
484
485    }
486    void mailittaynna()
487    {
488        MessageDisplay.Add("Onnittelut! Purjehdit regatan loppuun!");
489        naytavalikko();
490
491
492    }
493
494    void naytavalikko()
495    {
496        MultiSelectWindow loppuvalikko = new MultiSelectWindow("Sail 'Til You Sink", "Alkuvalikko", "Parhaat pisteet", "Lopeta peli", "Loppupisteet");
497        Add(loppuvalikko);
498        loppuvalikko.ItemSelected += painettiinnuppia;
499        loppuvalikko.Color = Color.Green;
500
501
502    }
503    void painettiinnuppia(int valinta)
504    {
505        switch (valinta)
506        {
507            case 0:
508                alkuvalikko();
509
510
511                break;
512            case 1:
513                HighScoreWindow topikkuna = new HighScoreWindow("Top 5-lista",
514                    "Onnea, Pääsit parhaiden purjehtijoiden joukkoon loppupisteillä %p! Syötä nimesi:",
515                     toplista, merimailit.Value * 10 + pisteet.Value);
516                topikkuna.Closed += tallennapisteet;
517                Add(topikkuna);
518
519                break;
520            case 2:
521                Exit();
522                break;
523            case 3:
524               
525                    Label mailit = new Label();
526                    mailit.X = 0;
527                    mailit.Y = 300;
528                    mailit.TextColor = Color.Blue;
529                    mailit.Title = "Augustan merimalit yhteensä";
530                    Add(mailit);
531
532                    mailit.BindTo(merimailit);
533
534                    Label pointit = new Label();
535                    pointit.X = 0;
536                    pointit.Y = 200;
537                    pointit.TextColor = Color.Blue;
538                    pointit.Title = "Augustan pisteet yhteensä";
539                    Add(pointit);
540                    pointit.BindTo(pisteet);
541
542                    loppupoint = new IntMeter(0);
543                    loppupoint.Value = merimailit.Value * 10 + pisteet.Value;
544                    Label Lopulliset = new Label();
545                    Lopulliset.X = 0;
546                    Lopulliset.Y = 100;
547                    Lopulliset.TextColor = Color.Blue;
548                    Lopulliset.Title = "Augustan loppupisteet yhteensä";
549                    Add(Lopulliset);
550                    Lopulliset.BindTo(loppupoint);
551
552                    MultiSelectWindow loppuPisteetvalikko = new MultiSelectWindow("Sail 'Til You Sink", "Lopeta", "Loppuvalikko");
553                    Add(loppuPisteetvalikko);
554                    loppuPisteetvalikko.ItemSelected += painettiinvalikonnapikkaa;
555                    loppuPisteetvalikko.Color = Color.DarkBlue;
556
557               
558
559                if(tuplapeli==true)
560                {
561
562                    Label mailit2 = new Label();
563                    mailit2.X = 0;
564                    mailit2.Y = 350;
565                    mailit2.TextColor = Color.Red;
566                    mailit2.Title = "Astridin merimalit yhteensä";
567                    Add(mailit2);
568
569                    mailit2.BindTo(merimailit2);
570
571                    Label pointit2 = new Label();
572                    pointit2.X = 0;
573                    pointit2.Y = 250;
574                    pointit2.TextColor = Color.Red;
575                    pointit2.Title = "Astridin pisteet yhteensä";
576                    Add(pointit2);
577                    pointit2.BindTo(pisteet2);
578
579                    loppupoint2 = new IntMeter(0);
580                    loppupoint2.Value = merimailit2.Value * 10 + pisteet2.Value;
581                    Label Lopulliset2 = new Label();
582                    Lopulliset2.X = 0;
583                    Lopulliset2.Y = 150;
584                    Lopulliset2.TextColor = Color.Red;
585                    Lopulliset2.Title = "Astridin loppupisteet yhteensä";
586                    Add(Lopulliset2);
587                    Lopulliset2.BindTo(loppupoint2);
588                    if (pisteet2.Value > pisteet.Value)
589                    {
590                        Label astridvoitti = new Label();
591                        astridvoitti.X = 200;
592                        astridvoitti.Y = 200;
593                        astridvoitti.Title="Astrid voitti!";
594                        Add(astridvoitti);
595                    }
596
597                    MultiSelectWindow loppuPisteetvalikko2 = new MultiSelectWindow("Sail 'Til You Sink", "Lopeta", "Loppuvalikko");
598                    Add(loppuPisteetvalikko2);
599                    loppuPisteetvalikko2.ItemSelected += painettiinvalikonnapikkaa;
600                    loppuPisteetvalikko2.Color = Color.DarkBlue;
601                }
602
603                break;
604            default:
605                break;
606        }
607
608    }
609    void painettiinvalikonnapikkaa(int valinta)
610    {
611        switch (valinta)
612        {
613            case 0:
614                Exit();
615                break;
616            case 1:
617                ClearAll();
618                naytavalikko();
619                break;
620
621        }
622    }
623    void tallennapisteet(Window Sender)
624    {
625        DataStorage.Save<ScoreList>(toplista, "point.xml");
626        MultiSelectWindow topvalikko = new MultiSelectWindow("Sail 'Til You Sink", "Lopeta");
627        Add(topvalikko);
628        topvalikko.ItemSelected += Painettiinvalikkonnuppua;
629        topvalikko.Color = Color.Blue;
630
631
632    }
633    void Painettiinvalikkonnuppua(int valinta)
634    {
635        switch (valinta)
636        {
637            case 0:
638                Exit();
639                break;
640
641        }
642    }
643
644}
Note: See TracBrowser for help on using the repository browser.