source: 2014/30/ViljamiV/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1.cs @ 5677

Revision 5677, 7.8 KB checked in by vilmikvi, 6 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class FysiikkaPeli1 : PhysicsGame
10{   
11   
12        Image autoKuva = LoadImage("redcar8-bit");
13        Image poliisiKuva = LoadImage("copcar8-bithessu");
14        Image kentta = LoadImage("kentta2");
15        Image kenttatausta = LoadImage("kenttatausta");
16        Image esteKuva = LoadImage("este");
17        Image kiviKuva = LoadImage("kivi");
18        Image loppuKuva = LoadImage("loppu402");
19
20        EasyHighScore topLista = new EasyHighScore();
21        Timer aikaLaskuri;
22
23        const int ylaY = 150;
24        const int keskiY = -130;
25        const int alaY = -410;
26
27        PhysicsObject pelaaja;
28        PhysicsObject poliisi;
29
30        GameObject bg;
31        GameObject bg2;
32        double tasonnopeus = 1000;
33        const double MAXNOPEUS = 7000;
34
35    public override void Begin()
36    {
37        //SetWindowSize(1280, 800);
38
39        LuoAlkuvalikko();
40        // TODO: Kirjoita ohjelmakoodisi tähän
41
42    }
43
44    void LisaaOhjaimet()
45    {
46        Keyboard.Listen(Key.E, ButtonState.Pressed, LiikutaAutoa, null, pelaaja, 1);
47        Keyboard.Listen(Key.W, ButtonState.Pressed, LiikutaAutoa, null, pelaaja, -1);
48    }
49
50    void LuoAikaLaskuri()
51    {
52        aikaLaskuri = new Timer();
53        aikaLaskuri.Start();
54
55        Label aikaNaytto = new Label();
56        aikaNaytto.TextColor = Color.White;
57        aikaNaytto.DecimalPlaces = 1;
58        aikaNaytto.Position = new Vector(Screen.Left+40,Screen.Top-40);
59        aikaNaytto.TextColor = Color.BloodRed;
60        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
61        Add(aikaNaytto);
62    }
63
64
65
66    void LiikutaAutoa(PhysicsObject auto, int suunta)
67    {
68        if (suunta > 0 && auto.Y != ylaY)
69        {
70            if (auto.Y == alaY) { auto.Y = keskiY; LiikutaPoliisia(keskiY); }
71            else { auto.Y = ylaY; LiikutaPoliisia(ylaY); }
72        }
73
74        else if (suunta < 0 && auto.Y != alaY)
75        {
76            if (auto.Y == ylaY) { auto.Y = keskiY; LiikutaPoliisia(keskiY); }
77            else { auto.Y = alaY; LiikutaPoliisia(alaY); }
78        }
79    }
80
81    void ArvoEsteita()
82    {
83        Timer esteAjastin = new Timer();
84        esteAjastin.Interval = 5;
85        esteAjastin.Timeout += delegate { LuoEste(120, 120, RandomGen.SelectOne(ylaY, keskiY, alaY), RandomGen.SelectOne(esteKuva, kiviKuva)); };
86        esteAjastin.Start();
87    }
88
89    void LuoEste(int leveys, int korkeus, int paikka, Image kuva)
90    {
91        PhysicsObject este = new PhysicsObject(leveys, korkeus);
92        este.Y = paikka;
93        este.X = Screen.Right + leveys;
94        if (kuva.Equals(esteKuva)) este.Tag = "este";
95        else este.Tag = "kivi";
96        este.Image = kuva;
97        este.CollisionIgnoreGroup = 1;
98        Add(este);
99        este.MoveTo(new Vector(Screen.Left + leveys, paikka) , tasonnopeus, delegate { este.Destroy(); });
100    }
101
102    void LiikutaPoliisia(int paikka)
103    {
104        Timer.SingleShot(0.3, delegate { poliisi.Y = paikka; });
105    }
106
107
108    public void AloitaPeli(Window sender)
109    {
110        LuoAlkuvalikko();
111
112    }
113
114
115    void AloitaPeli()
116    {
117        ClearAll();
118        tasonnopeus = 1000;
119        LuoAikaLaskuri();
120
121        pelaaja = LuoAuto(autoKuva, "pelaaja", new Vector(-160, keskiY));
122        poliisi = LuoAuto(poliisiKuva, "poliisi", new Vector(-700, keskiY));
123        poliisi.CollisionIgnoreGroup = 1;
124
125        AddCollisionHandler(pelaaja, "kivi", PelaajaTormasi);
126        AddCollisionHandler(pelaaja, "este", PelaajaTormasi);
127
128
129
130        LisaaOhjaimet();
131        ArvoEsteita();
132
133        LisaaVaikeusAjastin();
134       
135        //LuoPistelaskuri();
136
137        Level.Size = Screen.Size;
138
139        bg = new GameObject(Screen.Width, Screen.Height);
140        bg.Position = Screen.Center;
141        bg.Image = kentta;
142        bg.MoveTo(Screen.Center + new Vector(-Screen.Width, 0), tasonnopeus, Liikutatausta);
143        Add(bg, -3);
144
145        bg2 = new GameObject(Screen.Width, Screen.Height);
146        bg2.Position = Screen.Center + new Vector(Screen.Width, 0);
147        bg2.MoveTo(Screen.Center, tasonnopeus, Liikutatausta2);
148        bg2.Image = kentta;
149        Add(bg2, -3);
150   
151        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
152    }
153
154
155    void LisaaVaikeusAjastin()
156    {
157        Timer vaikeusAjastin = new Timer();
158        vaikeusAjastin.Interval = 0.05;
159        vaikeusAjastin.Timeout += delegate { tasonnopeus++; if (tasonnopeus >= MAXNOPEUS) vaikeusAjastin.Stop(); };
160        vaikeusAjastin.Start();
161    }
162
163
164    PhysicsObject LuoAuto(Image kuva, string tag, Vector paikka)
165    {
166        PhysicsObject auto = new PhysicsObject(400, 160);
167        auto.Image = kuva;
168        auto.Position = paikka;
169        auto.Tag = tag;
170        Add(auto);
171        return auto;
172    }
173
174    void PelaajaTormasi(PhysicsObject pelaaja, PhysicsObject este)
175    {
176        Explosion rajahdys = new Explosion(50);
177        rajahdys.Position = pelaaja.Position;
178        Add(rajahdys);
179        Timer.SingleShot(1, PeliLoppui);
180    }
181
182
183    void PeliLoppui()
184    {
185        double tamaaika = aikaLaskuri.CurrentTime;
186        ClearAll();
187        MessageDisplay.Add("HÄVISIT");
188        GameObject alkuruutu = new GameObject(Screen.Width, Screen.Height);
189        alkuruutu.Position = Screen.Center;
190        alkuruutu.Image = loppuKuva;
191        Add(alkuruutu, -3);
192        MediaPlayer.Play("owen");
193        MediaPlayer.Volume = 0.5;
194        MediaPlayer.IsRepeating = true;
195        aikaLaskuri.Stop();
196       
197       
198        //Level.Background.Image = kentta;
199        Level.Background.ScaleToLevel();
200        Level.Background.Color = Color.Black;
201        Timer.SingleShot(4, delegate
202        {
203            MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Parhaat pisteet", "Lopeta");
204
205            topLista.EnterAndShow(aikaLaskuri.CurrentTime);
206            topLista.HighScoreWindow.Closed += AloitaPeli;
207
208        });
209
210        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
211        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
212   
213    }
214
215    void ParhaatPisteet()
216    {
217        topLista.Show();
218
219    }
220
221    void Liikutatausta()
222    {
223        bg.Position = Screen.Center;
224        bg.MoveTo(Screen.Center + new Vector(-Screen.Width, 0), tasonnopeus, Liikutatausta);
225    }
226
227
228    void Liikutatausta2()
229    {
230        bg2.Y = Screen.Center.Y;
231        bg2.X = Screen.Center.X + bg.Size.X;
232        bg2.MoveTo(Screen.Center, tasonnopeus, Liikutatausta2);
233    }
234
235
236    void LuoAlkuvalikko()
237    {
238        //IsMouseVisible = true;
239
240
241        //Level.Background.Image = kenttatausta;
242
243        GameObject alkuruutu = new GameObject(Screen.Width, Screen.Height);
244        alkuruutu.Position = Screen.Center;
245        alkuruutu.Image = kenttatausta;
246        Add(alkuruutu, -3);
247
248        MediaPlayer.Play("owen");
249        MediaPlayer.Volume = 0.5;
250        MediaPlayer.IsRepeating = true;
251       
252       
253        //Level.Background.Image = kentta;
254        Level.Background.ScaleToLevel();
255        Level.Background.Color = Color.Black;
256        Timer.SingleShot(1, delegate
257        {
258            MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Parhaat pisteet", "Lopeta");
259
260            Add(alkuValikko);
261            alkuValikko.AddItemHandler(0, AloitaPeli);
262            alkuValikko.AddItemHandler(1, ParhaatPisteet);
263            alkuValikko.AddItemHandler(2, Exit);
264        });
265
266        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
267        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
268    }
269}
Note: See TracBrowser for help on using the repository browser.