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

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