source: 2015/27/EemilI/infected - Copy/infected/infected/infected.cs @ 6772

Revision 6772, 11.8 KB checked in by eemikone, 6 years ago (diff)

lelelelelee

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