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

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