source: 2012/24/ElinaN/Kuumailmapallolento/Kuumailmapallolento/Kuumailmapallolento/Kuumailmapallolento.cs @ 3094

Revision 3094, 7.4 KB checked in by juiitamm, 10 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 Kuumailmapallolento : PhysicsGame
10{
11    Image pallo = LoadImage("Kuumailmapallo");
12    Image[] talokuvat = LoadImages("kellotorni", "kerrostalo", "omakotitalo", "rivitalo", "kerrostalo", "omakotitalo", "rivitalo", "omakotitalo", "rivitalo");
13    //Image talokuva2 = LoadImage("kerrostalo");
14    //Image talokuva3 = LoadImage("omakotitalo");
15    //Image talokuva4 = LoadImage("rivitalo");
16    Image lintukuva = LoadImage("Lintu");
17    Image pilvikuva = LoadImage("Pilvi");
18    Image valikkopilvi = LoadImage("Valikkopilvi");
19    PhysicsObject pelaaja;
20    int pisteet = 0;
21
22    //SoundEffect tuuli = LoadSoundEffect("tuuli");
23    SoundEffect loppuaani = LoadSoundEffect("dun dun dun");
24    SoundEffect aploodit = LoadSoundEffect("aploodit");
25
26    ScoreList topLista = new ScoreList(10, false, 0);
27
28
29    public override void Begin()
30    {
31        if (DataStorage.Exists("pisteet.xml"))
32            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
33
34        Mouse.IsCursorVisible = true;
35
36        AlkuValikko();
37
38    }
39
40    void PainettiinValikonNappia(int valinta)
41    {
42        switch (valinta)
43        {
44            case 0:
45                AloitaPeli();
46                break;
47            case 1:
48                NaytaParhaatPisteet();
49                break;
50            case 2:
51                Exit();
52                break;
53        }
54    }
55
56    void NaytaParhaatPisteet()
57    {
58        HighScoreWindow topIkkuna = new HighScoreWindow(
59                              "Parhaat pisteet",
60                              topLista);
61        topIkkuna.Closed += TallennaPisteet;
62        Add(topIkkuna);
63
64    }
65
66    void ParhaatPisteet()
67    {
68        HighScoreWindow topIkkuna = new HighScoreWindow(
69                             "Parhaat pisteet",
70                             "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:",
71                             topLista, pisteet);
72        topIkkuna.Closed += TallennaPisteet;
73        Add(topIkkuna);
74    }
75
76    void AloitaPeli()
77    {
78        pisteet = 0;
79        ClearAll();
80        AsetaOhjaimet();
81
82        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
83        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
84
85        pelaaja = new PhysicsObject(pallo);
86        pelaaja.X = (-300);
87        pelaaja.Width *= 0.7;
88        pelaaja.Height *= 0.7;
89        pelaaja.CanRotate = false;
90        AddCollisionHandler(pelaaja, "vaarallinen", PelaajaKuolee);
91        Add(pelaaja);
92
93        LuoAikaLaskurit();
94
95        MediaPlayer.Play("tuulimp3");
96
97
98        Camera.ZoomToLevel();
99    }
100
101    void AlkuValikko()
102    {
103        MultiSelectWindow valikko = new MultiSelectWindow("Tervetuloa peliin!",
104"Aloita peli", "Parhaat pisteet", "Lopeta");
105        // valikko.Size *= 2;
106        valikko.ItemSelected += PainettiinValikonNappia;
107        valikko.Color = Color.Transparent;
108        valikko.Buttons[0].TextColor = Color.White;
109        valikko.SelectionColor = Color.Emerald;
110        Add(valikko);
111
112        GameObject pilvi = new GameObject(valikkopilvi);
113        pilvi.Size *=1.4;
114        Add(pilvi);
115    }
116
117    void AsetaOhjaimet()
118    {
119        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu ylös",new Vector (0, 330));
120        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaaja, "Pelaaja pysähtyy");
121        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu alas", new Vector (0, -330));
122        Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaPelaaja, "Pelaaja pysähtyy");
123
124    }
125
126    void LiikutaPelaajaa(Vector suunta)
127    {
128       
129       
130        if (( suunta.Y > 0) && (pelaaja.Top > Level.Top))
131        {
132            pelaaja.Velocity = Vector.Zero;
133            return;
134        }
135
136        pelaaja.Velocity = suunta;
137    }
138
139 
140
141    void PysaytaPelaaja()
142    {
143        pelaaja.Stop();
144    }
145
146    void PelaajaKuolee(PhysicsObject pelaaja, PhysicsObject kohde)
147    {
148        ClearAll();
149        ParhaatPisteet();
150
151    }
152
153    void TallennaPisteet(Window sender)
154    {
155        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
156        AlkuValikko();
157    }
158
159
160    void LuoTalo()
161    {
162        Image kuva = RandomGen.SelectOne<Image>(talokuvat);
163        PhysicsObject talo = new PhysicsObject (kuva);
164        talo.Shape = Shape.FromImage(kuva);
165        talo.Width *= 0.8;
166        talo.Height *= 0.8;
167        talo.X = Level.Right + 100;
168        talo.Bottom = Level.Bottom;
169        talo.Tag = "vaarallinen";
170        talo.IgnoresCollisionResponse = true;
171        talo.Hit(new Vector(-150, 0));
172        Add(talo);
173    }
174
175    void LuoLintu()
176    {
177        PhysicsObject lintu = new PhysicsObject(lintukuva);
178        lintu.Shape = Shape.FromImage(lintukuva);
179        lintu.Width *= 0.8;
180        lintu.Height *= 0.8;
181        lintu.X = Level.Right;
182
183        lintu.Y = RandomGen.NextDouble(Level.Top, Level.Top -300 );
184        lintu.Tag = "vaarallinen";
185        lintu.IgnoresCollisionResponse = true;
186        lintu.Hit(new Vector(-400, 0));
187        Add(lintu);
188
189    }
190
191    void LuoLintu2()
192    {
193        PhysicsObject lintu = new PhysicsObject(lintukuva);
194        lintu.Shape = Shape.FromImage(lintukuva);
195        lintu.Width *= 0.8;
196        lintu.Height *= 0.8;
197        lintu.X = Level.Right;
198
199        lintu.Y = RandomGen.NextDouble(Level.Top -300, -100);
200        lintu.Tag = "vaarallinen";
201        lintu.IgnoresCollisionResponse = true;
202        lintu.Hit(new Vector(-250, 0));
203        Add(lintu);
204
205    }
206
207    void LuoPilvi()
208    {
209        PhysicsObject pilvi = new PhysicsObject(pilvikuva);
210        pilvi.X = Level.Right;
211        pilvi.IgnoresCollisionResponse = true;
212        pilvi.Width *=0.5;
213        pilvi.Height *= 0.5;
214        pilvi.Hit(new Vector(-150, 0));
215        pilvi.Y = RandomGen.NextDouble(Level.Top, Level.Top - 500);
216        Add(pilvi);
217    }
218
219    void LuoAikaLaskurit()
220    {
221        Timer taloajastin = new Timer();
222        taloajastin.Interval = 1.5;
223        taloajastin.Timeout += LuoTalo;
224        taloajastin.Start();
225
226        Timer lintuajastin = new Timer();
227        lintuajastin.Interval = 1;
228        lintuajastin.Timeout += LuoLintu;
229        lintuajastin.Start();
230
231        Timer lintuajastin2 = new Timer();
232        lintuajastin2.Interval = 3;
233        lintuajastin2.Timeout += LuoLintu2;
234        lintuajastin2.Start();
235
236        Timer pilviajastin = new Timer();
237        pilviajastin.Interval = 3;
238        pilviajastin.Timeout += LuoPilvi;
239        pilviajastin.Start();
240
241        Timer lintuajastin3 = new Timer();
242        lintuajastin3.Interval = 4.5;
243        lintuajastin3.Timeout += LuoLintu2;
244        lintuajastin3.Start();
245       
246        Timer aikalaskuri = new Timer();
247        aikalaskuri.Interval = 1;
248        aikalaskuri.Timeout += LisaaPiste;
249        aikalaskuri.Start();
250
251        Label aikanaytto = new Label();
252        aikanaytto.X = Level.Left;
253        aikanaytto.Y = Level.Right - 10;
254        aikanaytto.TextColor = Color.White;
255        aikanaytto.DecimalPlaces = 1;
256        aikanaytto.BindTo(aikalaskuri.SecondCounter);
257        Add(aikanaytto);
258
259
260    }
261
262
263
264
265    void LisaaPiste()
266    {
267        pisteet++;
268    }
269   
270   
271       
272
273       
274
275   
276   
277   
278
279}
280
Note: See TracBrowser for help on using the repository browser.