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

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