source: 2014/23/OtsoL/Are you alone/Are you alone/Are you alone/Are_you_alone.cs @ 4884

Revision 4884, 22.8 KB checked in by anlakane, 7 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Are_you_alone : TopDownPhysicsGame
10{
11    //tähän kuvat, äänet, nopeudet, voimat ja muut shitit :DD
12
13   
14
15    Image ensimmäinenseinänkuva = LoadImage("seina1");
16    Image toinenseinänkuva = LoadImage("seina2");
17    Image Ajkuvaeka = LoadImage("AJ (aitojäbä) (player1) (pelaaja1) flipped");
18    Image Ajkuvatoka = LoadImage("AJ (aitojäbä) (player1) (pelaaja1)");
19    Image avaimenkuva = LoadImage("avain");
20    Image ajkuva = LoadImage("AJ kuvake");
21    Image normiovenkuva = LoadImage("valmisovenkuva");
22    Image spessuovenkuva = LoadImage("demonovi");
23    Image harmaatausta = LoadImage("background");
24    Image kulmaekak = LoadImage("kulma1");
25    Image kulmatokak = LoadImage("kulma2");
26    Image kulmakolmek = LoadImage("kulma3");
27    Image kulmaneljäk = LoadImage("kulma4");
28    Image thwompkuva = LoadImage("thwomp");
29    Image teleporttaajankuva = LoadImage("slenderman");
30    Image liekki = LoadImage("soextreme");
31    Image seuraajakuva = LoadImage("jahtaaja");
32    Image ampujaK = LoadImage("ampuja");
33    Image isovovi = LoadImage("isokenttaovi");
34    Image paristok = LoadImage("paristo");
35    Image superparistok = LoadImage("super paristo");
36    Image pianonkuva = LoadImage("piano");
37    Image tynnyrinkuva = LoadImage("barrel");
38    Image eskuva = LoadImage("ES");
39    Image kirjak = LoadImage("bookself");
40    Image spessuK = LoadImage("demon key");
41
42    SoundEffect roar1 = LoadSoundEffect("monter roar");
43    SoundEffect comeon = LoadSoundEffect("come_on_1");
44    SoundEffect ajhuuto = LoadSoundEffect("AJhuuto");
45
46    private PhysicsObject aj;
47    Vihollinen vihollinen;
48    private List<Vihollinen> listaVihollisista = new List<Vihollinen>();
49    int kenttanumero = 3;
50    int esnumero = 0;
51
52    IntMeter avainlaskuri;
53    IntMeter paristo;
54    IntMeter spessuavainmittari;
55
56    public override void Begin()
57    {
58
59        // TODO: Kirjoita ohjelmakoodisi tähän
60        luokentta(kenttanumero);
61       
62    }
63
64    void luokentta(int kenttanumero)
65    {
66        ClearAll();
67        esnumero = 0;
68        Level.Background.Color = new Color(0, 0, 0);
69        String kentanNimi = "corridor";
70        String viesti = "";
71
72        if(kenttanumero == 0)
73        {
74            viesti = "chapter one: The corridor";
75            MediaPlayer.Play("old chateau");
76            MediaPlayer.IsRepeating = true;
77        }
78        if (kenttanumero == 1)
79        {
80           
81            kentanNimi = "mainhall";
82            viesti = "chapter two: The main hall";
83            MediaPlayer.Play("lavendertown");
84            MediaPlayer.IsRepeating = true;
85        }
86        if (kenttanumero == 2)
87        {
88            MediaPlayer.Play("pokemon xy scary");
89            MediaPlayer.IsRepeating = true;
90            kentanNimi = "winecellar";
91            viesti = "chapter three: The wine cellar";
92        }
93        if (kenttanumero == 3)
94        {
95            MediaPlayer.Play("strange house");
96            MediaPlayer.IsRepeating = true;
97            kentanNimi = "laibrari";
98            viesti = "chapter four: The library";
99        }
100        if (kenttanumero == 4)
101        {
102            MediaPlayer.Play("final run");
103            MediaPlayer.IsRepeating = true;
104            kentanNimi = "final chapter";
105            viesti = "chapter five: The final run";
106        }
107        if (kenttanumero == 5)
108        {
109            MediaPlayer.Play("mario kart");
110            MediaPlayer.IsRepeating = true;
111            kentanNimi = "credits";
112            viesti = "thanks for playing! :P";
113        }
114        MessageWindow koridor = new MessageWindow(viesti);
115        koridor.BorderColor = Color.Green;
116        koridor.Color = Color.Red;
117        Add(koridor);
118
119        aj = new PhysicsObject(1, 1);
120
121        ColorTileMap map = ColorTileMap.FromLevelAsset(kentanNimi);
122        map.SetTileMethod(new Color(100, 100, 100), luoAj, aj);
123        map.SetTileMethod(new Color(110, 200, 30), luoavain);
124        map.SetTileMethod(new Color(200, 30, 110), luospessuavain);
125        map.SetTileMethod(new Color(255, 0, 0), luonovi);
126        map.SetTileMethod(new Color(0, 0, 255), luolukkovi);
127        map.SetTileMethod(new Color(90, 90, 90), luokenttaovi);
128        map.SetTileMethod(new Color(0, 0, 0), luopitkittäinenseina);
129        map.SetTileMethod(new Color(1, 1, 1), luosivuttainenseina);
130        map.SetTileMethod(new Color(120, 0, 0), luokulmaeka);
131        map.SetTileMethod(new Color(0, 120, 0), luokulmatoka);
132        map.SetTileMethod(new Color(0, 120, 90), luokulmakolmas);
133        map.SetTileMethod(new Color(0, 0, 120), luokulmaneljäs);
134        map.SetTileMethod(new Color(150, 60, 150), luothwomp);
135        map.SetTileMethod(new Color(60, 150, 150), luoteleporttaaja);
136        map.SetTileMethod(new Color(150, 150, 60), luoseuraaja);
137        map.SetTileMethod(new Color(60, 60, 150), luoampuja);
138        map.SetTileMethod(new Color(250, 250, 250), luopatteri);
139        map.SetTileMethod(new Color(255, 255, 255), luosuperpatteri);
140        map.SetTileMethod(new Color(200, 100, 200), luopiano);
141        map.SetTileMethod(new Color(100, 200, 200), luotynnyri);
142        map.SetTileMethod(new Color(220, 50, 100), luoes);
143        map.SetTileMethod(new Color(50, 200, 50), luokirjahylly);
144        map.SetTileMethod(new Color(255, 20, 255), luospessuovi);
145
146
147        luoavainlaskuri();
148        luoparistolaskuri();
149        luospessuavainmittari();
150
151        map.Execute(100, 100);
152
153        if (kenttanumero < 5)
154        {
155            Camera.ZoomFactor = 1.5;
156            Level.AmbientLight = -0.3;
157        }
158        else
159        {
160            Camera.ZoomFactor = 0.3;
161            Level.AmbientLight = 0.6;
162        }
163        Camera.FollowedObject = aj;
164        LuoKontrollit();
165
166        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
167        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
168
169
170    }
171    void luospessuavain(Vector paikka, double leveys, double korkeus)
172    {
173        PhysicsObject spessuavain = new PhysicsObject(100,100);
174        spessuavain.Position = paikka;
175        spessuavain.Image = spessuK;
176        spessuavain.Tag = "spessuavain";
177        Add(spessuavain);
178        AddCollisionHandler(spessuavain, "aj", saitDavaimen);
179    }
180    void saitDavaimen(PhysicsObject spessu, PhysicsObject aj)
181    {
182        MessageDisplay.Add("you found a demon key!");
183        spessuavainmittari.Value = +1;
184        spessu.Destroy();
185    }
186    void luospessuavainmittari()
187    {
188        spessuavainmittari = new IntMeter(0);
189        Label spessunautto = new Label();
190        spessunautto.X = Screen.Left + 90;
191        spessunautto.Y = Screen.Top - 130;
192        spessunautto.TextColor = Color.Red;
193        spessunautto.Color = Color.Black;
194        spessunautto.BindTo(spessuavainmittari);
195        Add(spessunautto);
196    }
197    void luospessuovi(Vector paikka, double leveys, double korkeus)
198    {
199
200        PhysicsObject spessuovi = PhysicsObject.CreateStaticObject(100, 100);
201        spessuovi.Position = paikka;
202        spessuovi.Image = spessuovenkuva;
203        AddCollisionHandler(spessuovi, "aj", spessuovenavaus);
204        Add(spessuovi);
205        AddCollisionHandler(spessuovi, "ammus", ammustuhoutuu);
206    }
207    void spessuovenavaus(PhysicsObject spessuovi, PhysicsObject aj)
208    {
209        if (spessuavainmittari > 0)
210        {
211            MessageDisplay.Add("The demon door opened");
212            spessuovi.Destroy();
213            Timer.SingleShot(1.5, delegate { luonovi(spessuovi.Position, spessuovi.Width, spessuovi.Height); });
214        }
215        else
216        {
217            MessageDisplay.Add("The door is locked");
218        }
219    }
220    void luokirjahylly(Vector paikka, double leveys, double korkeus)
221    {
222        PhysicsObject kirjahylly = PhysicsObject.CreateStaticObject(100, 100);
223        kirjahylly.Position = paikka;
224        kirjahylly.Image = kirjak;
225        kirjahylly.Tag = "kirjahylly";
226        Add(kirjahylly);
227        AddCollisionHandler(kirjahylly, "aj", ajnerokkuudet);
228        AddCollisionHandler(kirjahylly, "ammus", ammustuhoutuu);
229
230    }
231    void luoes(Vector paikka, double leveys, double korkeus)
232    {
233        PhysicsObject ES = new PhysicsObject(40, 80);
234        ES.Position = paikka;
235        ES.Image = eskuva;
236        Add(ES);
237        AddCollisionHandler(ES, "aj", nopeuskasvaa);
238    }
239    void nopeuskasvaa(PhysicsObject es, PhysicsObject mummo)
240    {
241        esnumero++;
242        es.Destroy();
243        Timer.SingleShot(10, delegate { esnumero--; });
244    }
245    void luopiano(Vector paikka, double leveys, double korkeus)
246    {
247        PhysicsObject piano = PhysicsObject.CreateStaticObject(290, 95);
248        piano.Image = pianonkuva;
249        piano.Position = paikka;
250        piano.Tag = "piano";
251        Add(piano);
252        AddCollisionHandler(piano, "aj", ajnerokkuudet);
253    }
254    void luotynnyri(Vector paikka, double leveys, double korkeus)
255    {
256        PhysicsObject tynnyri = PhysicsObject.CreateStaticObject(100, 100);
257        tynnyri.Image = tynnyrinkuva;
258        tynnyri.Position = paikka;
259        tynnyri.Tag = "tynnyri";
260        Add(tynnyri);
261        AddCollisionHandler(tynnyri, "ammus", ammustuhoutuu);
262        AddCollisionHandler(tynnyri, "aj", ajnerokkuudet);
263    }
264    void ajnerokkuudet(PhysicsObject asia, PhysicsObject aj)
265    {
266        comeon.Play();
267        if (asia.Tag == "tynnyri")
268        {
269            MessageDisplay.Add("Aj, There's no time to drink alcohol.");
270        }
271        else if (asia.Tag == "piano")
272        {
273            MessageDisplay.Add("Aj, You can't play piano right now.");
274
275        }
276        else if (asia.Tag == "kirjahylly")
277        {
278            MessageDisplay.Add("You can read books later Aj.");
279        }
280    }
281    void luosuperpatteri(Vector paikka, double leveys, double korkeus)
282    {
283        PhysicsObject superpatteri = new PhysicsObject(100, 100);
284        superpatteri.Image = superparistok;
285        superpatteri.Tag = "superparisto";
286        superpatteri.Position = paikka;
287        Add(superpatteri);
288        AddCollisionHandler(superpatteri, "aj", lisaaenergiaa);
289        AddCollisionHandler(superpatteri, "ammus", ammustuhoutuu);
290    }
291
292    void luopatteri(Vector paikka, double leveys, double korkeus)
293    {
294        PhysicsObject patteri = new PhysicsObject(100,100);
295        patteri.Image = paristok;
296        patteri.Tag = "paristo";
297        patteri.Position = paikka;
298        Add(patteri);
299        AddCollisionHandler(patteri, "aj", lisaaenergiaa);
300        AddCollisionHandler(patteri, "ammus", ammustuhoutuu);
301    }
302    void lisaaenergiaa(PhysicsObject patteri, PhysicsObject keraaja)
303    {
304        if (patteri.Tag == "paristo")
305        {
306            paristo.Value += 50;
307            patteri.Destroy();
308        }
309        else
310        {
311            paristo.Value += 100;
312            patteri.Destroy();
313        }
314
315    }
316    void luoampuja(Vector paikka, double leveys, double korkeus)
317    {
318        Vihollinen vihollinen = new Vihollinen(leveys, korkeus, liekki, aj, paikka, ampujaK, this);
319        Add(vihollinen);
320        listaVihollisista.Add(vihollinen);
321       
322    }
323
324    void luoparistolaskuri()
325    {
326        paristo = new IntMeter(100);
327        paristo.MaxValue = 100;
328        paristo.MinValue = 0;
329        Label paristomittari = new Label();
330        paristomittari.BorderColor = Color.Black;
331        paristomittari.X = Screen.Left + 120;
332        paristomittari.Y = Screen.Top - 200;
333        paristomittari.Color = Color.Lime;
334        paristomittari.BindTo(paristo);
335        Add(paristomittari);
336
337       
338    }
339    void luoseuraaja(Vector paikka, double leveys, double korkeus)
340    {
341        PhysicsObject seuraaja = new PhysicsObject(60,60);
342        seuraaja.Position = paikka;
343        seuraaja.Image = seuraajakuva;
344        seuraaja.Tag = "vihollinen";
345        Add(seuraaja);
346        FollowerBrain jahtaajanaivo = new FollowerBrain("aj");
347        jahtaajanaivo.Speed = 250;
348        jahtaajanaivo.DistanceFar = 800;
349        jahtaajanaivo.DistanceClose = 200;
350        jahtaajanaivo.TurnWhileMoving = true;
351        jahtaajanaivo.TargetClose += delegate { };
352        seuraaja.Brain = jahtaajanaivo;
353        AddCollisionHandler(seuraaja, "aj", ajdelaa);
354    }
355    void luoteleporttaaja(Vector paikka, double leveys, double korkeus)
356    {
357        PhysicsObject teleporttaaja = new PhysicsObject(70, 70);
358        teleporttaaja.Position = paikka;
359        teleporttaaja.Tag = "vihollinen";
360        teleporttaaja.Image = teleporttaajankuva;
361        teleporttaaja.CanRotate = false;
362        Add(teleporttaaja);
363        Timer teleporttiajastin = new Timer();
364        teleporttiajastin.Interval = 7;
365        teleporttiajastin.Timeout += delegate { teleporttaaja.Position = aj.Position + RandomGen.NextVector(200, 500); };
366        teleporttiajastin.Start();
367        FollowerBrain teleporttiaivo = new FollowerBrain("aj");
368        teleporttiaivo.DistanceFar = 300;
369        teleporttiaivo.Speed = 135;
370        teleporttiaivo.StopWhenTargetClose = false;
371        teleporttaaja.Brain = teleporttiaivo;
372        AddCollisionHandler(teleporttaaja, "aj", ajdelaa);
373
374    }
375
376    void ajdelaa(PhysicsObject uhri, PhysicsObject teleporttaaja)
377    {
378        ajhuuto.Play();
379        if (teleporttaaja.Tag == "vihollinen")
380        {
381           
382            MessageDisplay.Add("You are dead.");
383            Timer.SingleShot(3.0, delegate {  luokentta(kenttanumero); });
384            uhri.Destroy();
385        }
386        else if (teleporttaaja.Tag == "ammus")
387        {
388           
389            MessageDisplay.Add("You are dead.");
390            uhri.Destroy();
391            Timer.SingleShot(3.0, delegate {luokentta(kenttanumero); });
392           
393            teleporttaaja.Destroy();
394        }
395 
396    }
397    void luothwomp(Vector paikka, double leveys, double korkeus)
398    {
399        PhysicsObject thwomp = new PhysicsObject(100, 100);
400        thwomp.Image = thwompkuva;
401        thwomp.Position = paikka;
402        thwomp.Tag = "vihollinen";
403        RandomMoverBrain thwompinaivot = new RandomMoverBrain();
404        thwompinaivot.Speed = 150;
405        thwompinaivot.WanderRadius = 350;
406        thwompinaivot.ChangeMovementSeconds = 1;
407        thwompinaivot.Owner = thwomp;
408        thwomp.Brain = thwompinaivot;
409        Add(thwomp);
410        AddCollisionHandler(thwomp, "aj", ajdelaa);
411       
412    }
413
414    void luolukkovi(Vector paikka, double leveys, double korkeus)
415    {
416        PhysicsObject lukkovi = PhysicsObject.CreateStaticObject(100, 100);
417        lukkovi.Position = paikka;
418        lukkovi.Image = normiovenkuva;
419        AddCollisionHandler(lukkovi, "aj", lukollisenovenavaus);
420        Add(lukkovi);
421        AddCollisionHandler(lukkovi, "ammus", ammustuhoutuu);
422    }
423    void lukollisenovenavaus(PhysicsObject lukkovi, PhysicsObject lukkomies)
424    {
425        if (avainlaskuri > 0)
426        {
427            MessageDisplay.Add("The door opened!");
428            avainlaskuri.Value--;
429            Timer.SingleShot(1.5, delegate { luonovi(lukkovi.Position, lukkovi.Width, lukkovi.Height); });
430            lukkovi.Destroy();
431        }
432        else { MessageDisplay.Add("The door is locked"); }
433    }
434    void luoavainlaskuri()
435    {
436        avainlaskuri = new IntMeter(0);
437        Label avainnautto = new Label();
438        avainnautto.X = Screen.Left + 90;
439        avainnautto.Y = Screen.Top - 100;
440        avainnautto.TextColor = Color.Gold;
441        avainnautto.Color = Color.Black;
442        avainnautto.BindTo(avainlaskuri);
443        Add(avainnautto);
444    }
445    void luokulmaeka(Vector paikka, double leveys, double korkeus)
446    {
447        PhysicsObject kulmayksi = PhysicsObject.CreateStaticObject(100, 100);
448        kulmayksi.Position = paikka;
449        kulmayksi.Image = kulmaekak;
450        Add(kulmayksi);
451        AddCollisionHandler(kulmayksi, "ammus", ammustuhoutuu);
452    }
453    void luokulmatoka(Vector paikka, double leveys, double korkeus)
454    {
455        PhysicsObject kulmakaksi = PhysicsObject.CreateStaticObject(100, 100);
456        kulmakaksi.Image = kulmatokak;
457        kulmakaksi.Position = paikka;
458        Add(kulmakaksi);
459        AddCollisionHandler(kulmakaksi, "ammus", ammustuhoutuu);
460    }
461    void luokulmakolmas(Vector paikka, double leveys, double korkeus)
462    {
463        PhysicsObject kulmakolme = PhysicsObject.CreateStaticObject(100, 100);
464        kulmakolme.Image = kulmakolmek;
465        kulmakolme.Position = paikka;
466        Add(kulmakolme);
467        AddCollisionHandler(kulmakolme, "ammus", ammustuhoutuu);
468
469    }
470    void luokulmaneljäs(Vector paikka, double leveys, double korkeus)
471    {
472        PhysicsObject kulmaneljä = PhysicsObject.CreateStaticObject(100, 100);
473        kulmaneljä.Image = kulmaneljäk;
474        kulmaneljä.Position = paikka;
475        Add(kulmaneljä);
476        AddCollisionHandler(kulmaneljä, "ammus", ammustuhoutuu);
477
478    }
479
480    void luonovi(Vector paikka, double leveys, double korkeus)
481    {
482        PhysicsObject ovi = PhysicsObject.CreateStaticObject(100, 100);
483        ovi.Position = paikka;
484        ovi.Image = normiovenkuva;
485        AddCollisionHandler(ovi, "aj", ovenavaus);
486        AddCollisionHandler(ovi, "ammus", ammustuhoutuu);
487        Add(ovi);
488    }
489    void luosivuttainenseina(Vector paikka, double leveys, double korkeus)
490    {
491        PhysicsObject Seina1 = PhysicsObject.CreateStaticObject(100, 100);
492        Seina1.Position = paikka;
493        Seina1.Image = ensimmäinenseinänkuva;
494        Add(Seina1);
495        AddCollisionHandler(Seina1, "ammus", ammustuhoutuu);
496    }
497    void luopitkittäinenseina(Vector paikka, double leveys, double korkeus)
498    {
499        PhysicsObject Seina2 = PhysicsObject.CreateStaticObject(100, 100);
500        Seina2.Position = paikka;
501        Seina2.Image = toinenseinänkuva;
502
503        Add(Seina2);
504        AddCollisionHandler(Seina2, "ammus", ammustuhoutuu);
505    }
506    void ammustuhoutuu(PhysicsObject osuttava, PhysicsObject kudi)
507    {
508        kudi.Destroy();
509    }
510    void luokenttaovi(Vector paikka, double leveys, double korkeus)
511    {
512        PhysicsObject kenttaovi = PhysicsObject.CreateStaticObject(100, 100);
513        kenttaovi.Tag = "iso";
514        kenttaovi.Image = isovovi;
515        kenttaovi.Position = paikka;
516        Add(kenttaovi);
517    }
518    void ovenavaus(PhysicsObject ovi, PhysicsObject avaaja)
519    {
520        ovi.Destroy();
521        Timer.SingleShot(1.5, delegate { luonovi(ovi.Position, ovi.Width, ovi.Height); });
522    }
523    void luoavain(Vector paikka, double leveys, double korkeus)
524    {
525        PhysicsObject avain = new PhysicsObject(100, 100);
526        avain.Image = avaimenkuva;
527        avain.Position = paikka;
528
529        avain.Tag = "avain";
530        AddCollisionHandler(avain, "aj", avaimenkeruu);
531        Add(avain);
532    }
533    void avaimenkeruu(PhysicsObject avain, PhysicsObject kerääjä)
534    {
535        avainlaskuri.Value++;
536        MessageDisplay.Add("you found key!");
537        avain.Destroy();
538    }
539    void luoAj(Vector paikka, double leveys, double korkeus, PhysicsObject aj)
540    {
541
542        // aj = new PhysicsObject(70, 70);
543        aj.Size = new Vector(70, 70);
544        aj.Restitution = 0;
545        aj.Image = ajkuva;
546        aj.Position = paikka;
547        aj.CanRotate = false;
548        aj.Shape = Shape.Circle;
549        aj.Tag = "aj";
550        AddCollisionHandler(aj, "iso", nextlevel);
551        Add(aj);
552
553        AddCollisionHandler(aj, "ammus", ajdelaa);
554        AddCollisionHandler(aj, "vihollinen", ajdelaa);
555
556        Light lamppu = new Light();
557     
558        lamppu.Position = aj.Position;
559        Add(lamppu);
560        Timer lamppuAjastin = new Timer();
561        lamppuAjastin.Interval = 0.01;
562        lamppuAjastin.Timeout += delegate { lamppu.Position = aj.Position; };
563        lamppuAjastin.Start();
564
565        Timer paristonkulutus = new Timer();
566        paristonkulutus.Interval = 0.4;
567        paristonkulutus.Timeout += delegate
568        {
569            paristo.Value--;
570            float p = paristo.Value / (float)paristo.MaxValue;
571            lamppu.Distance = 70 + 40 * p;
572            lamppu.Intensity = 0.8 + 0.7 * p;
573            //if (paristo.Value > 0)
574            //{
575            //    lamppu.Intensity = 1.4;
576            //    lamppu.Distance = 80;
577            //}
578           
579            //if (paristo.Value == 0)
580            //{
581            //    lamppu.Distance = 60;
582            //    lamppu.Intensity = 0.8; }
583        };
584        paristonkulutus.Start();
585
586    }
587    void nextlevel(PhysicsObject aj, PhysicsObject isoovi)
588    {
589        kenttanumero++;
590        luokentta(kenttanumero);
591    }
592    void LuoKontrollit()
593    {
594        Keyboard.Listen(Key.Left, ButtonState.Down, AjLiikkuu, null, new Vector(-300, 0));
595        Keyboard.Listen(Key.Left, ButtonState.Released, AjLiikkuu, null, new Vector(0, 0));
596        Keyboard.Listen(Key.Right, ButtonState.Down, AjLiikkuu, null, new Vector(300, 0));
597        Keyboard.Listen(Key.Right, ButtonState.Released, AjLiikkuu, null, new Vector(0, 0));
598        Keyboard.Listen(Key.Up, ButtonState.Down, AjLiikkuu, null, new Vector(0, 300));
599        Keyboard.Listen(Key.Up, ButtonState.Released, AjLiikkuu, null, new Vector(0, 0));
600        Keyboard.Listen(Key.Down, ButtonState.Down, AjLiikkuu, null, new Vector(0, -300));
601        Keyboard.Listen(Key.Down, ButtonState.Released, AjLiikkuu, null, new Vector(0, 0));
602
603    }
604    void AjLiikkuu(Vector vektori)
605    {
606        if (esnumero == 0)
607        {
608            aj.Move(vektori);
609        }
610        if (esnumero > 0)
611        {
612            aj.Move(vektori * (esnumero+1));
613        }
614    }
615
616}
617public class Vihollinen : PhysicsObject
618{
619    private Timer ajastin;
620    private Image liekki;
621    private PhysicsObject aj;
622    private Game peli;
623
624    public Vihollinen(double leveys, double korkeus, Image liekkiKuva, PhysicsObject ajv, Vector paikka, Image kuva, Game peli) 
625        :base(leveys, korkeus)
626    {
627        liekki = liekkiKuva;
628        aj = ajv;
629        this.peli = peli;
630        this.Position = paikka;
631        this.Image = kuva;
632        LuoAivot();
633    }
634
635    private void LuoAivot()
636    {
637        RandomMoverBrain ampujanaivot = new RandomMoverBrain();
638        ampujanaivot.Speed = 100;
639        this.Brain = ampujanaivot;
640        ampujanaivot.WanderRadius = 500;
641        Timer ampuminen = new Timer();
642        ampuminen.Interval = 2;
643        ampuminen.Timeout += AlustaAjastin;
644        ampuminen.Start();
645    }
646
647    private void AlustaAjastin()
648    {
649
650        PhysicsObject ammus = new PhysicsObject(30, 30);
651        ammus.Position = this.Position;
652        ammus.Image = liekki;
653        ammus.Tag = "ammus";
654        peli.Add(ammus);
655        Vector ampumisuunta = (aj.Position - this.Position).Normalize();
656        this.Angle = ampumisuunta.Angle;
657        ammus.Hit(ampumisuunta * 450);
658       
659
660    }
661
662}
Note: See TracBrowser for help on using the repository browser.