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

Revision 3122, 7.5 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("poksahdus");
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.IsRepeating = true;
96        MediaPlayer.Play("tuulimp3");
97
98
99        Camera.ZoomToLevel();
100    }
101
102    void AlkuValikko()
103    {
104        MultiSelectWindow valikko = new MultiSelectWindow("Tervetuloa peliin!",
105"Aloita peli", "Parhaat pisteet", "Lopeta");
106        // valikko.Size *= 2;
107        valikko.ItemSelected += PainettiinValikonNappia;
108        valikko.Color = Color.Transparent;
109        valikko.Buttons[0].TextColor = Color.White;
110        valikko.SelectionColor = Color.Emerald;
111        Add(valikko);
112
113        GameObject pilvi = new GameObject(valikkopilvi);
114        pilvi.Size *=1.4;
115        Add(pilvi);
116    }
117
118    void AsetaOhjaimet()
119    {
120        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu ylös",new Vector (0, 330));
121        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaaja, "Pelaaja pysähtyy");
122        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu alas", new Vector (0, -330));
123        Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaPelaaja, "Pelaaja pysähtyy");
124
125    }
126
127    void LiikutaPelaajaa(Vector suunta)
128    {
129       
130       
131        if (( suunta.Y > 0) && (pelaaja.Top > Level.Top))
132        {
133            pelaaja.Velocity = Vector.Zero;
134            return;
135        }
136
137        pelaaja.Velocity = suunta;
138    }
139
140 
141
142    void PysaytaPelaaja()
143    {
144        pelaaja.Stop();
145    }
146
147    void PelaajaKuolee(PhysicsObject pelaaja, PhysicsObject kohde)
148    {
149        ClearAll();
150        ParhaatPisteet();
151        loppuaani.Play();
152
153    }
154
155    void TallennaPisteet(Window sender)
156    {
157        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
158        AlkuValikko();
159    }
160
161
162    void LuoTalo()
163    {
164        Image kuva = RandomGen.SelectOne<Image>(talokuvat);
165        PhysicsObject talo = new PhysicsObject (kuva);
166        talo.Shape = Shape.FromImage(kuva);
167        talo.Width *= 0.8;
168        talo.Height *= 0.8;
169        talo.X = Level.Right + 100;
170        talo.Bottom = Level.Bottom;
171        talo.Tag = "vaarallinen";
172        talo.IgnoresCollisionResponse = true;
173        talo.Hit(new Vector(-150, 0));
174        Add(talo);
175    }
176
177    void LuoLintu()
178    {
179        PhysicsObject lintu = new PhysicsObject(lintukuva);
180        lintu.Shape = Shape.FromImage(lintukuva);
181        lintu.Width *= 0.8;
182        lintu.Height *= 0.8;
183        lintu.X = Level.Right;
184
185        lintu.Y = RandomGen.NextDouble(Level.Top, Level.Top -300 );
186        lintu.Tag = "vaarallinen";
187        lintu.IgnoresCollisionResponse = true;
188        lintu.Hit(new Vector(-400, 0));
189        Add(lintu);
190
191    }
192
193    void LuoLintu2()
194    {
195        PhysicsObject lintu = new PhysicsObject(lintukuva);
196        lintu.Shape = Shape.FromImage(lintukuva);
197        lintu.Width *= 0.8;
198        lintu.Height *= 0.8;
199        lintu.X = Level.Right;
200
201        lintu.Y = RandomGen.NextDouble(Level.Top -300, -100);
202        lintu.Tag = "vaarallinen";
203        lintu.IgnoresCollisionResponse = true;
204        lintu.Hit(new Vector(-250, 0));
205        Add(lintu);
206
207    }
208
209    void LuoPilvi()
210    {
211        PhysicsObject pilvi = new PhysicsObject(pilvikuva);
212        pilvi.X = Level.Right;
213        pilvi.IgnoresCollisionResponse = true;
214        pilvi.Width *=0.5;
215        pilvi.Height *= 0.5;
216        pilvi.Hit(new Vector(-150, 0));
217        pilvi.Y = RandomGen.NextDouble(Level.Top, Level.Top - 500);
218        Add(pilvi);
219    }
220
221    void LuoAikaLaskurit()
222    {
223        Timer taloajastin = new Timer();
224        taloajastin.Interval = 1.5;
225        taloajastin.Timeout += LuoTalo;
226        taloajastin.Start();
227
228        Timer lintuajastin = new Timer();
229        lintuajastin.Interval = 1;
230        lintuajastin.Timeout += LuoLintu;
231        lintuajastin.Start();
232
233        Timer lintuajastin2 = new Timer();
234        lintuajastin2.Interval = 3;
235        lintuajastin2.Timeout += LuoLintu2;
236        lintuajastin2.Start();
237
238        Timer pilviajastin = new Timer();
239        pilviajastin.Interval = 3;
240        pilviajastin.Timeout += LuoPilvi;
241        pilviajastin.Start();
242
243        Timer lintuajastin3 = new Timer();
244        lintuajastin3.Interval = 4.5;
245        lintuajastin3.Timeout += LuoLintu2;
246        lintuajastin3.Start();
247       
248        Timer aikalaskuri = new Timer();
249        aikalaskuri.Interval = 1;
250        aikalaskuri.Timeout += LisaaPiste;
251        aikalaskuri.Start();
252
253        Label aikanaytto = new Label();
254        aikanaytto.X = Level.Left;
255        aikanaytto.Y = Level.Right - 10;
256        aikanaytto.TextColor = Color.White;
257        aikanaytto.DecimalPlaces = 1;
258        aikanaytto.BindTo(aikalaskuri.SecondCounter);
259        Add(aikanaytto);
260
261
262    }
263
264
265
266
267    void LisaaPiste()
268    {
269        pisteet++;
270    }
271   
272   
273       
274
275       
276
277   
278   
279   
280
281}
282
Note: See TracBrowser for help on using the repository browser.