source: 2013/30/ViljamiV/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1.cs @ 5645

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