source: 2011/31/OnniP/PerusPeli3/PerusPeli3/Peli.cs @ 2560

Revision 2560, 12.4 KB checked in by onpernu, 11 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 Peli : PhysicsGame
10{
11    List<Label> valikonKohdat;
12    Image Ohjuskuva = LoadImage("Ohjus");
13    Image MansikanKuva = LoadImage("Transparent Mansikka");
14    Image Pikselikatto = LoadImage("Pix");
15    Image PilviKuva = LoadImage("Pillvi");
16    Image Pilvikuva2 = LoadImage("Pillvi3");
17    GameObject Sydän1;
18    GameObject Sydän2;
19    GameObject Sydän3;
20    PhysicsObject Mansikka;
21    PhysicsObject Maila;
22
23    Vector nopeusVasemmalle = new Vector(-400, 0);
24    Vector nopeusOikealle = new Vector(400, 0);
25    Vector Pysähdys = new Vector(0, 0);
26    IntMeter Pisteet;
27    bool Onkopeliloppunut = false;
28    ScoreList topLista = new ScoreList(10, false, 0);
29
30
31    public override void Begin()
32
33   {
34        Valikko();
35       
36
37
38
39
40    }
41   
42   
43    void Aloitapeli()
44    {
45        ClearAll();
46        PhysicsObject vasenreuna = Level.CreateLeftBorder();
47        vasenreuna.X =-500;
48        vasenreuna.Y = 0;
49        PhysicsObject Oikeareuna = Level.CreateRightBorder();
50        Oikeareuna.X = -500;
51        Oikeareuna.Y = 0;
52
53        Level.CreateRightBorder();
54        laskuri();
55        Camera.ZoomToLevel();
56        PhysicsObject katto = PhysicsObject.CreateStaticObject(1300, 100);
57        katto.X = 0;
58        katto.Y = 500;
59        katto.IsVisible = false;
60        Add(katto);
61        katto.Color = Color.Cyan;
62        PhysicsObject lattia = PhysicsObject.CreateStaticObject(1300, 100);
63        lattia.Y = -400;
64        Add(lattia);
65        lattia.IsVisible = true;
66        luoMansikka();
67        lattia.Color = Color.DarkGray;
68
69        Level.BackgroundColor = Color.SkyBlue;
70        luoPilvi();
71
72        lattia.Tag = "lattia";
73        PhysicsObject oikeaSeinä = PhysicsObject.CreateStaticObject(300, 800);
74        oikeaSeinä.X = -600;
75        oikeaSeinä.IsVisible = true;
76        oikeaSeinä.Color = Color.Black;
77        Add(oikeaSeinä);
78        PhysicsObject vasenSeinä = PhysicsObject.CreateStaticObject(300, 800);
79        vasenSeinä.X = 600;
80        vasenSeinä.IsVisible = true;
81        vasenSeinä.Color = Color.Black;
82        Add(vasenSeinä);
83        Sydän1 = new GameObject(30, 30);
84        Sydän1.Shape = Shape.Heart;
85        Sydän1.Color = Color.Pink;
86        Sydän1.X = 300;
87        Sydän1.Y = -330;
88        Add(Sydän1);
89        Sydän2 = new GameObject(30, 30);
90        Sydän2.Shape = Shape.Heart;
91        Sydän2.Color = Color.Pink;
92        Sydän2.X = 350;
93        Sydän2.Y = -330;
94        Add(Sydän2);
95        Sydän3 = new GameObject(30, 30);
96        Sydän3.Shape = Shape.Heart;
97        Sydän3.Color = Color.Pink;
98        Sydän3.X = 400;
99        Sydän3.Y = -330;
100        Add(Sydän3);
101
102        Maila = PhysicsObject.CreateStaticObject(80, 20);
103        Maila.Color = Color.Black;
104        Add(Maila);
105        Maila.Y = (-200);
106        Asetaohjaimet();
107        Maila.Tag = "maila";
108        LisaaLaskuri();
109   
110   
111   
112    }
113
114    void Valikko()
115    { 
116   
117         ClearAll();
118
119        valikonKohdat = new List<Label>();
120
121        Label kohta1 = new Label("Aloita uusi peli");
122        kohta1.Position = new Vector(0, 40);
123        valikonKohdat.Add(kohta1);
124
125        Label kohta2 = new Label("Lopeta");
126        kohta2.Position = new Vector(0, -40);
127        valikonKohdat.Add(kohta2);
128
129        foreach (Label valikonKohta in valikonKohdat)
130        {
131            Add(valikonKohta);
132        }
133
134        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, Aloitapeli , null);
135        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
136       
137        Mouse.IsCursorVisible = true;
138        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
139        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
140        Level.Background.CreateGradient(Color.Black, Color.Red);
141        GameObject Rikselikatto = new GameObject(500, 500);
142        Rikselikatto.X = -400;
143        Rikselikatto.Image = Pikselikatto;
144        Rikselikatto.Y = 275;
145        Add(Rikselikatto);
146        GameObject Hikselikatto = new GameObject(500, 500);
147        Hikselikatto.X = 100;
148        Hikselikatto.Image = Pikselikatto;
149        Hikselikatto.Y = 200;
150        Add(Hikselikatto);
151        GameObject Mikselikatto = new GameObject(500, 500);
152        Mikselikatto.X = 100;
153        Mikselikatto.Image = Pikselikatto;
154        Mikselikatto.Y = 300;
155        Add(Mikselikatto);
156        GameObject Sikselikatto = new GameObject(500, 500);
157        Sikselikatto.X = 100;
158        Sikselikatto.Image = Pikselikatto;
159        Sikselikatto.Y = 250;
160        Add(Sikselikatto);
161        GameObject Nikselikatto = new GameObject(500, 500);
162        Nikselikatto.X = 100;
163        Nikselikatto.Image = Pikselikatto;
164        Nikselikatto.Y = 225;
165        Add(Nikselikatto);
166        GameObject Vikselikatto = new GameObject(500, 500);
167        Vikselikatto.X = 100;
168        Vikselikatto.Image = Pikselikatto;
169        Vikselikatto.Y = 275;
170        Add(Vikselikatto);
171        GameObject Zikselikatto = new GameObject(500, 500);
172        Zikselikatto.X = 600;
173        Zikselikatto.Image = Pikselikatto;
174        Zikselikatto.Y = 200;
175        Add(Zikselikatto);
176        GameObject Qikselikatto = new GameObject(500, 500);
177        Qikselikatto.X = 600;
178        Qikselikatto.Image = Pikselikatto;
179        Qikselikatto.Y = 300;
180        Add(Qikselikatto);
181        GameObject Fikselikatto = new GameObject(500, 500);
182        Fikselikatto.X = 600;
183        Fikselikatto.Image = Pikselikatto;
184        Fikselikatto.Y = 250;
185        Add(Fikselikatto);
186        GameObject Gikselikatto = new GameObject(500, 500);
187        Gikselikatto.X = 600;
188        Gikselikatto.Image = Pikselikatto;
189        Gikselikatto.Y = 225;
190        Add(Gikselikatto);
191        GameObject Tikselikatto = new GameObject(500, 500);
192        Tikselikatto.X = 600;
193        Tikselikatto.Image = Pikselikatto;
194        Tikselikatto.Y = 275;
195        Add(Tikselikatto); 
196        timer2();
197
198       
199       
200
201    }
202
203
204   
205    void ValikossaLiikkuminen(AnalogState hiirenTila)
206    {
207        foreach (Label kohta in valikonKohdat)
208        {
209            if (Mouse.IsCursorOn(kohta))
210            {
211                kohta.TextColor = Color.Red;
212            }
213            else
214            {
215                kohta.TextColor = Color.Lime;
216            }
217
218        }
219    }
220
221   
222   
223   
224   
225    void luoMansikka()
226    {
227        Mansikka = new PhysicsObject(80, 90);
228        Mansikka.Image = MansikanKuva;
229        Mansikka.X = RandomGen.NextDouble(-500, 500);
230        Mansikka.Y = 300;
231        Add(Mansikka);
232        Vector impulssi = new Vector(0, -200);
233        Mansikka.Hit(impulssi);
234        Mansikka.Tag = "Mansikka";
235        AddCollisionHandler(Mansikka, MansikkaMaassa);
236
237
238
239
240
241    }
242    void luoPilvi()
243    {
244        GameObject Pilvi = new GameObject(800, 400);
245        Pilvi.Image = PilviKuva;
246        Pilvi.Y = 200;
247        Pilvi.X = 300;
248        Add(Pilvi);
249        Pilvi.IsVisible = true;
250
251        GameObject Pilvi3 = new GameObject(800, 400);
252        Pilvi3.Image = Pilvikuva2;
253        Add(Pilvi3);
254        Pilvi3.X = -400;
255        Pilvi3.Y = 300;
256
257    }
258    void MansikkaMaassa(PhysicsObject tormaaja, PhysicsObject Kohde)
259    {
260        if (Kohde.Tag == "lattia")
261        {
262            Explosion rajahdys = new Explosion(100);
263            rajahdys.Position = tormaaja.Position;
264            Add(rajahdys);
265            tormaaja.Destroy();
266            luoMansikka();
267            Sydänkato();
268
269
270
271        }
272
273
274
275        if (Kohde.Tag == "maila")
276        {
277            Explosion rajahdys2 = new Explosion(100);
278            rajahdys2.Position = tormaaja.Position;
279            Add(rajahdys2);
280            tormaaja.Destroy();
281            luoMansikka();
282            Sydänkato();
283
284            if (Kohde.Tag == "ohjus")
285            {
286                Explosion rajahdys3 = new Explosion(100);
287                rajahdys3.Position = tormaaja.Position;
288                Add(rajahdys3);
289                tormaaja.Destroy();
290                luoMansikka();
291                Sydänkato();
292
293
294
295            }
296        }
297    }
298
299    void Asetaohjaimet()
300    {
301        Keyboard.Listen(Key.Left, ButtonState.Down, Asetanopeus, "Liiku Vasemmalle", Maila, nopeusVasemmalle);
302        Keyboard.Listen(Key.Right, ButtonState.Down, Asetanopeus, "Liiku Oikealle", Maila, nopeusOikealle);
303        Keyboard.Listen(Key.Right, ButtonState.Released, Asetanopeus, "Pysähdys", Maila, Pysähdys);
304        Keyboard.Listen(Key.Left, ButtonState.Released, Asetanopeus, "Pysähdys", Maila, Pysähdys);
305        Keyboard.Listen(Key.Space, ButtonState.Pressed, ohjus, "Ammu Ohjus");
306        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
307    }
308
309
310
311
312    void Asetanopeus(PhysicsObject Maila, Vector nopeus)
313    {
314
315        Maila.Velocity = nopeus;
316
317
318
319    }
320
321
322
323    void ohjus()
324    {
325        PhysicsObject ohjus = new PhysicsObject(30, 90);
326        ohjus.Image = Ohjuskuva;
327        ohjus.Y = Maila.Y + (30);
328        ohjus.X = Maila.X;
329        ohjus.IgnoresCollisionResponse = true;
330        Add(ohjus);
331        ohjus.Tag = "ohjus";
332        ohjus.CanRotate = false;
333        AddCollisionHandler(ohjus, Ohjusosuma);
334        Vector Ylöspäin = new Vector(0, 300);
335        ohjus.Hit(Ylöspäin);
336        ohjus.MaximumLifetime = new TimeSpan(0, 0, 3);
337
338
339    }
340
341    void laskuri()
342    {
343        Timer ajastin = new Timer();
344        ajastin.Interval = RandomGen.NextDouble(0.4, 1);
345        ajastin.Timeout += luoMansikka;
346        ajastin.Start();
347
348
349
350    }
351
352    void Sydänkato()
353    {
354        if (!Sydän1.IsDestroyed)
355        {
356            Sydän1.Destroy();
357            return;
358        }
359
360
361
362        if (!Sydän2.IsDestroyed)
363        {
364            Sydän2.Destroy();
365            return;
366        }
367
368
369        if (!Sydän3.IsDestroyed)
370        {
371            Sydän3.Destroy();
372
373        }
374
375        else if (Sydän3.IsDestroyed)
376        {
377            if (!Onkopeliloppunut)
378            Lopetapeli();
379
380
381        }
382
383
384
385    }
386
387
388
389    void Ohjusosuma(PhysicsObject tormaaja, PhysicsObject Kohde)
390    {
391        if (Kohde.Tag == "Mansikka")
392        {
393            Explosion rajahdys = new Explosion(100);
394            rajahdys.Position = tormaaja.Position;
395            rajahdys.Force = 0;
396            Add(rajahdys);
397            tormaaja.Destroy();
398            Kohde.Destroy();
399            Pisteet.Value += 1;
400
401
402        }
403    }
404
405    IntMeter pistelaskuri(double x, double y)
406    {
407        IntMeter laskuri = new IntMeter(0);
408        laskuri.MaxValue = 1000;
409        Label naytto = new Label();
410        naytto.BindTo(laskuri);
411        naytto.X = x;
412        naytto.Y = y;
413        naytto.TextColor = Color.Black;
414        naytto.BorderColor = Level.BackgroundColor;
415        naytto.Color = Level.BackgroundColor
416    ;
417        Add(naytto);
418
419        return laskuri;
420    }
421
422
423    void LisaaLaskuri()
424    {
425        Pisteet = pistelaskuri(550, 400);
426
427
428
429
430
431
432    }
433
434    void TallennaPisteet(Window sender)
435    {
436
437        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
438    }
439
440
441
442
443
444
445    void Lopetapeli()
446    {
447        Onkopeliloppunut = true;
448        if (DataStorage.Exists("pisteet.xml"))
449            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
450        HighScoreWindow topIkkuna = new HighScoreWindow("Pelin nimi tai jotain",
451                             "Parhaat pisteet",
452                             "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:",
453                             topLista, Pisteet);
454        topIkkuna.Closed += TallennaPisteet;
455        topIkkuna.OKButton.Clicked += new Action(Begin);
456       
457     
458        Add(topIkkuna);
459
460     }
461
462
463    void timer2()
464
465    { 
466        Timer ajastin = new Timer();
467        ajastin.Interval = RandomGen.NextDouble(0.4, 1);
468        ajastin.Timeout += Mansikka2;
469        ajastin.Start();
470   
471   
472   
473   
474    }
475
476
477
478    void Mansikka2()
479
480{
481
482    PhysicsObject Mansikka = new PhysicsObject(100, 100);
483    Mansikka.Image = MansikanKuva;
484    Mansikka.X = RandomGen.NextDouble(-500, 500);
485    Mansikka.Y = 600;
486    Add(Mansikka);
487    Vector alas = new Vector(0, -200);
488    Mansikka.Hit(alas);
489
490
491
492}
493
494
495
496}
497
498
499
500
501
502
503
504
505
506
Note: See TracBrowser for help on using the repository browser.