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

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