source: 2017/31/RoniM/New folder/New folder/Bossfloors/Bossfloors/Bossfloors/Bossfloors.cs @ 9351

Revision 9351, 15.6 KB checked in by npo17_71, 23 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9class Pelaaja : PhysicsObject
10{
11    private IntMeter pisteLaskuri = new IntMeter(0);
12    private IntMeter pisteLaskuri2 = new IntMeter(0);
13    public IntMeter PisteLaskuri { get { return pisteLaskuri; } }
14
15    public AssaultRifle Ase;
16
17    public Pelaaja(double leveys, double korkeus)
18        : base(leveys, korkeus)
19    {
20    }
21}
22
23public class Bossfloors : PhysicsGame
24{
25
26    Image kpelaaja1 = LoadImage("kpelaaja1");
27    //Image bpelaaja2 = LoadImage("kpelaaja2");
28    //Image bpelaaja3 = LoadImage("kpelaaja3");
29    //Image bpelaaja4 = LoadImage("kpelaaja4");
30    Image Points = LoadImage("Points");
31    Image vihu5 = LoadImage("vihu");
32    Image zzombi = LoadImage("zzombi");
33
34    Pelaaja pelaaja1;
35    //Pelaaja pelaaja2;
36    //Pelaaja pelaaja3;
37    //Pelaaja pelaaja4;
38    //IntMeter pisteLaskuri;
39     
40    const int RUUDUN_KOKO = 30;
41    int kenttaNro = 1;
42    public int Elamat { get; set; }
43    public bool OnHidas { get; set; }
44    public int KenganNumero { get; set; }
45    public int Rahat { get; set; }
46    public Vector RespausKoordinaatit { get; set; }
47    const double NOPEUS = 800;
48    const double pyoriminenNopeus = 4.0;
49    IntMeter pisteLaskuri;
50
51
52    public override void Begin()
53    {
54        //LuoKentta("kentta");
55
56        LataaKentta();
57
58    }
59
60    class Rakennus : PhysicsObject
61    {
62        private IntMeter elamaLaskuri = new IntMeter(50, 0, 50);
63        public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
64
65        public Rakennus(double leveys, double korkeus)
66            : base(leveys, korkeus)
67        {
68            elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
69        }
70
71    }
72    void LataaKentta()
73    {
74        ClearAll();
75
76        if (kenttaNro == 1) LuoKentta("kentta");
77        else if (kenttaNro == 2) LuoKentta("dungeon 1");
78        else if (kenttaNro == 3) LuoKentta("boss 1");
79        else if (kenttaNro > 3)
80        {
81            Exit();
82            return;
83        }
84
85        //LuoPistelaskuri();
86        // LuoPistelaskuri2();
87        //luoelamalaskuri2();
88       
89        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(-1000, 0));
90        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(1000, 0));
91        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, 1000));
92        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, -1000));
93        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, null, pelaaja1);
94
95        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
96        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
97
98        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(-1000, 0));
99        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(1000, 0));
100        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, 1000));
101        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, -1000));
102        ControllerOne.Listen(Button.A, ButtonState.Down, AmmuAseella, null, pelaaja1);
103
104    }
105    Pelaaja Luopelaaja(Vector paikka, double leveys, double korkeus, Vector paikka2)
106    {
107        Pelaaja pelaaja1 = new Pelaaja(27, 27);
108        pelaaja1.Position = paikka;
109        pelaaja1.LinearDamping = 0.9;
110        Elamat = 3;
111        OnHidas = false;
112        KenganNumero = 42;
113        Rahat = 1000;
114        RespausKoordinaatit = Vector.Zero;
115        Vector pelaajanSuunta = Vector.FromLengthAndAngle(pyoriminenNopeus, pelaaja1.Angle);
116        pelaaja1.Push(pelaajanSuunta);
117        pelaaja1.CanRotate = false;
118        pelaaja1.Tag = "pelaaja";
119        pelaaja1.CollisionIgnoreGroup = 1;
120        AddCollisionHandler(pelaaja1, "vihollinen", pelaajaosui);
121        AddCollisionHandler(pelaaja1, "rakennus", TormasiMaaliin);
122       
123       
124     //   
125         
126        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
127       //
128      // 
129
130        pelaaja1.Ase = new AssaultRifle(0, 0);
131        pelaaja1.Ase.ProjectileCollision = AmmusOsui;
132
133        pelaaja1.Ase.CanHitOwner = false;
134     
135        pelaaja1.Ase.Ammo.MaxValue = 100;
136
137        Timer aikaLaskuri = new Timer();
138        aikaLaskuri.Interval = 0.3333;
139        aikaLaskuri.Timeout += delegate
140        {
141            pelaaja1.Ase.Ammo.Value += 1;
142        };
143        aikaLaskuri.Start();
144
145        pelaaja1.Ase.Power.DefaultValue = 80;
146        pelaaja1.Ase.FireRate = 50;
147        pelaaja1.Add(pelaaja1.Ase);
148
149        Add(pelaaja1);
150        return pelaaja1;
151
152
153    }
154
155    void TormasiMaaliin(PhysicsObject pelaaja, PhysicsObject dungeon)
156    {
157        //Kasvatetaan kenttänumeroa yhdellä ja siirrytään seuraavaan kenttään:
158        kenttaNro++;
159        LataaKentta();
160    }
161
162   
163    void Tahtaa(AnalogState hiirenLiike)
164    {
165        Vector suunta = (Mouse.PositionOnWorld - pelaaja1.Ase.AbsolutePosition).Normalize();
166        pelaaja1.Ase.Angle = suunta.Angle;
167        Mouse.IsCursorVisible = true;
168    }
169
170   
171
172    void AmmuAseella(Pelaaja pelaaja)
173    {
174        if (pelaaja.IsDestroyed) return;
175
176      //  pelaaja.Ase.AbsoluteAngle = pelaaja.Velocity.Angle;
177        PhysicsObject ammus = pelaaja.Ase.Shoot();
178
179        if (ammus != null)
180        {
181           
182            //ammus.Image = ...
183            ammus.Color = (Color.Gold);
184               
185            ammus.MaximumLifetime = TimeSpan.FromSeconds(0.1);
186        }
187    }
188
189 
190    void luoelamalaskuri()
191    {
192        //elamaLaskuri = new DoubleMeter(10);
193        //elamaLaskuri.MaxValue = 10;
194        //    elamaLaskuri.LowerLimit += ElamaLoppui;
195
196
197        ProgressBar elamalaskuri = new ProgressBar(150, 20);
198        elamalaskuri.X = Screen.Left + 150;
199        elamalaskuri.BindTo(pelaaja1.Ase.Ammo);
200        elamalaskuri.Y = Screen.Top - 20;
201        elamalaskuri.Color = Color.Transparent;
202
203        //Palkin väri:
204        elamalaskuri.BarColor = Color.Red;
205
206        //Reunan väri:
207        elamalaskuri.BorderColor = Color.Black;
208     
209        Add(elamalaskuri);
210    }
211    void LuoPistelaskuri()
212    {
213        pisteLaskuri = new IntMeter(0);
214
215        Label pisteNaytto = new Label(150, 20);
216        pisteNaytto.IntFormatString = "Pisteitä: {0:D3}";
217        pisteNaytto.X = Screen.Left + 150;
218        pisteNaytto.BindTo(pelaaja1.Ase.Ammo);
219        pisteNaytto.Y = Screen.Top - 20;
220        pisteNaytto.TextColor = Color.Black;
221        //  pisteNaytto.Color = Color.White;
222
223       
224        Add(pisteNaytto, 1);
225    }
226    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
227    {
228        ammus.Destroy();
229
230        if (kohde.Tag.Equals("zombi") || kohde.Tag.Equals("monster"))
231        {
232            kohde.Destroy();
233            ((Pelaaja)pelaaja1).PisteLaskuri.Value += 5;
234
235        }
236    }
237
238    void LiikutaPelaajaa(PhysicsObject pelaaja, Vector vektori)
239    {
240        pelaaja.Push(vektori);
241    }
242
243
244    void LuoKentta(string nimi)
245    {
246        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(nimi);
247        ruudut.SetTileMethod(Color.FromHexCode("FF006E"), LuoPelaaja1);
248        //ruudut.SetTileMethod(Color.FromHexCode("0019FF"), LuoPelaaja2);
249        //// ruudut.SetTileMethod(Color.Yellow, LuoTahti);
250        //ruudut.SetTileMethod(Color.FromHexCode("00FF4C"), LuoPelaaja3);
251        //ruudut.SetTileMethod(Color.FromHexCode("D86800"), LuoPelaaja4);
252        ruudut.SetTileMethod(Color.FromHexCode("000000"), LuoSeina);
253        ruudut.SetTileMethod(Color.FromHexCode("FA00FF"), LuoSyotava);
254       
255        ruudut.SetTileMethod(Color.FromHexCode("AD77FF"), luomonster);
256        ruudut.SetTileMethod(Color.FromHexCode("B60000"), luozombi);
257        ruudut.SetTileMethod(Color.FromHexCode("FF6A00"), dungeon);
258        ruudut.SetTileMethod(Color.FromHexCode("FFFFFF"), safezone);
259        Level.Background.Color = Color.Gold;
260
261        ruudut.Execute(30, 30);
262        Camera.ZoomFactor = 0.45;
263        Camera.Follow(pelaaja1);
264    }
265
266    //void SeuraavaKentta(PhysicsObject pelaaja, PhysicsObject maali)
267    //{
268    //    kenttaNro++;
269    //    LataaKentta();
270    //}
271
272   
273    void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
274    {
275        pelaaja1 = Luopelaaja(paikka, leveys, korkeus, new Vector(Screen.Left + 400, Screen.Top - 500));
276        pelaaja1.Image = kpelaaja1;
277        LuoPistelaskuri();
278        luoelamalaskuri();
279    }
280
281    //void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
282    //{
283    //    pelaaja2 = Luopelaaja(paikka, leveys, korkeus, new Vector(Screen.Right - 400, Screen.Top - 500));
284    //    pelaaja2.Image = bpelaaja2;
285
286    //}
287    //void LuoPelaaja3(Vector paikka, double leveys, double korkeus)
288    //{
289    //    pelaaja3 = Luopelaaja(paikka, leveys, korkeus, new Vector(Screen.Left + 400, Screen.Bottom + 500));
290    //    pelaaja3.Image = bpelaaja3;
291    //}
292    //void LuoPelaaja4(Vector paikka, double leveys, double korkeus)
293    //{
294    //    pelaaja4 = Luopelaaja(paikka, leveys, korkeus, new Vector(Screen.Right - 400, Screen.Bottom + 500));
295    //    pelaaja4.Image = bpelaaja4;
296    //}
297    void LuoSeina(Vector paikka, double leveys, double korkeus)
298    {
299        PhysicsObject seina = new PhysicsObject(30, 30);
300
301        seina.Position = paikka;
302        seina.MakeStatic();
303        seina.Color = Color.Black;
304        seina.Tag = "seina";
305
306
307        Add(seina);
308    }
309    void LuoSyotava(Vector paikka, double leveys, double korkeus)
310    {
311        Timer aikaLaskuri = new Timer();
312        aikaLaskuri.Interval = 10;
313        aikaLaskuri.Timeout += delegate
314        {
315            const int RUUDUN_KOKO = 40;
316
317            PhysicsObject syotava = new PhysicsObject(RUUDUN_KOKO / 3, RUUDUN_KOKO / 3);
318
319            syotava.Position = paikka;
320            syotava.Tag = "vihollinen";
321            syotava.Image = Points;
322
323
324            syotava.Color = Color.Blue;
325            LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
326            labyrinttiAivot.Speed = 200.0;
327            labyrinttiAivot.LabyrinthWallTag = "seina";
328            syotava.LifetimeLeft = TimeSpan.FromSeconds(100.0);
329
330            syotava.Brain = labyrinttiAivot;
331            Add(syotava);
332        };
333        aikaLaskuri.Start();
334    }
335
336
337    void pelaajaosui(PhysicsObject pelaaja1, PhysicsObject kohde)
338    {
339        if (kohde.Tag.Equals("vihollinen"))
340        {
341            kohde.Destroy();
342
343            ((Pelaaja)pelaaja1).PisteLaskuri.Value += 10;
344
345        }
346    }
347   
348    //Label LuoPistelaskuri2(Pelaaja pelaaja, Vector paikka)
349    //{
350    //    Label pisteNaytto2 = new Label(pelaaja.PisteLaskuri2);
351    //    pisteNaytto2.TextColor = Color.Yellow;
352    //    pisteNaytto2.Color = Color.Black;
353    //    pisteNaytto2.Title = "Pisteet2";
354    //    pisteNaytto2.Position = paikka;
355    //    Add(pisteNaytto2);
356    //    return pisteNaytto2;
357    //}
358
359    //MessageDisplay.Add("Pelaaja 1 hävisi pelin.");
360
361    void luomonster(Vector paikka, double leveys, double korkeus)
362    {
363        Timer aikaLaskuri = new Timer();
364        aikaLaskuri.Interval = 7;
365        aikaLaskuri.Timeout += delegate
366        {
367            PhysicsObject monster = new PhysicsObject(RUUDUN_KOKO / 3, RUUDUN_KOKO / 3);
368
369            monster.Position = paikka;
370            monster.Tag = "monster";
371            monster.Image = vihu5;
372            monster.Color = Color.Red;
373           LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
374            labyrinttiAivot.Speed = 150.0;
375            monster.LifetimeLeft = TimeSpan.FromSeconds(20.0);
376            AddCollisionHandler(monster, "pelaaja", pelaajaosui2);
377            labyrinttiAivot.LabyrinthWallTag = "seina";
378            monster.Brain = labyrinttiAivot;
379            Add(monster);
380        };
381        aikaLaskuri.Start();
382        //const int RUUDUN_KOKO = 40;
383    }
384    void pelaajaosui2(PhysicsObject monster, PhysicsObject kohde)
385    {
386        if (kohde.Tag.Equals("pelaaja"))
387        {
388            kohde.Destroy();
389
390
391            ((Pelaaja)kohde).PisteLaskuri.Value -= 1 / 100;
392
393        }
394    }
395    void luozombi(Vector paikka, double leveys, double korkeus)
396    {
397        Timer aikaLaskuri = new Timer();
398        aikaLaskuri.Interval = (10);
399           aikaLaskuri.Timeout += delegate
400        {
401            PhysicsObject zombi = new PhysicsObject(17, 17);
402
403            zombi.Position = paikka;
404            zombi.Tag = "zombi";
405
406            FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
407            RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
408            seuraajanAivot.Speed = 30;                 // Millä nopeudella kohdetta seurataan
409            seuraajanAivot.DistanceFar = 600;           // Etäisyys jolla aletaan seurata kohdetta
410            seuraajanAivot.DistanceClose = 200;         // Etäisyys jolloin ollaan lähellä kohdetta
411            seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
412            seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
413
414            ;
415            satunnaisAivot.ChangeMovementSeconds = 5;
416            zombi.Image = zzombi;
417            zombi.LifetimeLeft = TimeSpan.FromSeconds(60.0);
418            AddCollisionHandler(zombi, "pelaaja", pelaajaosui2);
419            satunnaisAivot.WanderRadius = 200;
420            //seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella;
421            zombi.Brain = satunnaisAivot;
422            zombi.Brain = seuraajanAivot;
423            Add(zombi, +1);
424        };
425        aikaLaskuri.Start();
426
427
428
429    }
430  //  void mitaTapahtuuKunOllaanLahella()
431  //  {
432  //      zombi.Color = Color.Red;
433  //  }
434
435    void dungeon(Vector paikka, double leveys, double korkeus)
436    {
437        Rakennus rakennus = new Rakennus(leveys, korkeus);
438        rakennus.Position = paikka;
439        rakennus.MakeStatic();
440        rakennus.Color = Color.Brown;
441        rakennus.CollisionIgnoreGroup = 2;
442        rakennus.Tag = "rakennus";
443        Add(rakennus);
444
445
446
447    }
448
449    void luovihu(Vector paikka, double leveys, double korkeus)
450    {
451        PhysicsObject vihu = new PhysicsObject(RUUDUN_KOKO / 3, RUUDUN_KOKO / 3);
452
453        vihu.Position = paikka;
454        vihu.Tag = "vihu";
455    }
456
457    void safezone(Vector paikka, double leveys, double korkeus)
458    {
459        PhysicsObject rakennus1 = new PhysicsObject(leveys, korkeus);
460        rakennus1.Position = paikka;
461        rakennus1.MakeStatic();
462        rakennus1.CollisionIgnoreGroup = 1;
463        rakennus1.Color = Color.White;
464        rakennus1.Tag = "rakennus1";
465        Add(rakennus1);
466
467    }
468    //void luoelamalaskuri2()
469    //{
470    //    //elamaLaskuri = new DoubleMeter(10);
471    //    //elamaLaskuri.MaxValue = 10;
472    //    //    elamaLaskuri.LowerLimit += ElamaLoppui;
473
474
475    //    ProgressBar elamalaskuri2 = new ProgressBar(150, 20);
476    //    elamalaskuri2.X = Screen.Left + 150;
477    //    elamalaskuri2.Y = Screen.Top - 40;
478    //    elamalaskuri2.Color = Color.Transparent;
479
480    //    //Palkin väri:
481    //    elamalaskuri2.BarColor = Color.Red;
482
483    //    //Reunan väri:
484    //    elamalaskuri2.BorderColor = Color.Black;
485    //    elamalaskuri2.BindTo(pisteNaytto2);
486    //    Add(elamalaskuri2);
487    //}
488
489}
490
491
492
493
494
495
Note: See TracBrowser for help on using the repository browser.