source: 2015/23/HenriK/dungeoncrawlar/dungeoncrawlar/dungeoncrawlar/dungeoncrawlar.cs @ 5894

Revision 5894, 19.8 KB checked in by sieerinn, 4 years ago (diff)

allnotdone but done

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8class Pelihahmo : PhysicsObject
9{
10    private IntMeter elamaLaskuri;
11    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
12
13    public Pelihahmo(double leveys, double korkeus, int elämät, int maxE)
14        : base(leveys, korkeus)
15    {
16        elamaLaskuri = new IntMeter(elämät, 0, maxE);
17       
18    }
19}
20
21public class dungeoncrawlar : PhysicsGame
22{
23    PhysicsObject ovi;
24    Pelihahmo player;
25    PhysicsObject ammus;
26    PhysicsObject miekka;
27    PhysicsObject avain;
28    PhysicsObject m1911;
29    PhysicsObject ase96;
30    PhysicsObject staminup;
31    PhysicsObject juggernog;
32
33    Listener aseNyt;
34    Image[] lattiatext = LoadImages("blackwhitegorund bloody1", "blackwhitegorund bloody2", "blackwhiteground");
35    Image[] lattiakolo = LoadImages("blackwhitegroundhole1.", "blackwhitegroundhole2", "blackwhitegroundhole2 - Copy", "blackwhitegroundhole3", "blackwhitegroundhole3 - copy", "blackwhitegroundhole4", "blackwhitegroundhole4 - copy");
36    Image[] ruumisvihu = LoadImages("zombi1","zombi2","zombi3", "zombi4", "zombi5", "zombi6", "zombi7");
37
38    int avaintenLkm;
39    int l96 = 0;
40    int elämät = 100;
41   
42    int nog = 0;
43   
44     
45
46   
47
48    public override void Begin()
49    {
50        SmoothTextures = false;
51        luohuone(1);
52       
53       
54        avaintenLkm = 0;
55       
56
57        //AddCollisionHandler(player, "seina", PelaajaTormaaSeinaan);
58
59        //PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
60       
61    }
62    void LuoAse96(Vector paikka, double leveys, double korkeus)
63    {
64        arvotext(paikka, leveys, korkeus);
65        ase96 = new PhysicsObject(100, 100);
66        Image c = LoadImage("l96");
67       
68       
69        ase96.Image = c;
70        ase96.Tag = "ase96";
71        Add(ase96);
72
73       
74    }
75    void PoimiAse(PhysicsObject tormaaja, PhysicsObject tormatty)
76    {
77        ase96.Destroy();
78        l96 += 1;
79        aseet();
80    }
81    void luoruumis(Vector paikka,Image kuva)
82    {
83        GameObject ruumis = new GameObject(60*1.5, 60*1.5);
84        ruumis.Image = kuva;
85        ruumis.Position = paikka;
86        Add(ruumis, -1);
87        ruumis.MaximumLifetime = TimeSpan.FromSeconds(200);
88        ruumis.Animation = new Animation(ruumisvihu);
89        ruumis.Animation.FPS = 7;
90        ruumis.Animation.Start();
91    }
92    void lepakko(Vector paikka, double leveys, double korkeus)
93    {
94       /* arvotext(paikka, leveys, korkeus);
95        Pelihahmo lepakko = new Pelihahmo(50, 50, 20, 20);
96        lepakko.Position = paikka;
97        lepakko.LinearDamping = 0.5;
98        Add(lepakko);
99        lepakko.CollisionIgnoreGroup = 3;
100
101
102        Image c = LoadImage("zombi");
103        //vihu.Shape = Shape.FromImage(c);
104        lepakko.Image = c;
105        lepakko.ElamaLaskuri.LowerLimit += delegate
106        {
107            lepakko.Destroy();
108            luoruumis(lepakko.Position, ruumisvihu[0]);
109        };
110
111        FollowerBrain aivo = new FollowerBrain(player);
112        aivo.Speed = 200;
113        lepakko.Brain = aivo;
114        lepakko.Tag = "vihu";
115        aivo.TurnWhileMoving = true;
116        AddCollisionHandler(lepakko, "player", delegate(PhysicsObject a, PhysicsObject b)
117        {
118            vahinko(a, b, 10);
119        });
120
121        Timer ajastin = new Timer();
122        ajastin.Interval = 0.05;
123        ajastin.Timeout += delegate
124        {
125            GameObject väistä = null;
126            double väistöEtäisyys = 10;
127            foreach (GameObject ammus2 in GetObjectsWithTag("ammus"))
128            {
129                double etäisyys = Vector.Distance(ammus2.Position, lepakko.Position);
130                if (Vector.Distance(ammus2.Position, lepakko.Position) < väistöEtäisyys)
131                {
132                    väistöEtäisyys = etäisyys;
133                    väistä = ammus2;
134                }
135            }
136
137            if (väistä != null)
138            {
139                lepakko.Brain = null;
140                lepakko.Push((lepakko.Position - väistä.Position) * 500);
141            }
142            else
143            {
144                lepakko.Brain = aivo;
145            }
146        };
147        ajastin.Start();*/
148    }
149    void Vihu(Vector paikka, double leveys, double korkeus)
150    {
151        arvotext(paikka, leveys, korkeus);
152        Pelihahmo vihu = new Pelihahmo(50, 50, 20, 20);
153        vihu.Position = paikka;
154        vihu.LinearDamping = 0.5;
155        Add(vihu);
156
157       
158       
159        Image c = LoadImage("zombi");
160        //vihu.Shape = Shape.FromImage(c);
161        vihu.Image = c;
162        vihu.ElamaLaskuri.LowerLimit += delegate
163           
164        { 
165            vihu.Destroy();
166            luoruumis(vihu.Position, ruumisvihu[0]);
167        };
168
169        FollowerBrain aivo = new FollowerBrain(player);
170        aivo.Speed = 200;
171        vihu.Brain = aivo;
172        vihu.Tag = "vihu";
173        aivo.TurnWhileMoving = true;
174        AddCollisionHandler(vihu, "player", delegate(PhysicsObject a, PhysicsObject b)
175        {
176            vahinko(a, b, 10);
177        });
178
179        Timer ajastin = new Timer();
180        ajastin.Interval = 0.05;
181        ajastin.Timeout += delegate
182        {
183            GameObject väistä = null;
184            double väistöEtäisyys = 10;
185            foreach (GameObject ammus in GetObjectsWithTag("ammus"))
186            {
187                double etäisyys = Vector.Distance(ammus.Position, vihu.Position);
188                if (Vector.Distance(ammus.Position, vihu.Position) < väistöEtäisyys)
189                {
190                    väistöEtäisyys = etäisyys;
191                    väistä = ammus;
192                }
193            }
194
195            if (väistä != null)
196            {
197                vihu.Brain = null;
198                vihu.Push((vihu.Position - väistä.Position) * 500);
199            }
200            else
201            {
202                vihu.Brain = aivo;
203            }
204        };
205        ajastin.Start();
206    }
207   
208    void aseet()
209    {
210
211        if (l96 > 0)
212        {
213            Keyboard.Listen(Key.D1, ButtonState.Pressed, aseenVaihto, "aseen vaihto", 1);
214        }   
215           
216       
217       
218        Keyboard.Listen(Key.D3, ButtonState.Pressed, aseenVaihto, "aseen vaihto", 2);
219        Keyboard.Listen(Key.D4, ButtonState.Pressed, aseenVaihto, "aseen vaihto", 3);
220        Keyboard.Listen(Key.Space, ButtonState.Pressed, lyö, "aseen vaihto");
221
222       
223       
224    }
225    void aseenVaihto(int ase)
226    {
227        if (aseNyt != null)
228        {
229            aseNyt.Destroy();
230        }
231       
232        switch (ase)
233        {
234            case 1:         
235                aseNyt = Mouse.Listen(MouseButton.Left, ButtonState.Pressed, ammu, "pum pum");
236                break;
237            case 2:
238                aseNyt = Mouse.Listen(MouseButton.Left, ButtonState.Down, block, "pum pum");
239                break;
240            case 3:
241                aseNyt = Mouse.Listen(MouseButton.Left, ButtonState.Pressed, ammupistol, "pum pum");
242                break;
243        }   
244    }
245    void block()
246    {     
247        Image c = LoadImage("characterovi");
248        player.Shape = Shape.FromImage(c);
249        player.Image = c;
250
251        ammus = new PhysicsObject(10.0, 100.0);
252        ammus.Shape = Shape.Rectangle;
253        ammus.Color = Color.Gray;
254        ammus.Position = player.Position + Vector.FromLengthAndAngle(40, player.Angle);
255        ammus.CollisionIgnoreGroup = 2;
256        ammus.Angle = player.Angle;
257        Add(ammus);
258        ammus.Tag = "ammus";
259        ammus.IsVisible = false;
260       
261        //ammus.Hit(impulssi);
262        ammus.MaximumLifetime = new TimeSpan(20000);
263
264    }
265    void lyö()
266    {
267        Image c = LoadImage("charactersword");
268        player.Shape = Shape.FromImage(c);
269        player.Image = c;
270
271        miekka = new PhysicsObject(50.0, 5.0);
272        miekka.Shape = Shape.Circle;
273        miekka.Color = Color.Gray;
274        Image y = LoadImage("sword");
275        miekka.Image = y;
276        miekka.Position = player.Position + (player.Angle + Angle.FromDegrees(90)).GetVector()*-15 + player.Angle.GetVector()*11;
277        miekka.CollisionIgnoreGroup = 1;
278        miekka.Angle = player.Angle + Angle.FromDegrees(45);
279       
280        Add(miekka);
281        Vector impulssi = Vector.FromLengthAndAngle(50, player.Angle + Angle.FromDegrees(46));
282        miekka.Hit(impulssi);
283        miekka.MaximumLifetime = new TimeSpan(2000000);
284        AddCollisionHandler(miekka, "vihu", delegate(PhysicsObject a, PhysicsObject b)
285        {
286            vahinko(a, b, 20);
287        });
288
289
290    }
291    void ammu()
292    {
293       
294        Image c = LoadImage("characterl96");
295        player.Shape = Shape.FromImage(c);
296        player.Image = c;
297       
298       
299
300        ammus = new PhysicsObject(5.0, 5.0);
301        ammus.Shape = Shape.Circle;
302        ammus.Color = Color.Gold;
303        ammus.Position = player.Position;
304        ammus.CollisionIgnoreGroup = 1;
305        Image d = LoadImage("bullet");
306        ammus.Shape = Shape.FromImage(d);
307        ammus.Image = d;
308        ammus.Angle = player.Angle;
309        ammus.Tag = "ammus";
310        Add(ammus);
311
312        Vector impulssi = Vector.FromLengthAndAngle(2500, player.Angle);
313        ammus.Hit(impulssi);
314        ammus.MaximumLifetime = new TimeSpan(20000000);
315
316        AddCollisionHandler(ammus, "vihu", delegate(PhysicsObject a, PhysicsObject b)
317        {
318            vahinko(a, b, 20);
319        });
320
321       
322    }
323    void ammupistol()
324    {
325
326        Image i = LoadImage("thecharacterpistol");
327        player.Shape = Shape.FromImage(i);
328        player.Image = i;
329
330
331
332        ammus = new PhysicsObject(10.0, 10.0);
333        ammus.Shape = Shape.Circle;
334        ammus.Color = Color.Gold;
335        ammus.Position = player.Position;
336        ammus.CollisionIgnoreGroup = 1;
337        Image d = LoadImage("bullet");
338        ammus.Shape = Shape.FromImage(d);
339        ammus.Image = d;
340        ammus.Angle = player.Angle;
341        ammus.Tag = "ammus";
342        Add(ammus);
343
344        Vector impulssi = Vector.FromLengthAndAngle(2500, player.Angle);
345        ammus.Hit(impulssi);
346        ammus.MaximumLifetime = new TimeSpan(20000000);
347        AddCollisionHandler(ammus, "vihu", delegate(PhysicsObject a, PhysicsObject b)
348        {
349            vahinko(a, b, 10);
350        });
351
352
353    }
354    void zombinruokaa(PhysicsObject player, PhysicsObject vihu )
355    {
356        Pelihahmo hahmo = player as Pelihahmo;
357        if (hahmo != null)
358        {
359            hahmo.ElamaLaskuri.Value -= 10;
360        }
361    }
362    void vahinko(PhysicsObject ammus,PhysicsObject vihu,int vahinkomäär  )
363    {
364        Pelihahmo hahmo = vihu as Pelihahmo;
365        if(hahmo != null)
366        {
367            hahmo.ElamaLaskuri.Value -= vahinkomäär;
368        }
369
370    }
371
372    void luohuone(int huoneNumero)
373    {
374        Window.Width = 800;
375        Window.Height = 800;
376        Camera.Zoom(0.5);
377
378       
379        //Level.Background.Image = lattiatext[0];
380        //Level.Background.TileToLevel();
381
382       
383       
384       
385        TileMap ruudut = TileMap.FromLevelAsset("huone" + huoneNumero);
386        TileMap ruudut2 = TileMap.FromLevelAsset("huone" + huoneNumero);
387
388       
389           
390       
391        //3. Execute luo kentän
392        //   Parametreina leveys ja korkeus
393       
394       
395        ruudut.SetTileMethod('p', LuoPelaaja);
396        ruudut.SetTileMethod('w', LuoTaso);
397
398        ruudut.SetTileMethod('k', LuoOvi, Angle.FromDegrees(180));
399       
400
401        ruudut.SetTileMethod('r', luoAvain);
402        ruudut.SetTileMethod('s', luoStaminup);
403        ruudut.SetTileMethod('_', arvotext);
404        ruudut.SetTileMethod('a', LuoAse96);
405        ruudut.SetTileMethod('j', luoJuggernog);
406        /*ruudut.SetTileMethod('z', Luokolo5);
407        ruudut.SetTileMethod('b', Luokolo2);
408        ruudut.SetTileMethod('g', Luokolo3);
409        ruudut.SetTileMethod('t', Luokolo4);
410        ruudut.SetTileMethod('r', Luokolo1);*/
411       
412       
413
414       
415
416
417        ruudut2.SetTileMethod('v', Vihu);
418        ruudut2.SetTileMethod('l', lepakko);
419        ruudut.Execute(64, 64);
420        ruudut2.Execute(64, 64);
421       
422       
423
424        Camera.StayInLevel = true;
425        näppäimet();
426        aseet();
427        avaintenLkm = 0;
428       
429       
430       
431
432    }
433   
434    void AvaintenKerays(PhysicsObject tormaaja, PhysicsObject tormatty)
435    {
436       /*witch(kohde)
437        {
438            case "avain":
439                avaintenLkm += 1;
440                tormatty.Destroy();
441
442                break;
443            default:
444                break;
445        }*/
446
447        avaintenLkm++;
448        tormatty.Destroy();
449           
450    }
451
452    void arvotext(Vector paikka, double leveys, double korkeus)
453    {
454        GameObject taso = new GameObject(leveys, korkeus);
455        taso.Position = paikka;
456        //taso.CollisionIgnoreGroup = 1;
457        if (RandomGen.NextDouble(0, 100) < 95)
458        {
459            taso.Image = lattiatext[2];
460        }
461        else
462        {
463            int x = RandomGen.NextInt(2);
464            taso.Image = lattiatext[x];
465        }
466
467
468
469
470       
471        Add(taso, -2);
472    }
473    void LuoTaso(Vector paikka, double leveys, double korkeus)
474    {
475        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
476        taso.Position = paikka; 
477        //taso.CollisionIgnoreGroup = 1;
478        taso.Color = Color.Gray;
479        Image a = LoadImage("wall");
480       
481        taso.Image = a;
482        Add(taso);
483    }
484    void luoAvain(Vector paikka, double leveys, double korkeus)
485    {
486        arvotext(paikka, leveys, korkeus);
487        if (RandomGen.NextDouble(0, 100) < 80)
488        {
489            avain = new PhysicsObject(50, 50);
490            Image c = LoadImage("gaykey");
491
492            avain.Image = c;
493            avain.Position = paikka;
494            avain.Tag = "avain";
495            Add(avain);
496        }
497       
498
499
500        //delegate(PhysicsObject a, PhysicsObject b) {kerays(a, b, "avain");}
501    }
502    void OvenAvaus(PhysicsObject tormaaja, PhysicsObject ovi)
503    {
504        if (Keyboard.GetKeyState(Key.E)==ButtonState.Down)
505        {
506            elämät = player.ElamaLaskuri.Value;
507            ClearAll();
508            luohuone(RandomGen.NextInt(2, 6));
509
510
511        }
512    }
513    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
514    {
515        arvotext(paikka, leveys, korkeus);
516        player = new Pelihahmo(45, 50, elämät +nog, 100 + nog);
517        Image c = LoadImage("thecharacter");
518        player.Shape = Shape.FromImage(c);
519        player.Image = c;
520        player.ElamaLaskuri.LowerLimit += delegate
521        {
522            player.Destroy();
523            luoruumis(player.Position, ruumisvihu[0]);
524        };
525       
526        //player.
527     
528        player.Position = paikka;
529        player.LinearDamping = 0.6;
530        player.AngularDamping = 0.6;
531        player.CollisionIgnoreGroup = 1;
532       
533        player.MaxAngularVelocity = 8000.0;
534        player.Color = Color.Brown;
535        player.Mass = 1;
536        Add(player);
537        player.Tag="player";
538
539        AddCollisionHandler(player, "avain", AvaintenKerays);
540        AddCollisionHandler(player, "ovi", OvenAvaus);
541        AddCollisionHandler(player, "l96wallbuy", PoimiAse);
542        AddCollisionHandler(player, "juggernog", PoimiNog);
543        //AddCollisionHandler(vihu, "player", zombinruokaa);
544
545        ProgressBar elamaPalkki = new ProgressBar(player.Width, player.Height* 0.25);
546        elamaPalkki.X = player.X - 20;
547        elamaPalkki.Y = player.Y;
548        elamaPalkki.Angle = player.Angle + Angle.FromDegrees(90);
549        elamaPalkki.BindTo(player.ElamaLaskuri);
550        player.Add(elamaPalkki);
551
552       
553
554       
555       
556       
557
558        //player.CollisionIgnoreGroup = 1;
559        Camera.Follow(player);
560    }
561    void näppäimet()
562    {
563        //Keyboard.Listen(Key.W, ButtonState.Down, liike, "liiku", Vector.FromLengthAndAngle(1500, player.Angle));
564        //Keyboard.Listen(Key.S, ButtonState.Down, liike, "liiku", Vector.FromLengthAndAngle(-500, player.Angle));
565        //Keyboard.Listen(Key.D, ButtonState.Down, liike, "liiku", Vector.FromLengthAndAngle(-1000, player.Angle + Angle.FromDegrees(90)));
566        //Keyboard.Listen(Key.A, ButtonState.Down, liike, "liiku", Vector.FromLengthAndAngle(1000, player.Angle + Angle.FromDegrees(90)));
567
568        Keyboard.Listen(Key.W, ButtonState.Down, liike, "liiku", new Vector(0, 500));
569        Keyboard.Listen(Key.S, ButtonState.Down, liike, "liiku", new Vector(0, -250));
570        Keyboard.Listen(Key.D, ButtonState.Down, liike, "liiku", new Vector(500, 0));
571        Keyboard.Listen(Key.A, ButtonState.Down, liike, "liiku", new Vector(-500, 0));
572
573        Mouse.IsCursorVisible = true;
574        Mouse.ListenMovement(0.0, kaanny, "");
575       
576        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
577    }
578    void kaanny(AnalogState hiirenLiike)
579    {
580        Vector suunta = Mouse.PositionOnWorld - player.AbsolutePosition;
581
582        if (suunta.Magnitude != 0)
583        {
584            suunta.Normalize();
585            player.Angle = suunta.Angle;
586        }
587    }
588    void liike(Vector vektori)
589    {
590        player.Move((player.Angle + vektori.Angle + Angle.FromDegrees(-90)).GetVector() * vektori.Magnitude);
591    }
592
593    void LuoOvi(Vector paikka, double leveys, double korkeus, Angle Kulma)
594    {
595        ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
596        ovi.Position = paikka;
597        Image c = LoadImage("door");
598       
599        ovi.Image = c;
600        ovi.Tag = "ovi";
601       
602
603       
604        Add(ovi);
605
606    }
607    void luoStaminup(Vector paikka, double leveys, double korkeus)
608    {
609        arvotext(paikka, leveys, korkeus);
610        staminup = PhysicsObject.CreateStaticObject(leveys, korkeus);
611        staminup.Position = paikka;
612        Image s = LoadImage("staminup");
613
614        staminup.Image = s;
615        staminup.Tag = "staminup";
616
617
618        Add(staminup);
619
620
621    }
622    void luoJuggernog(Vector paikka, double leveys, double korkeus)
623    {
624        {
625            arvotext(paikka, leveys, korkeus);
626            juggernog = PhysicsObject.CreateStaticObject(leveys, korkeus);
627            juggernog.Position = paikka;
628            Image s = LoadImage("juggernog");
629
630            juggernog.Image = s;
631            juggernog.Tag = "juggernog";
632
633
634            Add(juggernog);
635
636
637        }
638    }
639    void PoimiNog(PhysicsObject tormaaja, PhysicsObject tormatty)
640    {
641        tormatty.Destroy();
642        nog += 40;
643        player.ElamaLaskuri.Value += 40;
644        aseet();
645    }
646   /* PhysicsObject Luokolo(Vector paikka, double leveys, double korkeus, Image kuva)
647    {
648        PhysicsObject kolo = PhysicsObject.CreateStaticObject(leveys, korkeus);
649        kolo.Position = paikka;
650       
651        //taso.CollisionIgnoreGroup = 1;
652        kolo.Color = Color.Gray;
653       
654
655        kolo.Image = kuva;
656        Add(kolo);
657        return kolo;
658    }
659    void Luokolo1(Vector paikka, double leveys, double korkeus)
660    {
661        Luokolo(paikka, leveys, korkeus, lattiakolo[0]);
662    }
663    void Luokolo2(Vector paikka, double leveys, double korkeus)
664    {
665        PhysicsObject kolo = Luokolo(paikka, leveys, korkeus, lattiakolo[3]);
666       
667    }
668    void Luokolo3(Vector paikka, double leveys, double korkeus)
669    {
670        PhysicsObject kolo = Luokolo(paikka, leveys, korkeus, lattiakolo[4]);
671
672    }
673    void Luokolo4(Vector paikka, double leveys, double korkeus)
674    {
675        PhysicsObject kolo = Luokolo(paikka, leveys, korkeus, lattiakolo[5]);
676
677    }
678    void Luokolo5(Vector paikka, double leveys, double korkeus)
679    {
680        PhysicsObject kolo = Luokolo(paikka, leveys, korkeus, lattiakolo[2]);
681
682    }*/
683   
684
685
686
687}
Note: See TracBrowser for help on using the repository browser.