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

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