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

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