source: 2016/23/HenriK/beli/dungeoncrawlar/dungeoncrawlar/dungeoncrawlar.cs @ 7240

Revision 7240, 27.4 KB checked in by sieerinn, 3 years ago (diff)

boss possible trust me

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9class Pelihahmo : PhysicsObject
10{
11    private IntMeter elamaLaskuri;
12    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
13
14    public Pelihahmo(double leveys, double korkeus, int elämät, int maxE)
15        : base(leveys, korkeus)
16    {
17        elamaLaskuri = new IntMeter(elämät, 0, maxE);
18       
19    }
20}
21
22public class dungeoncrawlar : PhysicsGame
23{
24    EasyHighScore ennätys = new EasyHighScore();
25   
26    Pelihahmo player;
27    PhysicsObject ammus;
28    PhysicsObject miekka;
29    PhysicsObject avain;
30    PhysicsObject m1911;
31    PhysicsObject ase96;
32    PhysicsObject staminup;
33    PhysicsObject juggernog;
34
35    Listener aseNyt;
36    Image[] lattiatext = LoadImages("stooones mang", "stooones mang2", "stooones mang3");
37    Image[] NRGpellet = LoadImages("NRGpellet1", "NRGpellet2", "NRGpellet3", "NRGpellet4","NRGpellet5","NRGpellet5.5","NRGpellet6","NRGpellet6");
38    Image[] lattiakolo = LoadImages("blackwhitegroundhole1.", "blackwhitegroundhole2", "blackwhitegroundhole2 - Copy", "blackwhitegroundhole3", "blackwhitegroundhole3 - copy", "blackwhitegroundhole4", "blackwhitegroundhole4 - copy");
39    Image ruumisvihu = LoadImage("lizerded");
40
41    int taso= 1;
42    int pisteet = 0;
43    int avaintenLkm;
44    int l96 = 0;
45    int elämät = 100;
46    int lisko = 0;
47   
48    int nog = 0;
49
50
51    PhysicsObject[] palat;
52    Image dead_dragon = LoadImage("dedragon");
53    Image dead_dragonbod = LoadImage("dedragon bod");
54    Image paaKuva = LoadImage("weedragon hed");
55
56    Image hantaKuva = LoadImage("weedragon");
57    Image hantaKuvaFlip;
58    Image paaKuvaFlip;
59    Image dead_dragonFlip;
60   
61
62    public override void Begin()
63    {
64        player = new Pelihahmo(45, 50, elämät + nog, 100 + nog);
65        hantaKuvaFlip = Image.Flip(hantaKuva);
66        paaKuvaFlip = Image.Flip(paaKuva);
67
68        SmoothTextures = false;
69        luohuone(1);
70        IsFullScreen = false;
71       
72       
73        avaintenLkm = 0;
74       
75
76        //AddCollisionHandler(player, "seina", PelaajaTormaaSeinaan);
77
78        //PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
79       
80    }
81    void LuoAse96(Vector paikka, double leveys, double korkeus)
82    {
83        arvotext(paikka, leveys, korkeus);
84        ase96 = new PhysicsObject(100, 100);
85        Image c = LoadImage("l96");
86       
87       
88        ase96.Image = c;
89        ase96.Tag = "ase96";
90        Add(ase96);
91
92       
93    }
94    void PoimiAse(PhysicsObject tormaaja, PhysicsObject tormatty)
95    {
96        ase96.Destroy();
97        l96 += 1;
98        aseet();
99    }
100    void luoruumis(Vector paikka,Image kuva)
101    {
102        GameObject ruumis = new GameObject(60*1.5, 60*1.5);
103        ruumis.Image = kuva;
104        ruumis.Position = paikka;
105        Add(ruumis, -1);
106        ruumis.MaximumLifetime = TimeSpan.FromSeconds(200);
107
108
109    }
110    void luoPelaajaRuumis(Vector paikka, Image kuva,Angle kulma)
111    {
112        GameObject ruumis = new GameObject(50, 55);
113        ruumis.Image = kuva;
114        ruumis.Position = paikka;
115        ruumis.Angle = kulma;
116        Add(ruumis, -1);
117    }
118    void lepakko(Vector paikka, double leveys, double korkeus)
119    {
120       /* arvotext(paikka, leveys, korkeus);
121        Pelihahmo lepakko = new Pelihahmo(50, 50, 20, 20);
122        lepakko.Position = paikka;
123        lepakko.LinearDamping = 0.5;
124        Add(lepakko);
125        lepakko.CollisionIgnoreGroup = 3;
126
127
128        Image c = LoadImage("zombi");
129        //vihu.Shape = Shape.FromImage(c);
130        lepakko.Image = c;
131        lepakko.ElamaLaskuri.LowerLimit += delegate
132        {
133            lepakko.Destroy();
134            luoruumis(lepakko.Position, ruumisvihu[0]);
135        };
136
137        FollowerBrain aivo = new FollowerBrain(player);
138        aivo.Speed = 200;
139        lepakko.Brain = aivo;
140        lepakko.Tag = "vihu";
141        aivo.TurnWhileMoving = true;
142        AddCollisionHandler(lepakko, "player", delegate(PhysicsObject a, PhysicsObject b)
143        {
144            vahinko(a, b, 10);
145        });
146
147        Timer ajastin = new Timer();
148        ajastin.Interval = 0.05;
149        ajastin.Timeout += delegate
150        {
151            GameObject väistä = null;
152            double väistöEtäisyys = 10;
153            foreach (GameObject ammus2 in GetObjectsWithTag("ammus"))
154            {
155                double etäisyys = Vector.Distance(ammus2.Position, lepakko.Position);
156                if (Vector.Distance(ammus2.Position, lepakko.Position) < väistöEtäisyys)
157                {
158                    väistöEtäisyys = etäisyys;
159                    väistä = ammus2;
160                }
161            }
162
163            if (väistä != null)
164            {
165                lepakko.Brain = null;
166                lepakko.Push((lepakko.Position - väistä.Position) * 500);
167            }
168            else
169            {
170                lepakko.Brain = aivo;
171            }
172        };
173        ajastin.Start();*/
174    }
175    void Vihu(Vector paikka, double leveys, double korkeus)
176    {
177        lisko++;
178        arvotext(paikka, leveys, korkeus);
179        Pelihahmo vihu = new Pelihahmo(60, 40, 20, 20);
180        vihu.Position = paikka;
181        vihu.LinearDamping = 0.5;
182        Add(vihu);
183        vihu.CollisionIgnoreGroup = 4;
184
185       
186       
187        Image[] Lizerd = LoadImages("lizerd1", "lizerd2", "lizerd4", "lizerd3");
188        //vihu.Shape = Shape.FromImage(c);
189       
190        vihu.Animation = new Animation(Lizerd);
191        vihu.Animation.FPS = 7;
192        vihu.Animation.Start();
193
194        vihu.ElamaLaskuri.LowerLimit += delegate   
195        {
196            pisteet = pisteet + 100;
197            vihu.Destroy();
198            luoruumis(vihu.Position, ruumisvihu);
199            lisko--;
200            MessageDisplay.Add("liskoja jäljellä:" + lisko);
201            player.ElamaLaskuri.Value += 4;
202        };
203
204        FollowerBrain aivo = new FollowerBrain(player);
205        aivo.Speed = 200;
206        vihu.Brain = aivo;
207        vihu.Tag = "vihu";
208        aivo.TurnWhileMoving = true;
209        AddCollisionHandler(vihu, "player", delegate(PhysicsObject a, PhysicsObject b)
210        {
211            vahinko(a, b, 10);
212        });
213
214        Timer ajastin = new Timer();
215        ajastin.Interval = 0.05;
216        ajastin.Timeout += delegate
217        {
218            GameObject väistä = null;
219            double väistöEtäisyys = 40;
220            foreach (GameObject ammus in GetObjectsWithTag("ammus"))
221            {
222                double etäisyys = Vector.Distance(ammus.Position, vihu.Position);
223                if (Vector.Distance(ammus.Position, vihu.Position) < väistöEtäisyys)
224                {
225                    väistöEtäisyys = etäisyys;
226                    väistä = ammus;
227                }
228            }
229
230            if (väistä != null)
231            {
232                vihu.Brain = null;
233                vihu.Push((vihu.Position - väistä.Position) * 500);
234            }
235            else
236            {
237                vihu.Brain = aivo;
238            }
239        };
240        ajastin.Start();
241    }
242    void bossi(Vector paikka, double leveys, double korkeus)
243    {
244        arvotext(paikka, leveys, korkeus);
245        Image Liz_King = LoadImage("liz king");
246        Pelihahmo pääVihu = new Pelihahmo(700, 400, 20000, 20000);
247        pääVihu.Position = paikka;
248        pääVihu.Shape = Shape.FromImage(Liz_King);
249        pääVihu.LinearDamping = 0.8;
250        Add(pääVihu);
251        pääVihu.CollisionIgnoreGroup = 4;
252        pääVihu.Tag = "vihu";
253       
254        Timer bossiajastin = new Timer();
255        bossiajastin.Interval = 3;
256        bossiajastin.Timeout += () => bossiattackrotate(pääVihu);
257        bossiajastin.Start();
258
259       
260       
261        ProgressBar elamaPalkki = new ProgressBar(800, 30);
262        elamaPalkki.X = 0;
263        elamaPalkki.Y = Window.Height / 2 - 100;
264       
265        elamaPalkki.BindTo(pääVihu.ElamaLaskuri);
266        Add(elamaPalkki);
267
268        pääVihu.Image = Liz_King;
269        pääVihu.ElamaLaskuri.LowerLimit += delegate
270        {
271            pisteet = pisteet + 10000;
272            pääVihu.Destroy();
273            luoruumis(pääVihu.Position, ruumisvihu);
274            lisko--;
275            MessageDisplay.Add("tapoit pää bossin");
276            bossiajastin.Stop();
277            LisaaPorrasYlos(pääVihu.Position, 100, 100);
278        };
279    }
280    void bossiattackrotate(Pelihahmo vihu)
281    {
282
283        RandomGen.SelectOne(new Action[] { () => bossishoot(vihu), () => bossislam(vihu), () => bossispawn(vihu.Position) })();
284    }
285    void bossishoot(Pelihahmo vihu)
286    {
287        for (int i = 0; i <= 5; i++ )
288        {
289
290            PhysicsObject homAmmus = new PhysicsObject(10, 10);
291            homAmmus.IgnoresCollisionResponse = true;
292            homAmmus.Position = vihu.Position;
293            homAmmus.Animation = new Animation(NRGpellet);
294            homAmmus.Animation.FPS = 7;
295            homAmmus.Animation.Start();
296            homAmmus.Angle = vihu.Angle * 5 * i;
297
298
299            Add(homAmmus);
300            homAmmus.MaximumLifetime = new TimeSpan(100000000);
301            homAmmus.Push(homAmmus.Angle.GetVector() * 100000 );
302            FollowerBrain aivo = new FollowerBrain(player);
303            aivo.Speed = 200;
304            homAmmus.Brain = aivo;
305            homAmmus.Tag = "vihu";
306            AddCollisionHandler(homAmmus, "player", delegate(PhysicsObject a, PhysicsObject b)
307            {
308                vahinko(a, b, 10);
309            });
310        }
311    }
312    void bossislam(Pelihahmo vihu)
313    {
314        int ammuksia = 60;
315
316        for (int i = 0; i <= ammuksia; i++)
317        {
318            PhysicsObject ammus2 = new PhysicsObject(10, 10);
319           
320            ammus2.IgnoresCollisionResponse = true;
321            ammus2.Position = vihu.Position;
322            ammus2.Animation = new Animation(NRGpellet);
323            ammus2.Animation.FPS = 7;
324            ammus2.Animation.Start();
325            ammus2.Angle = Angle.FromDegrees(360 * i/(double)ammuksia);
326
327            Add(ammus2);
328            ammus2.MaximumLifetime = TimeSpan.FromSeconds(3);
329            ammus2.Push(ammus2.Angle.GetVector() * 10000);
330           
331            ammus2.Tag = "vihu";
332            AddCollisionHandler(ammus2, "player", delegate(PhysicsObject a, PhysicsObject b)
333            {
334                vahinko(a, b, 10);
335            });
336        }
337    }
338    void bossispawn(Vector paikka)
339    {
340        Vihu(paikka, 60, 40);
341    }
342   
343   
344    void aseet()
345    {
346
347       
348
349
350        Keyboard.Listen(Key.Enter, ButtonState.Down, ammupistol, "pum pum");
351
352        /*Keyboard.Listen(Key.D3, ButtonState.Pressed, aseenVaihto, "aseen vaihto", 2);
353        Keyboard.Listen(Key.D4, ButtonState.Pressed, aseenVaihto, "aseen vaihto", 3);
354        Keyboard.Listen(Key.Space, ButtonState.Pressed, lyö, "aseen vaihto");*/
355
356       
357       
358    }
359    void aseenVaihto(int ase)
360    {
361        /*if (aseNyt != null)
362        {
363            aseNyt.Destroy();
364        }*/
365        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, ammupistol, "pum pum");
366        /*switch (ase)
367        {
368            case 1:         
369                aseNyt = Mouse.Listen(MouseButton.Left, ButtonState.Pressed, ammu, "pum pum");
370                break;
371            case 2:
372                aseNyt = Mouse.Listen(MouseButton.Left, ButtonState.Down, block, "pum pum");
373                break;
374            case 3:
375                aseNyt = Mouse.Listen(MouseButton.Left, ButtonState.Pressed, ammupistol, "pum pum");
376                break;
377        } */
378    }
379    void block()
380    {     
381        Image c = LoadImage("characterovi");
382        player.Shape = Shape.FromImage(c);
383        player.Image = c;
384
385        ammus = new PhysicsObject(10.0, 100.0);
386        ammus.Shape = Shape.Rectangle;
387        ammus.Color = Color.Gray;
388        ammus.Position = player.Position + Vector.FromLengthAndAngle(40, player.Angle);
389        ammus.CollisionIgnoreGroup = 2;
390        ammus.Angle = player.Angle;
391        Add(ammus);
392        ammus.Tag = "ammus";
393        ammus.IsVisible = false;
394       
395        //ammus.Hit(impulssi);
396        ammus.MaximumLifetime = new TimeSpan(10000);
397
398    }
399    void lyö()
400    {
401        Image c = LoadImage("charactersword");
402        player.Shape = Shape.FromImage(c);
403        player.Image = c;
404
405        miekka = new PhysicsObject(50.0, 5.0);
406        miekka.Shape = Shape.Circle;
407        miekka.Color = Color.Gray;
408        Image y = LoadImage("sword");
409        miekka.Image = y;
410        miekka.Position = player.Position + (player.Angle + Angle.FromDegrees(90)).GetVector()*-15 + player.Angle.GetVector()*11;
411        miekka.CollisionIgnoreGroup = 1;
412        miekka.Angle = player.Angle + Angle.FromDegrees(45);
413       
414        Add(miekka);
415        Vector impulssi = Vector.FromLengthAndAngle(50, player.Angle + Angle.FromDegrees(46));
416        miekka.Hit(impulssi);
417        miekka.MaximumLifetime = new TimeSpan(2000000);
418        AddCollisionHandler(miekka, "vihu", delegate(PhysicsObject a, PhysicsObject b)
419        {
420            vahinko(a, b, 20);
421        });
422
423
424    }
425    void ammupistol()
426    {
427
428        Image i = LoadImage("thecharacterpistol");
429        player.Shape = Shape.FromImage(i);
430        player.Image = i;
431
432
433
434        ammus = new PhysicsObject(30.0, 10.0);
435        ammus.Shape = Shape.Circle;
436        ammus.Color = Color.Gold;
437        ammus.Position = player.Position;
438        ammus.CollisionIgnoreGroup = 1;
439        ammus.CollisionIgnoreGroup = 5;
440        Image d = LoadImage("bullet");
441        ammus.Shape = Shape.FromImage(d);
442        ammus.Image = d;
443        ammus.Angle = player.Angle;
444        ammus.Tag = "ammus";
445        Add(ammus);
446
447        Vector impulssi = Vector.FromLengthAndAngle(1000 + player.Velocity.Magnitude, player.Angle);
448        ammus.Hit(impulssi);
449       
450        ammus.MaximumLifetime = new TimeSpan(1000000);
451        AddCollisionHandler(ammus, "vihu", delegate(PhysicsObject a, PhysicsObject b)
452        {
453            vahinko(a, b, 10);
454        });
455
456
457    }
458    void zombinruokaa(PhysicsObject player, PhysicsObject vihu )
459    {
460        Pelihahmo hahmo = player as Pelihahmo;
461        if (hahmo != null)
462        {
463            hahmo.ElamaLaskuri.Value -= 10;
464        }
465    }
466    void vahinko(PhysicsObject ammus,PhysicsObject vihu,int vahinkomäär  )
467    {
468        Pelihahmo hahmo = vihu as Pelihahmo;
469        if(hahmo != null)
470        {
471            hahmo.ElamaLaskuri.Value -= vahinkomäär;
472        }
473
474    }
475
476    void luohuone(int huoneNumero)
477    {
478        Window.Width = 2048;
479        Window.Height = 1024;
480        Window.Top = 0;
481        Camera.Zoom(0.5);
482
483       
484        //Level.Background.Image = lattiatext[0];
485        //Level.Background.TileToLevel();
486
487       
488       
489       
490        /*TileMap ruudut = TileMap.FromLevelAsset("huone" + huoneNumero);
491        TileMap ruudut2 = TileMap.FromLevelAsset("huone" + huoneNumero);
492
493       
494           
495       
496        //3. Execute luo kentän
497        //   Parametreina leveys ja korkeus
498       
499       
500        ruudut.SetTileMethod('p', LuoPelaaja);
501        ruudut.SetTileMethod('w', LuoTaso);
502
503        ruudut.SetTileMethod('k', LuoOvi, Angle.FromDegrees(180));
504       
505
506        ruudut.SetTileMethod('r', luoAvain);
507        ruudut.SetTileMethod('s', luoStaminup);
508        ruudut.SetTileMethod('_', arvotext);
509        ruudut.SetTileMethod('a', LuoAse96);
510        ruudut.SetTileMethod('j', luoJuggernog);
511        ruudut.SetTileMethod('z', Luokolo5);
512        ruudut.SetTileMethod('b', Luokolo2);
513        ruudut.SetTileMethod('g', Luokolo3);
514        ruudut.SetTileMethod('t', Luokolo4);
515        ruudut.SetTileMethod('r', Luokolo1);
516       
517       
518
519       
520
521
522        ruudut2.SetTileMethod('v', Vihu);
523        ruudut2.SetTileMethod('l', lepakko);
524        ruudut.Execute(64, 64);
525        ruudut2.Execute(64, 64);*/
526        ClearAll();
527       
528        TileMap test;
529        if (taso % 5 != 0)
530        {
531            LuolaGeneraattori gen = new LuolaGeneraattori((string derp) => { });
532            gen.CreateDungeon(60, 40, features: 200, chests: 15);
533            var tiles = gen.GetDungeon();
534            test = new TileMap(tiles);
535        }
536        else
537            test = TileMap.FromLevelAsset("boss");
538 
539 
540        test.SetTileMethod('S', LisaaSeina);
541        test.SetTileMethod('|', LisaaSeina);
542        test.SetTileMethod('.', LisaaSeina);
543        test.SetTileMethod('b', bossi);
544        test.SetTileMethod('_', LisaaLattia);
545        test.SetTileMethod('#', LisaaLattia);
546        test.SetTileMethod('+', LisaaPorrasYlos);
547        test.SetTileMethod('-', LisaaPorrasAlas);
548        test.SetTileMethod('-', LuoPelaaja);
549        test.SetTileMethod('D', LisaaLattia);
550        test.SetTileMethod('C', LisaaArkku);
551        test.Execute(100, 100);
552 
553        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
554 
555        //Keyboard.Listen(Key.Space, ButtonState.Pressed, Begin, null);
556                Camera.StayInLevel = true;
557        näppäimet();
558        aseet();
559        avaintenLkm = 0;
560
561    }
562 
563    void LisaaSeina(Vector paikka, double leveys, double korkeus)
564    {
565        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
566        taso.Position = paikka;
567        taso.Color = Color.Black;
568        Add(taso);
569    }
570 
571    void LisaaLattia(Vector paikka, double leveys, double korkeus)
572    {
573        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
574        taso.Position = paikka;
575        Image tasoKuva = arvotext(paikka, leveys, korkeus);
576        taso.Image = tasoKuva;
577        taso.IgnoresCollisionResponse = true;
578       
579        Add(taso, -3);
580    }
581 
582    void LisaaPorrasAlas(Vector paikka, double leveys, double korkeus)
583    {
584        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
585        taso.Position = paikka;
586        taso.Color = Color.Red;
587       
588       
589        Add(taso, 6);
590       
591       
592    }
593 
594    void LisaaPorrasYlos(Vector paikka, double leveys, double korkeus)
595    {
596        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
597        taso.Position = paikka;     
598        taso.Color = Color.Blue;
599        taso.Tag = "porrasA";
600        Add(taso);
601    }
602 
603    void LisaaArkku(Vector paikka, double leveys, double korkeus)
604    {
605        if (RandomGen.NextDouble(0, 100) < 5)
606        {
607            luoJuggernog(paikka, leveys, korkeus);
608            /*PhysicsObject arkku = new PhysicsObject(leveys, korkeus);
609            arkku.Position = paikka;
610            arkku.Color = Color.Brown;
611            LisaaLattia(paikka, leveys, korkeus);
612            Add(arkku, 1);*/
613        }
614        else
615        {
616            Vihu(paikka, leveys, korkeus);
617           
618        }
619    }
620
621 
622    void AvaintenKerays(PhysicsObject tormaaja, PhysicsObject tormatty)
623    {
624       /*witch(kohde)
625        {
626            case "avain":
627                avaintenLkm += 1;
628                tormatty.Destroy();
629
630                break;
631            default:
632                break;
633        }*/
634
635        avaintenLkm++;
636        tormatty.Destroy();
637           
638    }
639
640    Image arvotext(Vector paikka, double leveys, double korkeus)
641    {
642        GameObject taso = new GameObject(leveys, korkeus);
643        taso.Position = paikka;
644        //taso.CollisionIgnoreGroup = 1;
645        if (RandomGen.NextDouble(0, 100) < 50)
646        {
647            taso.Image = lattiatext[2];
648            return lattiatext[2];
649        }
650        else
651        {
652            int x = RandomGen.NextInt(2);
653            taso.Image = lattiatext[x];
654            return lattiatext[x];
655        }
656
657
658
659
660       
661        Add(taso, -2);
662    }
663    void LuoTaso(Vector paikka, double leveys, double korkeus)
664    {
665        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
666        taso.Position = paikka; 
667        //taso.CollisionIgnoreGroup = 1;
668        taso.Color = Color.Gray;
669        Image a = LoadImage("wall");
670       
671        taso.Image = a;
672        Add(taso);
673    }
674    void luoAvain(Vector paikka, double leveys, double korkeus)
675    {
676        arvotext(paikka, leveys, korkeus);
677        if (RandomGen.NextDouble(0, 100) < 80)
678        {
679            avain = new PhysicsObject(50, 50);
680            Image c = LoadImage("gaykey");
681
682            avain.Image = c;
683            avain.Position = paikka;
684            avain.Tag = "avain";
685            Add(avain);
686        }
687       
688
689
690        //delegate(PhysicsObject a, PhysicsObject b) {kerays(a, b, "avain");}
691    }
692    void alasMeno(PhysicsObject tormaaja, PhysicsObject porrasA)
693    {
694        if(lisko == 0)
695        {
696            if (Keyboard.GetKeyState(Key.E) == ButtonState.Down)
697            {
698                elämät = player.ElamaLaskuri.Value;
699                pisteet = pisteet + 1000;
700                taso++;
701                /*if (taso == 5)
702                {
703                    bossi;
704                }*/
705                Begin();
706                MessageDisplay.Add("pisteesi:" + pisteet);
707                MessageDisplay.Add("taso:" + taso);
708               
709            }
710
711
712       
713        }
714    }
715    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
716    {
717        arvotext(paikka, leveys, korkeus);
718        player.Position = paikka;
719        Image c = LoadImage("thecharacter");
720        player.Shape = Shape.FromImage(c);
721        player.Image = paaKuva;
722        player.ElamaLaskuri.LowerLimit += delegate
723        {
724            player.Destroy();
725            ennätys.EnterAndShow(pisteet);
726           
727            ennätys.HighScoreWindow.Closed += (Window w) => Begin();
728            luoPelaajaRuumis(player.Position, dead_dragon, player.Angle);
729            pisteet = 0;
730            taso = 1;
731            for (int i = 0; i < palat.Length; i++)
732            {
733                palat[i].Destroy();
734                luoPelaajaRuumis(palat[i].Position, dead_dragonbod, palat[i].Angle);
735            }
736        };
737       
738        //player.
739     
740        player.Position = paikka;
741        player.LinearDamping = 0.6;
742        player.AngularDamping = 0.6;
743        player.CollisionIgnoreGroup = 1; 
744        player.CollisionIgnoreGroup = 5;
745       
746        player.MaxAngularVelocity = 8000.0;
747        player.Color = Color.Brown;
748        player.Mass = 1;
749        Add(player, 3);
750        player.Tag="player";
751
752        palat = new PhysicsObject[10];
753       
754        for (int i = 0; i < palat.Length; i++)
755        {
756            palat[i] = new PhysicsObject(60, 60);
757            palat[i].Image = paaKuva;
758            Add(palat[i]);
759        }
760
761        var ajastin = new Timer();
762        ajastin.Interval = 0.01;
763        ajastin.Timeout += () => OhjaaPaloja(player, 40);
764        ajastin.Start();
765
766        AddCollisionHandler(player, "avain", AvaintenKerays);
767        AddCollisionHandler(player, "porrasA", alasMeno);
768        AddCollisionHandler(player, "l96wallbuy", PoimiAse);
769        AddCollisionHandler(player, "juggernog", PoimiNog);
770        //AddCollisionHandler(vihu, "player", zombinruokaa);
771
772        ProgressBar elamaPalkki = new ProgressBar(200, 20);
773        elamaPalkki.X = 600;
774        elamaPalkki.Y = Window.Height / 2 - 100;
775        //elamaPalkki.Angle = player.Angle + Angle.FromDegrees(90);
776        elamaPalkki.BindTo(player.ElamaLaskuri);
777        Add(elamaPalkki);
778
779       
780
781       
782       
783       
784
785        //player.CollisionIgnoreGroup = 1;
786        Camera.Follow(player);
787    }
788
789    void OhjaaPaloja(GameObject ohjain, double palanKoko)
790    {
791        GameObject edeltava = ohjain;
792        player.Image = dead_dragon;
793        if ((player.Angle + Angle.FromDegrees(90)).GetPositiveDegrees() > 180)
794        {
795            player.Image = dead_dragonFlip;
796        }
797        player.Image = paaKuva;
798        if ((player.Angle + Angle.FromDegrees(90)).GetPositiveDegrees() > 180)
799        {
800            player.Image = paaKuvaFlip;
801        }
802
803        for (int i = 0; i < palat.Length; i++)
804        {
805            PhysicsObject pala = palat[i];
806            pala.CollisionIgnoreGroup = 5;
807            pala.LinearDamping = 0.9;
808            // Palan sijainnin ja kulman päivitys.
809            Vector suunta = pala.Position - edeltava.Position;
810            if (suunta.Magnitude > palanKoko)
811            {
812                suunta = suunta.Normalize();
813                pala.Position = edeltava.Position + suunta * palanKoko;
814            }
815            pala.Angle = suunta.Angle;
816
817            // Palan kuvan muuttaminen kulman suhteen.
818            pala.Image = hantaKuva;
819            if ((pala.Angle + Angle.FromDegrees(90)).GetPositiveDegrees() > 180)
820            {
821                pala.Image = hantaKuvaFlip;
822            }
823
824            edeltava = palat[i];
825        }
826    }
827
828    void näppäimet()
829    {
830       /*Keyboard.Listen(Key.W, ButtonState.Down, liike, "liiku", Vector.FromLengthAndAngle(1500, player.Angle));
831        Keyboard.Listen(Key.S, ButtonState.Down, liike, "liiku", Vector.FromLengthAndAngle(-500, player.Angle));
832        Keyboard.Listen(Key.D, ButtonState.Down, liike, "liiku", Vector.FromLengthAndAngle(-1000, player.Angle + Angle.FromDegrees(90)));
833        Keyboard.Listen(Key.A, ButtonState.Down, liike, "liiku", Vector.FromLengthAndAngle(1000, player.Angle + Angle.FromDegrees(90)));*/
834
835        Keyboard.Listen(Key.W, ButtonState.Down, liike, "liiku", new Vector(0, 500));
836        Keyboard.Listen(Key.S, ButtonState.Down, liike, "liiku", new Vector(0, -500));
837        Keyboard.Listen(Key.D, ButtonState.Down, liike, "liiku", new Vector(500, 0));
838        Keyboard.Listen(Key.A, ButtonState.Down, liike, "liiku", new Vector(-500, 0));
839
840        Mouse.IsCursorVisible = false;
841        //Mouse.ListenMovement(0.0, kaanny, "");
842       
843        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
844    }
845    void kaanny(Vector kaannos)
846    {
847        //Vector suunta = Mouse.PositionOnWorld - player.AbsolutePosition;
848        Vector suunta = kaannos;
849
850        if (suunta.Magnitude != 0)
851        {
852            suunta.Normalize();
853            player.Angle = suunta.Angle;
854        }
855    }
856    void liike(Vector vektori)
857    {
858        //player.Move((player.Angle + vektori.Angle + Angle.FromDegrees(-90)).GetVector() * vektori.Magnitude);
859        //player.Move(vektori);
860        player.Push(vektori * 30);
861        player.Angle = player.Velocity.Angle;
862    }
863
864   
865    void luoStaminup(Vector paikka, double leveys, double korkeus)
866    {
867        arvotext(paikka, leveys, korkeus);
868        staminup = PhysicsObject.CreateStaticObject(leveys, korkeus);
869        staminup.Position = paikka;
870        Image s = LoadImage("staminup");
871
872        staminup.Image = s;
873        staminup.Tag = "staminup";
874
875
876        Add(staminup);
877
878
879    }
880    void luoJuggernog(Vector paikka, double leveys, double korkeus)
881    {
882        {
883            arvotext(paikka, leveys, korkeus);
884            juggernog = PhysicsObject.CreateStaticObject(leveys, korkeus);
885            juggernog.Position = paikka;
886            Image s = LoadImage("juggernog");
887
888            juggernog.Image = s;
889            juggernog.Tag = "juggernog";
890
891
892            Add(juggernog);
893
894
895        }
896    }
897    void PoimiNog(PhysicsObject tormaaja, PhysicsObject tormatty)
898    {
899        tormatty.Destroy();
900        nog += 40;
901        player.ElamaLaskuri.Value += 40;
902        aseet();
903    }
904   
905
906
907
908}
Note: See TracBrowser for help on using the repository browser.