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

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