source: 2012/26/MikaL/Zombie Survival/Zombie Survival/Zombie Survival/Zombie_Survival.cs @ 3322

Revision 3322, 13.9 KB checked in by mitokalu, 9 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10class Zombi : PhysicsObject
11{
12    public IntMeter zhp = new IntMeter(3,0,3);
13
14    public Zombi(double leveys, double korkeus)
15        : base(leveys, korkeus)
16    {
17        zhp.LowerLimit += delegate { this.Destroy();};
18    }
19}
20
21public class Zombie_Survival : PhysicsGame
22{
23    ScoreList topLista = new ScoreList(10, false, 0);
24
25    PhysicsObject p1;
26    PhysicsObject p2;
27    IntMeter p1_ammo;
28    IntMeter p1_lipas;
29
30    Label lataa;
31
32        IntMeter killLaskuri;
33        IntMeter rahaLaskuri;
34    IntMeter multiplayer;
35
36
37    AssaultRifle ak1;
38    AssaultRifle ak2;
39
40
41    Vector nopeusVasen = new Vector(-300, 0);
42    Vector nopeusOikea = new Vector(300, 0);
43    Vector nopeusYlos = new Vector(0, 200);
44    Vector nopeusAlas = new Vector(0, -200);
45    //Map
46    Image map = LoadImage("map");
47    Image bg = LoadImage("bg");
48    //Aseet
49    Image miniak = LoadImage("miniak47");
50    //player 1
51    Image p1_oikea = LoadImage("p1_oikea_new");
52    Image p1_vasen = LoadImage("p1_vasen");
53    Image p1_ylos = LoadImage("p1_ylos");
54    Image p1_alas = LoadImage("p1_alas");
55    //player 2
56    Image p2_oikea = LoadImage("p2_oikea");
57    Image zombie_skin = LoadImage("zombie_skin");
58
59    public override void Begin()
60    {
61        SetWindowSize(1280, 1024, false);
62        if (DataStorage.Exists("pisteet.xml")) topLista = DataStorage.Load<ScoreList>(topLista, "scores.xml");
63
64        multiplayer = new IntMeter(0);
65        Valikko();
66        //player1();
67        //player2();
68       
69        //ZombieSpawn();
70
71        //PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
72    }
73    void StartGame()
74    {
75        ui();
76        LuoMap();
77        controls();
78       
79                LuoKillLaskuri();
80                LuoRahalaskuri();
81    }
82    void Start2Game()
83    {
84        multiplayer = new IntMeter(1);
85        ui();
86        LuoMap();
87        controls();
88        LuoKillLaskuri();
89        LuoRahalaskuri();
90    }
91    void Valikko()
92    {
93        MultiSelectWindow alkuValikko = new MultiSelectWindow("Zombie Survival","Singleplayer", "2-player", "Scores", "Exit");
94        Add(alkuValikko);
95        alkuValikko.ItemSelected += PainettiinValikonNappia;
96    }
97    void PainettiinValikonNappia(int valinta)
98    {
99        switch (valinta)
100        {
101            case 0:
102                StartGame();
103                break;
104            case 1:
105                Start2Game();
106                break;
107            case 2:
108                HighScores();
109                break;
110            case 3:
111                Exit();
112                break;
113        }
114    } 
115
116    void LuoMap()
117    {
118        SetWindowSize(1280, 1024, false);
119        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("map");
120        ruudut.SetTileMethod(Color.Black, TeeSeina);
121        ruudut.SetTileMethod(Color.Red, TeeOvi);
122        ruudut.SetTileMethod(Color.Blue, TeeP1);
123        if(multiplayer == 1) ruudut.SetTileMethod(Color.Yellow, TeeP2);
124        ruudut.SetTileMethod(Color.Green, ZombieSpawn);
125        ruudut.Execute(20, 20);
126        Level.CreateBorders(false);
127        Image lol = Image.FromGradient(2048, 2048, Color.DarkGray, Color.DarkGray);
128        Level.Background.Image = lol;
129        Camera.ZoomToLevel();
130       
131       
132    }
133    void TeeSeina(Vector paikka, double leveys, double korkeus)
134    {
135        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
136        taso.Position = paikka;
137        taso.Shape = Shape.Rectangle;
138        taso.Color = Color.Black;
139        Add(taso);
140
141    }
142    void TeeOvi(Vector paikka, double leveys, double korkeus)
143    {
144        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
145        ovi.Position = paikka;
146        ovi.Shape = Shape.Rectangle;
147        ovi.Color = Color.Red;
148        ovi.Tag = "ovi";
149        Add(ovi);
150    }
151    void TeeP1(Vector paikka, double leveys, double korkeus)
152    {
153        p1 = new PhysicsObject(45, 45);
154        p1.Shape = Shape.Circle;
155        p1.Image = p1_oikea;
156        p1.CanRotate = false;
157        p1.Restitution = 0;
158        p1.Position = paikka;
159        p1.Tag = "living";
160        Add(p1);
161        ak1 = new AssaultRifle(20, 20);
162        ak1.Image = null;
163        ak1.Color = Color.Transparent;
164        ak1.ProjectileCollision = AmmusOsui;
165        ak1.Ammo.Value = p1_lipas.Value;
166        p1.Add(ak1);
167    }
168    void TeeP2(Vector paikka, double leveys, double korkeus)
169    {
170        p2 = new PhysicsObject(45, 45);
171        p2.Shape = Shape.Circle;
172        p2.Image = p2_oikea;
173        p2.CanRotate = false;
174        p2.Position = paikka;
175        p2.Tag = "living";
176        p2.Restitution = 0;
177        Add(p2);
178        ak2 = new AssaultRifle(20, 20);
179        ak2.Image = null;
180        ak2.Color = Color.Transparent;
181        p2.Add(ak2);
182    }
183    void ZombieSpawn(Vector paikka, double leveys, double korkeus)
184    {
185        Zombi z1 = new Zombi(45, 38);
186        z1.Position = paikka;
187        FollowerBrain zombinAivot = new FollowerBrain("living");
188        z1.Shape = Shape.Circle;
189        z1.Image = zombie_skin;
190        z1.CanRotate = false;
191        z1.Restitution = 0;
192        z1.Brain = zombinAivot;
193        AddCollisionHandler(z1, ZombieHit);
194        z1.Tag = "zombitag";
195        Add(z1);
196    }
197    //void player1()
198    //{
199    //    p1 = new PhysicsObject(45, 45);
200    //    p1.Shape = Shape.Circle;
201    //    p1.Image = p1_oikea;
202    //    p1.CanRotate = false;
203    //    p1.Restitution = 0;
204
205    //}
206    //void player2()
207    //{
208    //    p2 = new PhysicsObject(45, 45);
209    //    p2.Shape = Shape.Circle;
210    //    p2.Image = p2_oikea;
211    //    p2.CanRotate = false;
212    //    p2.X = -50;
213    //    p2.Restitution = 0;
214    //}
215    //void Zombie()
216    //{
217    //    z1 = new PhysicsObject(45, 38);
218    //    z1.X = 150;
219    //    z1.Shape = Shape.Circle;
220    //    z1.Image = zombie_skin;
221    //    z1.CanRotate = false;
222    //    z1.Restitution = 0;
223    //    Add(z1);
224 
225    //}
226    void controls()
227    {
228        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
229
230        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, null, p1, nopeusYlos);
231        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, p1, Vector.Zero);
232
233        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, null, p1, nopeusVasen);
234        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, p1, Vector.Zero);
235
236        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, null, p1, nopeusAlas);
237        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, p1, Vector.Zero);
238
239        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, null, p1, nopeusOikea);
240        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, p1, Vector.Zero);
241
242        Keyboard.Listen(Key.Space, ButtonState.Pressed, AvaaOvi, null, p1);
243        Mouse.Listen(MouseButton.Left, ButtonState.Down, Shoot, null, p1);
244       
245        Keyboard.Listen(Key.R, ButtonState.Pressed, Reload, null, p1);
246       
247
248        ControllerOne.Listen(Button.Start, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
249
250        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, null, p2, nopeusYlos);
251        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, p2, Vector.Zero);
252
253        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, null, p2, nopeusAlas);
254        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, p2, Vector.Zero);
255
256        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, AsetaNopeus, null, p2, nopeusVasen);
257        ControllerOne.Listen(Button.DPadLeft, ButtonState.Released, AsetaNopeus, null, p2, Vector.Zero);
258
259        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, AsetaNopeus, null, p2, nopeusOikea);
260        ControllerOne.Listen(Button.DPadRight, ButtonState.Released, AsetaNopeus, null, p2, Vector.Zero);
261
262        ControllerOne.Listen(Button.Y, ButtonState.Pressed, AvaaOvi, null, p2);
263
264    }
265    void ui()
266    {
267
268        //p1_hp
269        DoubleMeter p1_hp = new DoubleMeter(100);
270        Label player1 = new Label("Player 1");
271        player1.X = Screen.Left + 40;
272        player1.Y = Screen.Top - 15;
273        p1_hp.MaxValue = 100;
274        ProgressBar p1_hpPalkki = new ProgressBar(170, 20);
275        p1_hpPalkki.BindTo(p1_hp);
276        p1_hpPalkki.X = Screen.Left + 180;
277        p1_hpPalkki.Y = Screen.Top - 15;
278        p1_hpPalkki.BarImage = LoadImage("fullbar");
279        Add(player1);
280        Add(p1_hpPalkki);
281
282        //p1_ammo
283        p1_ammo = new IntMeter(280);
284        p1_lipas = new IntMeter(30);
285        Label p1_ammo_label = new Label();
286        Label vali = new Label("/");
287        Label p1_ammo_lipas = new Label();
288        p1_ammo_lipas.BindTo(p1_lipas);
289        p1_ammo_label.BindTo(p1_ammo);
290        p1_ammo_lipas.Y = Screen.Top - 60;
291        p1_ammo_lipas.X = - 35;
292        vali.Y = Screen.Top - 60;
293        vali.X = -20;
294        p1_ammo_label.Y = Screen.Top - 60;
295        p1_ammo_label.X = 5;
296        Add(p1_ammo_lipas);
297        Add(vali);
298        Add(p1_ammo_label);
299
300        //Ase
301        GameObject aseenkuva = new GameObject(90,27);
302        aseenkuva.Image = miniak;
303        aseenkuva.Y = Screen.Top - 15;
304        aseenkuva.X = -17;
305        Add(aseenkuva);
306        if (multiplayer == 0) return;
307
308        //p2_hp
309        DoubleMeter p2_hp = new DoubleMeter(100);
310        Label player2 = new Label("Player 2");
311        player2.X = Screen.Left + 40;
312        player2.Y = Screen.Top - 40;
313        p2_hp.MaxValue = 100;
314        ProgressBar p2_hpPalkki = new ProgressBar(170, 20);
315        p2_hpPalkki.BindTo(p2_hp);
316        p2_hpPalkki.X = Screen.Left + 180;
317        p2_hpPalkki.Y = Screen.Top - 40;
318        p2_hpPalkki.BarImage = LoadImage("fullbar");
319        Add(p2_hpPalkki);
320        Add(player2);   
321    }
322       
323        void LuoKillLaskuri()
324        {
325        killLaskuri = new IntMeter(0);
326        Label killNaytto = new Label();
327        Label Kills = new Label("Kills:");
328        Kills.X = Screen.Right - 190;
329        Kills.Y = Screen.Top - 15;
330        killNaytto.X = Screen.Right - 100;
331        killNaytto.Y = Screen.Top - 15;
332        killNaytto.TextColor = Color.Black;
333        killNaytto.BindTo(killLaskuri);
334        Add(Kills);
335        Add(killNaytto);
336        }
337
338    void LuoRahalaskuri()
339    {
340        rahaLaskuri = new IntMeter(1000);
341        Label rahaNaytto = new Label();
342        Label Money = new Label("Money:");
343        Money.X = Screen.Right - 201;
344        Money.Y = Screen.Top - 39;
345        rahaNaytto.X = Screen.Right - 100;
346        rahaNaytto.Y = Screen.Top - 40;
347        rahaNaytto.TextColor = Color.Black;
348        rahaNaytto.BindTo(rahaLaskuri);
349        Add(Money);
350        Add(rahaNaytto);
351    }
352    void AsetaNopeus(PhysicsObject player, Vector nopeus)
353    {
354        player.Velocity = nopeus;
355        if (nopeus.Magnitude == 0)
356        {
357            return;
358        }
359        player.Angle = nopeus.Angle;
360        OvenLahella(player);
361    }
362    void Shoot(PhysicsObject pelaaja)
363    {
364        if (pelaaja == p1)
365        {
366           PhysicsObject ammus = ak1.Shoot();
367            if(ammus != null) p1_lipas.Value--;
368        }
369    }
370    void ZombieHit(PhysicsObject zombi, PhysicsObject kohde)
371    {
372       
373    }
374    void LuoAikaLaskuri()
375    {
376        Timer aikaLaskuri = new Timer();
377        aikaLaskuri.Start();
378
379        Label aikaNaytto = new Label();
380        aikaNaytto.TextColor = Color.Red;
381        aikaNaytto.DecimalPlaces = 1;
382        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
383        Add(aikaNaytto);
384    }
385    void AvaaOvi(PhysicsObject pelaaja)
386    {
387        GameObject ovi = GetObjectAt(pelaaja.Position, "ovi", 35);
388        if (ovi == null) return;
389        else if (rahaLaskuri > 149) 
390        {
391            ovi.Destroy();
392            rahaLaskuri.Value -= 150;
393        }
394        else return;
395    }
396    void OvenLahella(PhysicsObject pelaaja)
397    {
398        GameObject ovi = GetObjectAt(pelaaja.Position, "ovi", 35);
399        Label hinta;
400        Label hinta2;
401        if (ovi == null) return;
402        if (multiplayer == 0)
403        {
404            hinta = new Label("Press Space to open one block of the door.");
405            hinta2 = new Label("$150 per block");
406            hinta.X = -20;
407            hinta2.Y = -20;
408            Add(hinta);
409            Add(hinta2);
410        }
411        else
412        {
413            hinta = new Label("Press Space or Y to open one block of the door.");
414            hinta2 = new Label("$150 per block");
415            hinta.X = -20;
416            hinta2.Y = -20;
417            Add(hinta);
418            Add(hinta2);
419        }
420        hinta.MaximumLifetime = TimeSpan.FromSeconds(1);
421        hinta2.MaximumLifetime = TimeSpan.FromSeconds(1);
422       
423    }
424    void HighScores()
425    {
426        HighScoreWindow topIkkuna = new HighScoreWindow("Parhaat pisteet", topLista);
427        topIkkuna.Closed += MeneValikkoon;
428        Add(topIkkuna);
429
430    }
431    void MeneValikkoon(Window sender)
432    {
433        Valikko();
434    }
435    void Reload(PhysicsObject pelaaja)
436    {
437        if (p1_ammo > 29 && p1_lipas == 0)
438        {
439            p1_ammo.Value -= 30;
440            p1_lipas.Value += 30;
441            ak1.Ammo.Value = p1_lipas.Value;
442        }
443        if (p1_lipas == 0)
444        {
445            lataa = new Label("Reload");
446            lataa.MaximumLifetime = TimeSpan.FromSeconds(1);
447            Add(lataa);
448
449        }
450    }
451    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
452    {
453        ammus.Destroy();
454        Explosion rajahdys = new Explosion(10);
455        rajahdys.Position = ammus.Position;
456        Add(rajahdys);
457        if (kohde.Tag == "zombitag")
458        {
459            Zombi z1 = kohde as Zombi;
460            z1.zhp.Value--;
461        }
462       
463    }
464}
Note: See TracBrowser for help on using the repository browser.