source: 2011/24/JaniS/Virus Infection/Virus Infection/Virus Infection/Peli.cs @ 2099

Revision 2099, 9.7 KB checked in by jajusaar, 8 years ago (diff)

Valmis.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Widgets;
7using Jypeli.Effects;
8
9public class Peli : PhysicsGame
10{
11    PhysicsObject virus;
12    PhysicsObject pelaaja = new PhysicsObject(20, 20);
13    //PhysicsObject virus = new PhysicsObject(25, 25);
14    Image rajahdysKuva = LoadImage("valo");
15    Image virustenRajaytys = LoadImage("valo2");
16
17    List<PhysicsObject> virukset = new List<PhysicsObject>();
18
19    List<Label> valikonKohdat;
20   
21
22    public override void Begin()
23    {
24        Valikko();
25    }
26
27    void Valikko()
28    {
29        ClearAll();
30        valikonKohdat = new List<Label>();
31        Level.BackgroundColor = Color.Black;
32
33        Label VI = new Label("VIRUS INFECTION");
34        VI.TextColor = Color.Yellow;
35        VI.Position = new Vector(0, 200);
36        Add(VI);
37        VI.Font = Font.DefaultLarge;
38       
39        Label kohta1 = new Label("Arcade Mode");
40        kohta1.Position = new Vector(0, 90);
41        valikonKohdat.Add(kohta1);
42
43        Label kohta2 = new Label("Survival Mode");
44        kohta2.Position = new Vector(0, 10);
45        valikonKohdat.Add(kohta2);
46
47        Label kohta3 = new Label("Instructions");
48        kohta3.Position = new Vector(0, -70);
49        valikonKohdat.Add(kohta3);
50
51        Label kohta4 = new Label("Exit");
52        kohta4.Position = new Vector(0, -150);
53        valikonKohdat.Add(kohta4);
54
55
56        //ohjeet = new List<>();
57
58        foreach (Label valikonKohta in valikonKohdat)
59        {
60            Add(valikonKohta);
61        }
62
63        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
64        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, AloitaSurvivalMode, null);
65        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, ohjeet, null);
66        Mouse.ListenOn(kohta4, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
67
68        Mouse.IsCursorVisible = true;
69        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
70        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "Lopeta");
71
72    }
73
74    void ohjeet()
75    {
76        ClearAll();
77        Ohjaus();
78
79        Label Ohje = new Label("Controls: \n Use Arrow Keys to move. \n  Enter: Restart. \n  Space: Go to menu. \n  Esc: Exit. \n \n Arcade Mode: \n Don't touch the walls or enemies. \n Green area is goal. \n \n Survival Mode: \n Survive so long as you can!");
80        Ohje.Color = Level.BackgroundColor;
81        Ohje.TextColor = Color.White;
82        Ohje.Position = new Vector(0, 0);
83        Add(Ohje);
84    }
85
86    void ValikossaLiikkuminen(AnalogState hiirenTila)
87    {
88        foreach (Label kohta in valikonKohdat)
89        {
90            if (Mouse.IsCursorOn(kohta))
91            {
92                kohta.TextColor = Color.Yellow;
93            }
94            else
95            {
96                kohta.TextColor = Color.DarkBlue;
97            }
98        }
99    }
100
101
102    void AloitaSurvivalMode()
103    {
104        ClearAll();
105
106       // foreach (Label kohta in valikonKohdat)
107        LuoKentta("SurvivalMode.txt");
108        Ohjaus();
109        Keyboard.Listen(Key.Enter, ButtonState.Down, AloitaSurAlusta, "Restart");
110       
111    }
112
113
114        void AloitaPeli()
115        {
116            ClearAll();
117            LuoKentta("Kentta.txt");
118            Ohjaus();
119            Keyboard.Listen(Key.Enter, ButtonState.Down, AloitaAlusta, "Restart");
120       
121        }
122
123        void Lopeta()
124        {
125            Exit();
126        }
127
128
129    void LiikutaPelaajaa(Vector vektori)
130    {
131        pelaaja.Push(vektori);
132    }
133
134
135    void LuoKentta(string kentta)
136    {
137        TileMap ruudut = TileMap.FromFile(kentta);
138        ruudut.SetTileMethod('#', LuoPalikka);
139        ruudut.SetTileMethod('o', LuoPelaaja);
140        ruudut.SetTileMethod('x', LuoVirukset);
141        ruudut.SetTileMethod('M', LuoMaali); 
142        ruudut.SetTileMethod('O', LuoSurPelaaja);
143        ruudut.Execute(50, 60);
144        Level.BackgroundColor = Color.Black;
145        LuoAikaLaskuri();
146        //Mouse.IsCursorVisible = false;
147    }
148
149    void LuoSurPelaaja(Vector paikka, double leveys, double korkeus)
150    {
151        if (pelaaja.IsAddedToGame) pelaaja.Destroy();
152        pelaaja = new PhysicsObject(60, 60);
153        pelaaja.Position = paikka;
154        pelaaja.Shape = Shape.Circle;
155        pelaaja.Color = Color.Yellow;
156        Add(pelaaja);
157        AddCollisionHandler(pelaaja, KasitteleTormays);
158        Camera.Follow(pelaaja);   
159    }
160
161    void LuoPalikka(Vector paikka, double leveys, double korkeus)
162    {
163        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
164        palikka.Position = paikka;
165        palikka.Shape = Shape.Rectangle;
166        palikka.Color = Color.DarkBlue;
167        palikka.Restitution = 1.0;
168        palikka.Tag = "palikka";
169        Add(palikka);
170    }
171    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
172    {
173        if (pelaaja.IsAddedToGame) pelaaja.Destroy();
174        pelaaja = new PhysicsObject(20, 20);
175        pelaaja.Position = paikka;
176        pelaaja.Shape = Shape.Circle;
177        pelaaja.Color = Color.Yellow;
178        Add(pelaaja);
179        AddCollisionHandler(pelaaja, KasitteleTormays);
180
181    }
182    void LuoVirukset(Vector paikka, double leveys, double korkeus)
183    {
184        virus = new PhysicsObject(25, 25);
185        virus.Position = paikka;
186        virus.Shape = Shape.Circle;
187        virus.Color = Color.Red;
188        virus.Tag = "virus";
189        Add(virus);
190        Vector impulssi = new Vector(0, 250.0);
191        virus.Hit(impulssi);
192        virus.Restitution = 1.0;
193
194        virukset.Add(virus);
195
196        Timer ajastin = new Timer();
197        ajastin.Tag = virus;
198        ajastin.Interval = 10;
199        ajastin.Trigger += LisaaVauhtia;
200        ajastin.Start();
201    }
202
203    void LuoMaali(Vector paikka, double leveys, double korkeus)
204    {
205        PhysicsObject maali = new PhysicsObject(30, 30);
206        maali.Position = paikka;
207        maali.IgnoresCollisionResponse = true;
208        maali.Shape = Shape.Circle;
209        maali.Color = Color.GreenYellow;
210        AddCollisionHandler(maali, Maali);
211       
212        Add(maali, -1);
213
214    }
215
216
217
218    void LisaaVauhtia(Timer sender)
219    {
220        PhysicsObject virus = sender.Tag as PhysicsObject;
221
222        Vector impulssi = new Vector(0, 150.0);
223        virus.Hit(impulssi);
224    }
225
226    void Ohjaus()
227    {
228        Keyboard.Listen(Key.Space, ButtonState.Pressed, Valikko, "Palaa valikkoon");
229
230        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
231
232        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000, 0));
233        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
234        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(1000, 0));
235        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
236        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 1000));
237        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
238        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
239        Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
240    }
241    void PysaytaPelaaja(Vector Zero)
242    {
243        pelaaja.Velocity = Zero;
244    }
245
246        void Maali(PhysicsObject pelaaja, PhysicsObject maali)
247    {
248        MessageDisplay.Add("Stage Cleared, You Won!");
249        MessageDisplay.TextColor = Color.Yellow;
250        rajaytaVirukset();
251       
252    }
253   
254    void KasitteleTormays(PhysicsObject pelaaja, PhysicsObject kohde)
255    {
256        if (kohde.Tag.ToString() == "palikka" || kohde.Tag.ToString() == "virus")
257        {
258            int pMaxMaara = 50;
259            ExplosionSystem valo =
260                new ExplosionSystem(rajahdysKuva, pMaxMaara);
261            Add(valo);
262            MessageDisplay.Add("Game Over");
263            MessageDisplay.TextColor = Color.Red;
264
265
266            int pMaara = 3;
267
268            valo.AddEffect(pelaaja.Position.X, pelaaja.Position.Y, pMaara);
269
270            pelaaja.Destroy();
271        }
272    }
273
274    void LuoAikaLaskuri()
275    {
276        Timer aikaLaskuri = new Timer();
277        aikaLaskuri.Interval = 1;
278        aikaLaskuri.Start();
279        //aikaLaskuri.Trigger += AikaLoppui;
280
281        Label aikaNaytto = new Label();
282        aikaNaytto.TextColor = Color.White;
283        aikaNaytto.DecimalPlaces = 1;
284        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
285        aikaNaytto.Y = Level.Top - 100;
286        Add(aikaNaytto);
287    }
288
289    void AikaLoppui(Timer ajastin)
290    {
291        MessageDisplay.Add("Game Over");
292        MessageDisplay.Color = Color.Red;
293        ajastin.Stop();
294    }
295
296    void AloitaAlusta()
297    {
298        ClearAll();
299        LuoKentta("kentta.txt");
300        Ohjaus();
301        Keyboard.Listen(Key.Enter, ButtonState.Down, AloitaAlusta, "Restart");
302
303    }
304
305    void AloitaSurAlusta()
306    {
307        ClearAll();
308        LuoKentta("SurvivalMode.txt");
309        Ohjaus();
310        Keyboard.Listen(Key.Enter, ButtonState.Down, AloitaSurAlusta, "Restart");
311       
312    }
313
314    void rajaytaVirukset()
315    {
316        for (int i = virukset.Count-1; i > -1; i--)
317        {
318            int pMaxMaara = 75;
319            ExplosionSystem valo2 =
320                new ExplosionSystem(virustenRajaytys, pMaxMaara);
321            Add(valo2);
322            int pMaara = 3;
323            valo2.AddEffect(virukset[i].Position.X, virukset[i].Position.Y, pMaara);
324            virukset[i].Destroy();
325            virukset.RemoveAt(i);
326        }
327
328    }
329
330}
331
Note: See TracBrowser for help on using the repository browser.