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

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