source: 2011/23/tueesuih/Barricade/Barricade.cs @ 1857

Revision 1857, 7.0 KB checked in by tueesuih, 12 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 Peli : PhysicsGame
10{
11    ScoreList topLista = new ScoreList(10, false, 0);
12
13
14    Vector nopeusVasen = new Vector(-2500, 0);
15    Vector nopeusOikea = new Vector(2500, 0);
16    const int ruudunLeveys = 500;
17    const int ruudunKorkeus = 2000;
18    Timer aikaLaskuri;
19    Timer pisteLaskuri;
20
21    Image barricade = LoadImage("Barricade alus");
22    Image otsikkoKuva = LoadImage("Barricade text");
23
24    PhysicsObject alus;
25
26    List<Label> valikonKohdat;
27
28    public override void Begin()
29    {
30        if (DataStorage.Exists("pisteet.xml"))
31            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
32
33
34
35        Valikko();
36
37        // TODO: Kirjoita ohjelmakoodisi tähän
38    }
39    void LuoKentta()
40    {
41        Level.Width = 0.5;
42        Level.Height = 5;
43       
44
45        alus = new PhysicsObject(250, 200);
46        alus.Shape = Shape.Triangle;
47        alus.Restitution = 1.0;
48        alus.X = -250;
49        alus.Y = -57000;
50        AddCollisionHandler(alus, Tormays);
51        alus.Image = barricade;
52        Add(alus);
53
54        Level.BackgroundColor = Color.DarkTurquoise;
55
56        Camera.Reset();
57        Camera.Follow(alus);
58        Camera.Zoom(0.2);
59
60        MediaPlayer.Play("Cacodemon_mp3");
61
62    }
63
64    void Tormays(PhysicsObject alus, PhysicsObject palikka)
65    {
66        Explosion rajahdys = new Explosion(1000);
67        rajahdys.Position = alus.Position;
68        rajahdys.ShockwaveColor = Color.Yellow;
69        rajahdys.Speed = 1000;
70
71        Add(rajahdys);
72
73        aikaLaskuri.Stop();
74
75        alus.Destroy();
76
77        if (pisteLaskuri == null) 
78        {
79            pisteLaskuri = new Timer();
80            pisteLaskuri.Trigger += TopIkkuna;
81            pisteLaskuri.Interval = 2.5;
82        }
83         
84        if (!pisteLaskuri.Enabled)
85        {
86            pisteLaskuri.Start();
87        }
88        //Timer.SingleShot(2.5, TopIkkuna);
89
90
91
92
93    }
94
95    void pisteLaskuri_Trigger(Timer sender)
96    {
97        throw new NotImplementedException();
98    }
99    void Restart()
100    {
101        ClearAll();
102        LuoKentta();
103        AsetaOhjaimet();
104        LuoPalikka();
105        LuoPalikka2();
106        LisääSeinät();
107        LuoAikaLaskuri();
108
109    }
110    void TallennaPisteet(Window sender)
111    {
112        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
113
114    }
115
116     void LisääSeinät()
117    {
118
119        TileMap ruudut = TileMap.FromFile("kentta.txt");
120        ruudut['='] = LuoPalikka;
121        ruudut['*'] = LuoPalikka2;
122        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
123        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
124        Add (alus);
125
126    }
127
128
129    void AsetaOhjaimet()
130    {
131
132        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liikuta alusta vasemmalle", alus, nopeusVasen);
133        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, alus, Vector.Zero);
134        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liikuta alusta oikealle", alus, nopeusOikea);
135        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, alus, Vector.Zero);
136        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Poistu");
137        Keyboard.Listen(Key.R, ButtonState.Pressed, Restart, "aloita peli uudelleen");
138    }
139
140    void AsetaNopeus(PhysicsObject alus, Vector nopeus)
141    {
142        alus.Hit(nopeus);
143        alus.Velocity = new Vector (nopeus.X, 2600);
144    }
145   
146
147    PhysicsObject LuoPalikka()
148    {
149            PhysicsObject palikka = PhysicsObject.CreateStaticObject(550, 1000);
150            palikka.Shape = Shape.Rectangle;
151            palikka.Color = Color.Black;
152            return palikka;
153       
154    }
155
156    PhysicsObject LuoPalikka2()
157    {
158        PhysicsObject palikka2 = PhysicsObject.CreateStaticObject(500, 10000);
159        palikka2.Shape = Shape.Rectangle;
160        palikka2.Color = Color.Black;
161        return palikka2;
162    }
163    void LuoAikaLaskuri()
164    {
165        aikaLaskuri = new Timer();
166        aikaLaskuri.Start();
167
168        Label aikaNaytto = new Label();
169        aikaNaytto.TextColor = Color.White;
170        aikaNaytto.DecimalPlaces = 1;
171        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
172        Add(aikaNaytto);
173        aikaNaytto.X = Screen.Right - 100;
174        aikaNaytto.Y = Screen.Top - 50;
175
176
177    }
178
179    void Valikko()
180    {
181        ClearAll();
182       
183        valikonKohdat = new List<Label>();
184        Camera.Reset();
185        LuoOtsikko(0, 200);
186
187        MediaPlayer.Play("Tiger Swiss Roll_mp3");
188
189        Label kohta1 = new Label("START");
190        kohta1.Position = new Vector(0, 40);
191        valikonKohdat.Add(kohta1);
192
193        Label kohta2 = new Label("EXIT");
194        kohta2.Position = new Vector(0, -120);
195        valikonKohdat.Add(kohta2);
196        Level.BackgroundColor = Color.Black;
197
198        Label kohta3 = new Label("HIGH SCORES");
199        kohta3.Position = new Vector(0, -40);
200        valikonKohdat.Add(kohta3);
201
202
203
204
205        foreach (Label valikonKohta in valikonKohdat)
206        {
207            Add(valikonKohta);
208        }
209
210        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
211        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
212        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, NaytaTopten, null);
213
214
215        Mouse.IsCursorVisible = true;
216        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
217        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
218       
219    }
220
221    void ValikossaLiikkuminen(AnalogState hiirenTila)
222    {
223        foreach (Label kohta in valikonKohdat)
224        {
225            if (Mouse.IsCursorOn(kohta))
226            {
227                kohta.TextColor = Color.Green;
228            }
229            else
230            {
231                kohta.TextColor = Color.LightGreen;
232            }
233
234        }
235    }
236
237    void AloitaPeli()
238    {
239        ClearAll();
240
241        LuoKentta();
242        AsetaOhjaimet();
243        LuoPalikka();
244        LuoPalikka2();
245        LisääSeinät();
246        LuoAikaLaskuri();
247
248    }
249
250    void Lopeta()
251    {
252        Exit();
253    }
254
255    void LuoOtsikko(double x, double y)
256    {
257        Widget otsikko = new Widget(otsikkoKuva);
258        otsikko.Size = new Vector(900, 300);
259        otsikko.X = x;
260        otsikko.Y = y;
261        Add(otsikko);
262    }
263
264
265    void NaytaTopten()
266    {
267        HighScoreWindow topIkkuna = new HighScoreWindow("barricade", "Highscores", topLista);
268        Add(topIkkuna);
269    }
270
271    void TopIkkuna(Timer sender)
272    {
273       HighScoreWindow topIkkuna = new HighScoreWindow("barricade",
274       "High scores",
275       "CONGRATULATIONS, %p! type your name here:",
276       topLista, aikaLaskuri.CurrentTime);
277        topIkkuna.Closed += TallennaPisteet;
278        Add(topIkkuna);
279        pisteLaskuri.Stop();
280    }
281
282}
Note: See TracBrowser for help on using the repository browser.