source: 2015/27/VilleHa/infected - Copy - Copy/infected/infected/infected.cs @ 6800

Revision 6800, 13.8 KB checked in by vivahann, 4 years ago (diff)

Da game is Redeeeh

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class infected : PhysicsGame
10{
11    PhysicsObject mies;
12    Image mieskuva = LoadImage("mieskuva");
13    Image seinakuva = LoadImage("seina");
14    Image zombikuva = LoadImage("zombi");
15    Image valikkokuva = LoadImage("valikkokuva");
16    Image asekuva = LoadImage("ak47");
17    Image pistoolikuva = LoadImage("JuanDeag");
18    Image halekuva = LoadImage("shotfun");
19    Image lappukuva = LoadImage("lappu");
20    IntMeter pistelaskuri;
21    IntMeter lappulaskuri;
22
23    AssaultRifle ase;
24   
25    List<Vector> spawnipaikat = new List<Vector>();
26    List<Vector> lappujenspawnipaikat = new List<Vector>();
27    List<Label> valikonKohdat;
28
29    public override void Begin()
30    {
31     
32        Valikko();
33        IsFullScreen = true;
34        SmoothTextures = true;
35        MediaPlayer.Play("Volatile Reaction");
36
37    }
38    void LuoHahmo(Vector paikka, double leveys, double korkeus)
39    {
40        mies = new PhysicsObject(mieskuva);
41        mies.Size = new Vector(50, 50);
42        mies.Position = paikka;
43        mies.LinearDamping = 0.1;
44        Add(mies);
45        AddCollisionHandler(mies, "zombi", PelaajaKuolee);
46        AddCollisionHandler(mies, "lappu", KeraaLappu);
47        mies.CollisionIgnoreGroup = 3;
48       
49
50        ase = new AssaultRifle(50,6);
51        ase.Image = asekuva;
52        ase.Position= new Vector(25, 15);
53        ase.InfiniteAmmo = true;
54        ase.AttackSound = null;
55        mies.Add(ase);
56        VaihdaAse("pistooli");
57        //Light valo = new Light();
58        //valo.Intensity = 1.0;
59        //valo.Distance = 150;
60        //valo.Position = mies.Position;
61        //Add(valo);
62
63        //Timer siirrin = new Timer();
64        //siirrin.Interval = 0.05;
65        //siirrin.Timeout += delegate { valo.Position = mies.Position; };
66        //siirrin.Start();
67       
68    }
69
70
71    void LuoKentta()
72    {
73        ColorTileMap mappi = ColorTileMap.FromLevelAsset("mappi");
74        mappi.SetTileMethod(Color.FromHexCode("4CFF00"), LuoSpawn);
75        mappi.SetTileMethod(Color.Black, LuoTaso);
76        mappi.SetTileMethod(Color.Red, LuoHahmo);
77        mappi.SetTileMethod(Color.FromHexCode("7F0000"), LuoTurvaSeina);
78        mappi.SetTileMethod(Color.Orange, LuoLappu);
79        mappi.Execute(40, 40);
80        LuoPisteLaskuri();
81        LuoLappuLaskuri();
82        Level.AmbientLight = 0.5;
83       
84
85
86        for (int i = 0; i < 15; i++)
87        {
88            LuoUusiZombi();
89
90        }
91
92
93        Level.CreateBorders();
94        Camera.Follow(mies);
95        Camera.StayInLevel = true;
96        Camera.Zoom(1.0);
97
98        GameObject tausta = new GameObject(Level.Width, Level.Height);
99        tausta.Color = Color.Black;
100        Add(tausta, -3);
101    }
102
103    void LuoTaso(Vector paikka, double leveys, double korkeus)
104    {
105        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
106        taso.Position = paikka;
107        taso.Color = Color.Black;
108        taso.Image = seinakuva;
109        taso.CollisionIgnoreGroup = 1;
110        Level.Background.Color = Color.Black;
111        Add(taso);
112    }
113    void kontrollit()
114    {
115        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, 3000.0, 1);
116        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, 3000.0, 2);
117        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, 3000.0, 3);
118        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, 3000.0, 4);
119        Keyboard.Listen(Key.D1, ButtonState.Pressed, VaihdaAse, "Ota pistooli esille", "pistooli");
120        Keyboard.Listen(Key.E, ButtonState.Pressed, kauppa, "Avaa kaupan");
121        Mouse.ListenMovement(0.0, Tahtays, null);
122        Mouse.IsCursorVisible = true;
123        Mouse.Listen(MouseButton.Left, ButtonState.Down, Ampuminen, null);
124
125        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "InfoIkkuna");
126        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
127    }
128    void LiikutaPelaajaa(double nopeus, int liikkuminen)
129    {
130        switch (liikkuminen)
131        {
132            case 1:
133                mies.Move(Vector.FromLengthAndAngle(nopeus, mies.Angle));
134                break;
135            case 2:
136                mies.Move(-Vector.FromLengthAndAngle(nopeus, mies.Angle));
137                break;
138            case 3:
139                mies.Move(Vector.FromLengthAndAngle(nopeus, mies.Angle - Angle.FromDegrees(90)));
140                break;
141            case 4:
142                mies.Move(Vector.FromLengthAndAngle(nopeus, mies.Angle - Angle.FromDegrees(-90)));
143                break;
144            default:
145                break;
146        }
147    }
148    void Tahtays(AnalogState hiirenTila)
149    {
150        Vector suunta = Mouse.PositionOnWorld - mies.Position;
151        mies.Angle = suunta.Angle;
152    }
153    void LuoAikaLaskuri()
154    {
155        Timer aikaLaskuri = new Timer();
156
157
158        aikaLaskuri.Interval = 10;
159        aikaLaskuri.Timeout += LuoUusiZombi;
160        aikaLaskuri.Start();
161
162        Timer lappuAjastin = new Timer();
163        lappuAjastin.Interval = 30;
164        lappuAjastin.Timeout += LuoUusiLappu;
165        lappuAjastin.Start();
166
167        Label aikaNaytto = new Label();
168        aikaNaytto.X = Screen.Left + 100;
169        aikaNaytto.Y = Screen.Top - 100;
170        aikaNaytto.TextColor = Color.White;
171        aikaNaytto.DecimalPlaces = 1;
172        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
173        Add(aikaNaytto);
174    }
175    void LuoZombi(Vector paikka)
176    {
177        PhysicsObject zombi = new PhysicsObject(40, 40);
178        zombi.Tag = "zombi";
179        zombi.Position = paikka;
180        zombi.Image = zombikuva;
181        Add(zombi);
182
183        FollowerBrain seuraajanAivot = new FollowerBrain(mies);
184        seuraajanAivot.Speed = 100;
185        seuraajanAivot.DistanceFar = 5000000;
186        zombi.Brain = seuraajanAivot;
187        seuraajanAivot.TurnWhileMoving = true;
188    }
189    void LuoUusiZombi()
190    {
191        int indeksi = RandomGen.NextInt(0, spawnipaikat.Count - 1);
192        Vector paikka = spawnipaikat[indeksi];
193        LuoZombi(paikka);
194
195    }
196    void LuoSpawn(Vector paikka, double leveys, double korkeus)
197    {
198        spawnipaikat.Add(paikka);
199
200    }
201   
202    void Valikko()
203    {
204        ClearAll();
205        Mouse.IsCursorVisible = true;
206       
207
208        valikonKohdat = new List<Label>();
209
210        Label kohta1 = new Label("Aloita uusi peli");
211        kohta1.Position = new Vector(0, 40);
212        kohta1.Color = Color.White;
213        valikonKohdat.Add(kohta1);
214
215       
216
217        Label kohta2 = new Label("Poistu");
218        kohta2.Position = new Vector(0, -40);
219        kohta2.Color = Color.White;
220        valikonKohdat.Add(kohta2);
221
222        Level.Background.Color = Color.Black;
223        Level.Background.Image = valikkokuva;
224        Camera.Zoom (1.65);
225
226        foreach (Label valikonKohta in valikonKohdat)
227        {
228            Add(valikonKohta);
229        }
230
231
232        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
233       
234        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
235
236        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
237
238    }
239    void AloitaPeli()
240    {
241        ClearAll();
242        LuoKentta();
243       
244        kontrollit();
245        LuoAikaLaskuri();
246       
247        MessageDisplay.MessageTime = new TimeSpan(0, 0, 10);
248        MessageDisplay.TextColor = Color.White;
249       
250       
251    }
252   
253
254    void ValikossaLiikkuminen(AnalogState hiirenTila)
255    {
256        foreach (Label kohta in valikonKohdat)
257        {
258            if (Mouse.IsCursorOn(kohta))
259            {
260                kohta.TextColor = Color.Red;
261            }
262            else
263            {
264                kohta.TextColor = Color.Black;
265            }
266
267        }
268    }
269    void PelaajaKuolee(PhysicsObject mies, PhysicsObject zombi)
270    {
271        ase.InfiniteAmmo = false;
272        ase.Ammo.Value = 0;
273        ase.Destroy();
274        mies.Destroy();
275        Timer.SingleShot(1, Valikko);
276    }
277   
278    void LuoPisteLaskuri()
279    {
280        pistelaskuri = new IntMeter(0);
281
282        Label pisteNaytto = new Label();
283        pisteNaytto.X = Screen.Right - pisteNaytto.Width;
284        pisteNaytto.Y = Screen.Top - pisteNaytto.Height*2;
285        pisteNaytto.TextColor = Color.White;
286        pisteNaytto.Color = Color.Black;
287       
288
289        pisteNaytto.BindTo(pistelaskuri);
290        Add(pisteNaytto);
291
292        pisteNaytto.IntFormatString = "Rahaa: {0:D4}$";
293    }
294    void Ampuminen()
295    {
296        PhysicsObject ammus = ase.Shoot();
297        if (ammus != null)
298
299        {
300            AddCollisionHandler(ammus, AmmusOsuu);
301            ammus.CollisionIgnoreGroup = 3;
302           
303           
304            switch (ase.Tag.ToString())
305            {
306                case "ak47":
307                   
308
309                    break;
310                case "haulikko":
311                   
312                    break;
313                case "pistooli":
314                     
315                    break;
316                default:
317                    break;
318            }
319
320        }
321       
322
323    }
324    void VaihdaAse(String aseenNimi)
325    {
326        switch (aseenNimi)
327        {
328            case "ak47":
329                ase.Image = asekuva;
330                ase.FireRate = 7;
331                ase.AttackSound = LoadSoundEffect("m4");
332                break;
333            case "pistooli":
334                ase.Image = pistoolikuva;
335                ase.FireRate = 4;
336                ase.Size = new Vector(pistoolikuva.Width, pistoolikuva.Height)*4;
337                ase.AttackSound = LoadSoundEffect("pistol");
338                break;
339            case "haulikko":
340                ase.Image = halekuva;
341                ase.FireRate = 2;
342                ase.AttackSound = LoadSoundEffect("hale");
343                break;
344            default:
345                break;
346        }
347        ase.Tag = aseenNimi;
348
349    }
350    void AmmusOsuu(PhysicsObject a, PhysicsObject b)
351    {
352        if (b.Tag == "zombi")
353        {
354            switch (ase.Tag.ToString())
355            {
356                case "ak47":
357                    if (RandomGen.NextInt(0, 100) > 25)
358                    {
359                        pistelaskuri.Value += RandomGen.NextInt(1, 10);
360                        b.Destroy();
361                    }
362                   
363                    break;
364                case "haulikko":
365                    if (RandomGen.NextInt(0, 100) > 40)
366                    {
367                        pistelaskuri.Value += RandomGen.NextInt(1, 10);
368                        b.Destroy();
369                    }
370
371                    break;
372                case "pistooli":
373                    if (RandomGen.NextInt(0, 100) > 60)
374                    {
375                        pistelaskuri.Value += RandomGen.NextInt(1, 10);
376                        b.Destroy();
377                    }
378
379                    break;
380                default:
381                    break;
382            }
383           
384           
385        }
386        a.Destroy();
387    }
388    void LuoTurvaSeina(Vector paikka, double leveys, double korkeus)
389    {
390        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
391        taso.Position = paikka;
392        taso.IsVisible = false;
393       
394        taso.CollisionIgnoreGroup = 3;
395        Level.Background.Color = Color.Black;
396        Add(taso);
397    }
398    void kauppa()
399    {
400        IsPaused = true;
401        MultiSelectWindow kauppa = new MultiSelectWindow("Kauppa", "haulikko 100$","ak-47 250$", "Exit");
402        kauppa.AddItemHandler(0, delegate
403        {
404            if (pistelaskuri.Value >= 100)
405            {
406                pistelaskuri.Value -= 100;
407                Keyboard.Listen(Key.D2, ButtonState.Pressed, VaihdaAse, "Ota haulikko esille", "haulikko");
408            }
409            IsPaused = false;
410        });
411        kauppa.AddItemHandler(1, delegate
412        {
413            if (pistelaskuri.Value >= 250)
414            {
415                pistelaskuri.Value -= 250;
416                Keyboard.Listen(Key.D3, ButtonState.Pressed, VaihdaAse, "Ota ak-47 esille", "ak47");
417            }
418            IsPaused = false;
419        });
420       
421        kauppa.AddItemHandler(2, delegate
422        {
423            IsPaused = false;
424        });
425        Add(kauppa);
426    }
427    void LuoLappu(Vector paikka, double leveys, double korkeus)
428    {
429       
430            lappujenspawnipaikat.Add(paikka);
431
432       
433    }
434    void LuoLappuLaskuri()
435    {
436        lappulaskuri = new IntMeter(0,0,20);
437
438        Label lappunaytto = new Label();
439        lappunaytto.X = Screen.Right - lappunaytto.Width;
440        lappunaytto.Y = Screen.Top - 75;
441        lappunaytto.TextColor = Color.White;
442        lappunaytto.Color = Color.Black;
443
444        lappulaskuri.UpperLimit += KaikkiLaputKeratty;
445
446        lappunaytto.BindTo(lappulaskuri);
447        Add(lappunaytto);
448
449        lappunaytto.IntFormatString = "Laput: {0:D1}/10";
450    }
451    void LuoUusiLappu()
452    {
453        int indeksi = RandomGen.NextInt(0, lappujenspawnipaikat.Count - 1);
454        Vector paikka = lappujenspawnipaikat[indeksi];
455        LuoLappu(paikka);
456
457    }
458    void LuoLappu(Vector paikka)
459    {
460        PhysicsObject lappu = new PhysicsObject(40, 40);
461        lappu.Tag = "lappu";
462        lappu.Position = paikka;
463        lappu.Image = lappukuva;
464       
465        Add(lappu);
466    }
467    void KaikkiLaputKeratty()
468    {
469        MessageDisplay.Add("Keräsit kaikki laput...");
470        MessageDisplay.Add("Voit jatkaa jos haluat");
471    }
472    void KeraaLappu(PhysicsObject pelaaja,PhysicsObject lappu)
473    { 
474    MessageDisplay.Add("Keräsit lapun");
475    lappulaskuri.Value++;
476    lappu.Destroy();
477    }
478}
Note: See TracBrowser for help on using the repository browser.