source: 2012/30/AnttiS/EksyksissäAvaruudessa/EksyksissäAvaruudessa/EksyksissäAvaruudessa/EksyksissäAvaruudessa.cs @ 3797

Revision 3797, 11.8 KB checked in by juiitamm, 9 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 EksyksissäAvaruudessa : PhysicsGame
10{
11    int kenttaNro = 1;
12    PhysicsObject Alus;
13    IntMeter pistelaskuri;
14    IntMeter elamaLaskuri;
15
16    EasyHighScore topLista = new EasyHighScore();
17
18    public override void Begin()
19    {
20        LuoAlkuValikko();
21               
22    }
23    void SeuraavaKentta()
24    {
25        int pisteet = 0;
26        int elamat = 3;
27
28        if (pistelaskuri != null)
29        {
30            pisteet = pistelaskuri.Value;
31            elamat = elamaLaskuri.Value;
32        }
33
34        ClearAll();
35        LuoAlus();
36        AsetaOhjaimet();
37        LuoTausta();
38        Luopistlaskuri();
39        LuoElamalaskuri();
40        LuoPistepallo();
41        luoisopistepallo();
42
43
44        pistelaskuri.Value = pisteet;
45        elamaLaskuri.Value = elamat;
46
47        if (kenttaNro == 1) SijoitaOliot1();
48        else if (kenttaNro == 2) SijoitaOliot2();
49        else if (kenttaNro == 3) SijoitaOliot3();
50        else if (kenttaNro == 4) SijoitaOliot4();
51        else if (kenttaNro == 5) SijoitaOliot5();
52        else if (kenttaNro == 6) ViimeinenKentta();
53        else if (kenttaNro == 7) luotoplista();
54        else Exit();
55
56        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
57    }
58
59    void LuoAlus()
60    {
61        Alus = new PhysicsObject(130, 40);
62        Alus.LinearDamping = 0.5;
63        Alus.CanRotate = false;
64        Alus.Image = LoadImage("avaruusalus");
65        Alus.X = -400;
66        Alus.Y = 0;
67        Alus.Restitution = 1.0;
68        Add(Alus);
69
70        AddCollisionHandler(Alus, "UFO", Kuole);
71        AddCollisionHandler(Alus, "pistepallo", KeraaPistepallo);
72        AddCollisionHandler(Alus, "isopistepallo", KeraaIsoPistepallo);
73    }
74    PhysicsObject LuoMaali(double x, double y)
75    {
76        PhysicsObject Maali = PhysicsObject.CreateStaticObject(169, 94);
77        Maali.Image = LoadImage("MAALI");
78        Add(Maali);
79        AddCollisionHandler(Alus, Maali, VaihdaKenttaa);
80        Maali.X = x;
81        Maali.Y = y;
82        return Maali;
83    }
84    void AsetaOhjaimet()
85    {
86
87        Keyboard.Listen(Key.Left, ButtonState.Down, KaannaAlusta, null, Angle.FromDegrees(1));
88        Keyboard.Listen(Key.Right, ButtonState.Down, KaannaAlusta, null, Angle.FromDegrees(-1));
89        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaAlusta, null, 2000.0);
90        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaAlusta, null, -2000.0);
91
92    }
93    void LiikutaAlusta(double nopeus)
94    {
95        Vector vektori = Vector.FromLengthAndAngle(nopeus, Alus.Angle);
96        Alus.Push(vektori);
97    }
98    void LuoTausta()
99    {
100        Level.CreateBorders(1.0, true);
101        Camera.ZoomToLevel();
102        Image taustaKuva = LoadImage("tausta");
103        Level.Background.Image = taustaKuva;
104        Level.Background.FitToLevel();
105    }
106    PhysicsObject LuoMaa(double x, double y)
107    {
108        PhysicsObject Maa = PhysicsObject.CreateStaticObject(207, 201);
109        Maa.Image = LoadImage("maa");
110        AddCollisionHandler(Alus, Maa, VaihdaKenttaa);
111        Maa.X = x;
112        Maa.Y = y;
113        Add(Maa);
114        return Maa;
115    }
116
117    void LuoPlaneetta1(double x, double y)
118    {
119        PhysicsObject planeetta = PhysicsObject.CreateStaticObject(90, 86);
120        Image planeetta1 = LoadImage("planeetta1");
121        planeetta.Image = planeetta1;
122        planeetta.X = x;
123        planeetta.Y = y;
124        planeetta.Restitution = 1.0;
125        Add(planeetta);
126    }
127    void KaannaAlusta(Angle kulma)
128    {
129        Alus.Angle += kulma;
130    }
131    void SijoitaOliot1()
132    {
133        LuoUfo(-200, -300, new Vector(150.0, -150.0));
134        LuoUfo(200, -300, new Vector(150.0, 150.0));
135        LuoPlaneetta1(-200, 50);
136        LuoPlaneetta1(-300, 200);
137        LuoPlaneetta1(-40, 120);
138        LuoPlaneetta1(200, 50);
139        LuoPlaneetta1(90, -200);
140        PhysicsObject maali = LuoMaali(200, -200);
141
142
143
144    }
145    void SijoitaOliot2()
146    {
147        LuoUfo(-200, 300, new Vector(-150.0, -150.0));
148        LuoUfo(200, 300, new Vector(150.0, 150.0));
149        LuoUfo(200, -300, new Vector(150.0, 150.0));
150        LuoPlaneetta1(200, 50);
151        LuoPlaneetta1(-300, 150);
152        LuoPlaneetta1(-40, -120);
153        LuoPlaneetta1(-200, -80);
154        LuoPlaneetta1(-90, 200);
155
156        PhysicsObject maali = LuoMaali(200, 200);
157
158    }
159    void SijoitaOliot3()
160    {
161        LuoUfo(-200, 300, new Vector(-150.0, -150.0));
162        LuoUfo(200, 300, new Vector(150.0, 150.0));
163        LuoUfo(200, -300, new Vector(150.0, 150.0));
164        LuoUfo(0, 0, new Vector(150.0, 150.0));
165        LuoPlaneetta1(200, 50);
166        LuoPlaneetta1(-300, 150);
167        LuoPlaneetta1(-40, -120);
168        LuoPlaneetta1(-200, -80);
169        LuoPlaneetta1(-90, 200);
170
171        PhysicsObject maali = LuoMaali(300, -100);
172
173
174    }
175    void SijoitaOliot4()
176    {
177        LuoUfo(-200, 300, new Vector(-150.0, -150.0));
178        LuoUfo(200, 300, new Vector(150.0, 150.0));
179        LuoUfo(200, -300, new Vector(150.0, 150.0));
180        LuoUfo(0, 0, new Vector(150.0, 150.0));
181        LuoPlaneetta1(400, -200);
182        LuoPlaneetta1(-300, 50);
183        LuoPlaneetta1(-40, 120);
184        LuoPlaneetta1(-200, -200);
185        LuoPlaneetta1(-175, 220);
186
187        PhysicsObject maali = LuoMaali(200, 200);
188
189    }
190
191    void SijoitaOliot5()
192    {
193        LuoUfo(300, 00, new Vector(-150.0, -150.0));
194        LuoUfo(200, 0, new Vector(150.0, 150.0));
195        LuoUfo(0, 0, new Vector(150.0, 150.0));
196        LuoUfo(0, 70, new Vector(150.0, 150.0));
197        LuoPlaneetta1(400, -200);
198        LuoPlaneetta1(-300, -80);
199
200        PhysicsObject maali = LuoMaali(200, 200);
201
202    }
203
204
205    void SijoitaOliot6()
206    {
207        LuoUfo(400, 00, new Vector(-150.0, -150.0));
208        LuoUfo(200, 0, new Vector(150.0, 150.0));
209        LuoUfo(0, 0, new Vector(150.0, 150.0));
210        LuoUfo(0, 70, new Vector(150.0, 150.0));
211        LuoPlaneetta1(-300, -80);
212
213        PhysicsObject maali = LuoMaali(-200, 200);
214
215    }
216
217    void ViimeinenKentta()
218    {
219        LuoUfo(-200, 300, new Vector(-150.0, -150.0));
220        LuoUfo(200, 300, new Vector(150.0, 150.0));
221        LuoUfo(200, -300, new Vector(150.0, 150.0));
222        LuoUfo(0, 0, new Vector(150.0, 150.0));
223        LuoUfo(-200, 400, new Vector(-150.0, -150.0));
224        LuoUfo(400, 400, new Vector(150.0, 150.0));
225        LuoUfo(-200, -300, new Vector(-150.0, -150.0));
226        LuoUfo(200, -300, new Vector(150.0, 150.0));
227        LuoUfo(400, -300, new Vector(150.0, 150.0));
228
229        LuoPlaneetta1(80, -400);
230        LuoPlaneetta1(-400, 100);
231
232        PhysicsObject Maa = LuoMaa(200, 200);
233
234    }
235
236
237    void LuoUfo(double x, double y, Vector suunta)
238    {
239        PhysicsObject Ufo = new PhysicsObject(123, 71);
240        Image ufo = LoadImage("ufo");
241        Ufo.CanRotate = false;
242        Ufo.Image = ufo;
243        Ufo.X = x;
244        Ufo.Y = y;
245        Ufo.Tag = "UFO";
246        Ufo.Restitution = 1.0;
247        Ufo.Mass = 1;
248        Vector impulssi = suunta;
249        Ufo.Hit(impulssi);
250        Add(Ufo);
251
252    }
253
254    void LuoElamalaskuri()
255    {
256        elamaLaskuri = new IntMeter(3);
257        elamaLaskuri.LowerLimit += new Action(pisteLaskuri_LowerLimit);
258
259        Label pisteNaytto = new Label();
260        pisteNaytto.X = Screen.Right - 100;
261        pisteNaytto.Y = Screen.Top - 100;
262        pisteNaytto.TextColor = Color.Blue;
263        pisteNaytto.Color = Color.Red;
264        pisteNaytto.BindTo(elamaLaskuri);
265        Add(pisteNaytto);
266
267        pisteNaytto.Title = "Elämät";
268    }
269
270    void pisteLaskuri_LowerLimit()
271    {
272        Alus.Destroy();
273        Widget kuva = new Widget(LoadImage("game over"));
274        kuva.Width = Screen.Width;
275        kuva.Height = Screen.Height;
276        Add(kuva);
277        luotoplista();
278    }
279    void luotoplista()
280{
281        topLista.EnterAndShow(pistelaskuri.Value);
282        topLista.HighScoreWindow.Closed += delegate { LuoAlkuValikko(); };
283        topLista.HighScoreWindow.Color = Color.Snow;
284       
285    }
286    void PelaajaTormasi(PhysicsObject tormaaja, PhysicsObject kohde)
287    {
288        MessageDisplay.Add("Pelaaja törmäsi!");
289    }
290
291    void Kuole(PhysicsObject tormaaja, PhysicsObject kohde)
292    {
293        elamaLaskuri.Value -= 1;
294    }
295    void VaihdaKenttaa(PhysicsObject olio, PhysicsObject maali)
296    {
297        kenttaNro++;
298        SeuraavaKentta();
299    }
300
301    void Luopistlaskuri()
302    {
303        pistelaskuri = new IntMeter(0);
304
305        Label pisteNaytto = new Label();
306        pisteNaytto.X = Screen.Left + 100;
307        pisteNaytto.Y = Screen.Top - 100;
308        pisteNaytto.TextColor = Color.Red;
309        pisteNaytto.Color = Color.Blue;
310
311        pisteNaytto.Title = "Pisteet";
312
313        pisteNaytto.BindTo(pistelaskuri);
314        Add(pisteNaytto);
315    }
316    void LuoPistepallo()
317    {
318        int i = 0;
319
320        while (i < 10)
321        {
322            PhysicsObject pistepallo = new PhysicsObject(20, 19);
323            pistepallo.Image = LoadImage("pistepallo");
324            pistepallo.Tag = "pistepallo";
325            pistepallo.X = RandomGen.NextDouble(Level.Left, Level.Right);
326            pistepallo.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
327            pistepallo.Restitution = 1.0;
328            pistepallo.Mass = 5;
329            Add(pistepallo);
330            i++;
331        }
332    }
333        void luoisopistepallo()
334        {
335            {
336                int l = 0;
337
338                while (l < 3)
339                {
340                    PhysicsObject isopistepallo = new PhysicsObject(44, 43);
341                    isopistepallo.Image = LoadImage("isopistepallo");
342                    isopistepallo.Tag = "isopistepallo";
343                    isopistepallo.X = RandomGen.NextDouble(Level.Left, Level.Right);
344                    isopistepallo.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
345                    isopistepallo.Restitution = 1.0;
346                    isopistepallo.Mass = 5;
347                    Add(isopistepallo);
348                    l++;
349                }
350            }
351        }
352        void KeraaIsoPistepallo(PhysicsObject Alus, PhysicsObject isopistepallo)
353        {
354            MessageDisplay.Add("Pelaaja törmäsi!");
355            pistelaskuri.Value += 30;
356            isopistepallo.Destroy();
357        }
358   
359    void KeraaPistepallo(PhysicsObject Alus, PhysicsObject pistepallo)
360    {
361        MessageDisplay.Add("Pelaaja törmäsi!");
362        pistelaskuri.Value += 10;
363        pistepallo.Destroy(); 
364    }
365    void PelaajaKuoli()
366    {
367        Alus.Destroy();
368        topLista.EnterAndShow(pistelaskuri.Value);
369        topLista.HighScoreWindow.Closed += delegate { Begin(); };
370    }
371    void LuoAlkuValikko()
372{
373    Camera.ZoomToLevel();
374    Image taustaKuva = LoadImage("tausta");
375    Level.Background.Image = taustaKuva;
376    Level.Background.FitToLevel();
377
378    MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Parhaat pisteet", "Lopeta");
379    alkuValikko.ItemSelected += PainettiinValikonNappia;
380    alkuValikko.Color = Color.Blue;
381
382Add(alkuValikko);
383}
384
385
386    void PainettiinValikonNappia(int valinta)
387    {
388        switch (valinta)
389        {
390            case 0:
391                pistelaskuri = null;
392                elamaLaskuri = null;
393                kenttaNro = 1;
394                SeuraavaKentta();
395                break;
396            case 1:
397                topLista.Show();
398                topLista.HighScoreWindow.Closed += delegate { LuoAlkuValikko(); };
399                topLista.HighScoreWindow.Color = Color.Snow;
400
401
402                break;
403            case 2:
404                Exit();
405                break;
406        }
407    }
408}
409
Note: See TracBrowser for help on using the repository browser.