source: 2012/30/JaniS/Virus Infection/Virus Infection/Virus Infection/Peli.cs @ 3721

Revision 3721, 9.8 KB checked in by juiitamm, 8 years ago (diff)

Talletus.

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    Timer aikaLaskuri;
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        LuoAikaLaskuri();
111    }
112
113    void AloitaPeli()
114        {
115            ClearAll();
116            LuoKentta("Kentta.txt");
117            Ohjaus();
118            Keyboard.Listen(Key.Enter, ButtonState.Down, AloitaAlusta, "Restart");
119            Camera.ZoomToLevel();
120        }
121
122    void Lopeta()
123        {
124            Exit();
125        }
126
127
128    void LiikutaPelaajaa(Vector vektori)
129    {
130        pelaaja.Push(vektori);
131    }
132
133
134    void LuoKentta(string kentta)
135    {
136        TileMap ruudut = TileMap.FromFile(kentta);
137        ruudut.SetTileMethod('#', LuoPalikka);
138        ruudut.SetTileMethod('o', LuoPelaaja);
139        ruudut.SetTileMethod('x', LuoVirukset);
140        ruudut.SetTileMethod('M', LuoMaali); 
141        ruudut.SetTileMethod('O', LuoSurPelaaja);
142        ruudut.Execute(50, 60);
143        Level.BackgroundColor = Color.Black;
144        LuoAikaLaskuri();
145        Mouse.IsCursorVisible = false;
146    }
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
172    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
173    {
174        if (pelaaja.IsAddedToGame) pelaaja.Destroy();
175        pelaaja = new PhysicsObject(20, 20);
176        pelaaja.Position = paikka;
177        pelaaja.Shape = Shape.Circle;
178        pelaaja.Color = Color.Yellow;
179        Add(pelaaja);
180        AddCollisionHandler(pelaaja, KasitteleTormays);
181
182    }
183
184    void LuoVirukset(Vector paikka, double leveys, double korkeus)
185    {
186        virus = new PhysicsObject(25, 25);
187        virus.Position = paikka;
188        virus.Shape = Shape.Circle;
189        virus.Color = Color.Red;
190        virus.Tag = "virus";
191        Add(virus);
192        Vector impulssi = new Vector(0, 250.0);
193        virus.Hit(impulssi);
194        virus.Restitution = 1.0;
195
196        virukset.Add(virus);
197
198        Timer ajastin = new Timer();
199        ajastin.Tag = virus;
200        ajastin.Interval = 10;
201        ajastin.Trigger += LisaaVauhtia;
202        ajastin.Start();
203    }
204
205    void LuoMaali(Vector paikka, double leveys, double korkeus)
206    {
207        PhysicsObject maali = new PhysicsObject(140, 170);
208        maali.Position = paikka;
209        maali.IgnoresCollisionResponse = true;
210        maali.Shape = Shape.Rectangle;
211        maali.Color = Color.ForestGreen;
212        AddCollisionHandler(maali, Maali);
213       
214        Add(maali, -1);
215
216    }
217
218
219    void LisaaVauhtia(Timer sender)
220    {
221        PhysicsObject virus = sender.Tag as PhysicsObject;
222
223        Vector impulssi = new Vector(0, 150.0);
224        virus.Hit(impulssi);
225    }
226
227    void Ohjaus()
228    {
229        Keyboard.Listen(Key.Space, ButtonState.Pressed, Valikko, "Palaa valikkoon");
230
231        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
232
233        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000, 0));
234        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
235        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(1000, 0));
236        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
237        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 1000));
238        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
239        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
240        Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
241    }
242
243    void PysaytaPelaaja(Vector Zero)
244    {
245        pelaaja.Velocity = Zero;
246    }
247
248    void Maali(PhysicsObject pelaaja, PhysicsObject maali)
249    {
250        MessageDisplay.Add("Stage Cleared, You Won!");
251        MessageDisplay.TextColor = Color.Yellow;
252        rajaytaVirukset();
253        aikaLaskuri.Stop();
254    }
255   
256    void KasitteleTormays(PhysicsObject pelaaja, PhysicsObject kohde)
257    {
258        if (kohde.Tag.ToString() == "palikka" || kohde.Tag.ToString() == "virus")
259        {
260            int pMaxMaara = 50;
261            ExplosionSystem valo =
262                new ExplosionSystem(rajahdysKuva, pMaxMaara);
263            Add(valo);
264            MessageDisplay.Add("Game Over");
265            MessageDisplay.TextColor = Color.Red;
266
267
268            int pMaara = 3;
269
270            valo.AddEffect(pelaaja.Position.X, pelaaja.Position.Y, pMaara);
271
272            pelaaja.Destroy();
273           
274        }
275    }
276
277    void LuoAikaLaskuri()
278    {
279        aikaLaskuri = new Timer();
280        aikaLaskuri.Interval = 1;
281        aikaLaskuri.Start();
282        //aikaLaskuri.Trigger += AikaLoppui;
283       
284       
285        Label aikaNaytto = new Label();
286        aikaNaytto.TextColor = Color.Yellow;
287        aikaNaytto.DecimalPlaces = 2;
288        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
289        aikaNaytto.Y = Level.Top - 100;
290        Add(aikaNaytto);
291    }
292
293    void AikaLoppui(Timer ajastin)
294    {
295        MessageDisplay.Add("Game Over");
296        MessageDisplay.Color = Color.Red;
297        ajastin.Stop();
298    }
299
300    void AloitaAlusta()
301    {
302        ClearAll();
303        LuoKentta("kentta.txt");
304        Ohjaus();
305        Keyboard.Listen(Key.Enter, ButtonState.Down, AloitaAlusta, "Restart");
306
307    }
308
309    void AloitaSurAlusta()
310    {
311        ClearAll();
312        LuoKentta("SurvivalMode.txt");
313        Ohjaus();
314        Keyboard.Listen(Key.Enter, ButtonState.Down, AloitaSurAlusta, "Restart");
315       
316    }
317
318    void rajaytaVirukset()
319    {
320        for (int i = virukset.Count-1; i > -1; i--)
321        {
322            int pMaxMaara = 75;
323            ExplosionSystem valo2 =
324                new ExplosionSystem(virustenRajaytys, pMaxMaara);
325            Add(valo2);
326            int pMaara = 3;
327            valo2.AddEffect(virukset[i].Position.X, virukset[i].Position.Y, pMaara);
328            virukset[i].Destroy();
329            virukset.RemoveAt(i);
330        }
331
332    }
333
334}
Note: See TracBrowser for help on using the repository browser.