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

Revision 9309, 13.9 KB checked in by npo17_71, 23 months ago (diff)

1.8.päivitys

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
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
53    public override void Begin()
54    {
55        LuoKentta();
56
57        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(-1000, 0));
58        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(1000, 0));
59        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, 1000));
60        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, -1000));
61        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, null, pelaaja1);
62
63        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
64        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
65
66        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(-1000, 0));
67        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(1000, 0));
68        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, 1000));
69        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, LiikutaPelaajaa, null, pelaaja1, new Vector(0, -1000));
70        ControllerOne.Listen(Button.A, ButtonState.Down, AmmuAseella, null, pelaaja1);
71
72
73    }
74    class Rakennus : PhysicsObject
75    {
76        private IntMeter elamaLaskuri = new IntMeter(50, 0, 50);
77        public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
78
79        public Rakennus(double leveys, double korkeus)
80            : base(leveys, korkeus)
81        {
82            elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
83        }
84
85    }
86    Pelaaja Luopelaaja(Vector paikka, double leveys, double korkeus, Vector paikka2)
87    {
88        Pelaaja pelaaja1 = new Pelaaja(27, 27);
89        pelaaja1.Position = paikka;
90        pelaaja1.LinearDamping = 0.9;
91        Elamat = 3;
92        OnHidas = false;
93        KenganNumero = 42;
94        Rahat = 1000;
95        RespausKoordinaatit = Vector.Zero;
96        Vector pelaajanSuunta = Vector.FromLengthAndAngle(pyoriminenNopeus, pelaaja1.Angle);
97        pelaaja1.Push(pelaajanSuunta);
98        pelaaja1.CanRotate = false;
99        pelaaja1.Tag = "pelaaja";
100        pelaaja1.CollisionIgnoreGroup = 1;
101        AddCollisionHandler(pelaaja1, "vihollinen", pelaajaosui);
102       
103     //   luoelamalaskuri2();
104         
105        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
106       // LuoPistelaskuri();
107      //  LuoPistelaskuri2();
108
109        pelaaja1.Ase = new AssaultRifle(0, 0);
110        pelaaja1.Ase.ProjectileCollision = AmmusOsui;
111
112        pelaaja1.Ase.CanHitOwner = false;
113     
114        pelaaja1.Ase.Ammo.MaxValue = 100;
115
116        Timer aikaLaskuri = new Timer();
117        aikaLaskuri.Interval = 1.0;
118        aikaLaskuri.Timeout += delegate
119        {
120            pelaaja1.Ase.Ammo.Value += 1;
121        };
122        aikaLaskuri.Start();
123
124        pelaaja1.Ase.Power.DefaultValue = 80;
125        pelaaja1.Ase.FireRate = 5;
126        pelaaja1.Add(pelaaja1.Ase);
127
128        Add(pelaaja1);
129        return pelaaja1;
130
131
132    }
133    void Tahtaa(AnalogState hiirenLiike)
134    {
135        Vector suunta = (Mouse.PositionOnWorld - pelaaja1.Ase.AbsolutePosition).Normalize();
136        pelaaja1.Ase.Angle = suunta.Angle;
137        Mouse.IsCursorVisible = true;
138    }
139    void AmmuAseella(Pelaaja pelaaja)
140    {
141        if (pelaaja.IsDestroyed) return;
142
143      //  pelaaja.Ase.AbsoluteAngle = pelaaja.Velocity.Angle;
144        PhysicsObject ammus = pelaaja.Ase.Shoot();
145
146        if (ammus != null)
147        {
148           
149            //ammus.Image = ...
150            ammus.Color = (Color.Gold);
151               
152            ammus.MaximumLifetime = TimeSpan.FromSeconds(30.0);
153        }
154    }
155
156 
157    void luoelamalaskuri()
158    {
159        //elamaLaskuri = new DoubleMeter(10);
160        //elamaLaskuri.MaxValue = 10;
161        //    elamaLaskuri.LowerLimit += ElamaLoppui;
162
163
164        ProgressBar elamalaskuri = new ProgressBar(150, 20);
165        elamalaskuri.X = Screen.Left + 150;
166        elamalaskuri.BindTo(pelaaja1.Ase.Ammo);
167        elamalaskuri.Y = Screen.Top - 20;
168        elamalaskuri.Color = Color.Transparent;
169
170        //Palkin väri:
171        elamalaskuri.BarColor = Color.Red;
172
173        //Reunan väri:
174        elamalaskuri.BorderColor = Color.Black;
175     
176        Add(elamalaskuri);
177    }
178    void LuoPistelaskuri()
179    {
180        pisteLaskuri = new IntMeter(0);
181
182        Label pisteNaytto = new Label(150, 20);
183        pisteNaytto.IntFormatString = "Pisteitä: {0:D3}";
184        pisteNaytto.X = Screen.Left + 150;
185        pisteNaytto.BindTo(pelaaja1.Ase.Ammo);
186        pisteNaytto.Y = Screen.Top - 20;
187        pisteNaytto.TextColor = Color.Black;
188        //  pisteNaytto.Color = Color.White;
189
190       
191        Add(pisteNaytto, 1);
192    }
193    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
194    {
195        ammus.Destroy();
196
197        if (kohde.Tag.Equals("zombi") || kohde.Tag.Equals("monster"))
198        {
199            kohde.Destroy();
200            ((Pelaaja)pelaaja1).PisteLaskuri.Value += 5;
201
202        }
203    }
204
205    void LiikutaPelaajaa(PhysicsObject pelaaja, Vector vektori)
206    {
207        pelaaja.Push(vektori);
208    }
209
210
211    void LuoKentta()
212    {
213        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("map1 valmis melkein");
214        ruudut.SetTileMethod(Color.FromHexCode("FF006E"), LuoPelaaja1);
215        //ruudut.SetTileMethod(Color.FromHexCode("0019FF"), LuoPelaaja2);
216        //// ruudut.SetTileMethod(Color.Yellow, LuoTahti);
217        //ruudut.SetTileMethod(Color.FromHexCode("00FF4C"), LuoPelaaja3);
218        //ruudut.SetTileMethod(Color.FromHexCode("D86800"), LuoPelaaja4);
219        ruudut.SetTileMethod(Color.FromHexCode("000000"), LuoSeina);
220        ruudut.SetTileMethod(Color.FromHexCode("FA00FF"), LuoSyotava);
221        ruudut.SetTileMethod(Color.FromHexCode("AD77FF"), luomonster);
222        ruudut.SetTileMethod(Color.FromHexCode("3AFFC0"), luozombi);
223        ruudut.SetTileMethod(Color.FromHexCode("FF6A00"), dungeon);
224        ruudut.SetTileMethod(Color.FromHexCode("FFFFFF"), safezone);
225        Level.Background.Color = Color.Gold;
226
227        ruudut.Execute(30, 30);
228        Camera.ZoomFactor = 2.45;
229        Camera.Follow(pelaaja1);
230    }
231    void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
232    {
233        pelaaja1 = Luopelaaja(paikka, leveys, korkeus, new Vector(Screen.Left + 400, Screen.Top - 500));
234        pelaaja1.Image = kpelaaja1;
235        LuoPistelaskuri();
236        luoelamalaskuri();
237    }
238
239    //void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
240    //{
241    //    pelaaja2 = Luopelaaja(paikka, leveys, korkeus, new Vector(Screen.Right - 400, Screen.Top - 500));
242    //    pelaaja2.Image = bpelaaja2;
243
244    //}
245    //void LuoPelaaja3(Vector paikka, double leveys, double korkeus)
246    //{
247    //    pelaaja3 = Luopelaaja(paikka, leveys, korkeus, new Vector(Screen.Left + 400, Screen.Bottom + 500));
248    //    pelaaja3.Image = bpelaaja3;
249    //}
250    //void LuoPelaaja4(Vector paikka, double leveys, double korkeus)
251    //{
252    //    pelaaja4 = Luopelaaja(paikka, leveys, korkeus, new Vector(Screen.Right - 400, Screen.Bottom + 500));
253    //    pelaaja4.Image = bpelaaja4;
254    //}
255    void LuoSeina(Vector paikka, double leveys, double korkeus)
256    {
257        PhysicsObject seina = new PhysicsObject(30, 30);
258
259        seina.Position = paikka;
260        seina.MakeStatic();
261        seina.Color = Color.Black;
262        seina.Tag = "seina";
263
264
265        Add(seina);
266    }
267    void LuoSyotava(Vector paikka, double leveys, double korkeus)
268    {
269        Timer aikaLaskuri = new Timer();
270        aikaLaskuri.Interval = 10;
271        aikaLaskuri.Timeout += delegate
272        {
273            const int RUUDUN_KOKO = 40;
274
275            PhysicsObject syotava = new PhysicsObject(RUUDUN_KOKO / 3, RUUDUN_KOKO / 3);
276
277            syotava.Position = paikka;
278            syotava.Tag = "vihollinen";
279            syotava.Image = Points;
280
281
282            syotava.Color = Color.Blue;
283            LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
284            labyrinttiAivot.Speed = 200.0;
285            labyrinttiAivot.LabyrinthWallTag = "seina";
286            syotava.LifetimeLeft = TimeSpan.FromSeconds(100.0);
287
288            syotava.Brain = labyrinttiAivot;
289            Add(syotava);
290        };
291        aikaLaskuri.Start();
292    }
293
294
295    void pelaajaosui(PhysicsObject pelaaja1, PhysicsObject kohde)
296    {
297        if (kohde.Tag.Equals("vihollinen"))
298        {
299            kohde.Destroy();
300
301            ((Pelaaja)pelaaja1).PisteLaskuri.Value += 10;
302
303        }
304    }
305   
306    //Label LuoPistelaskuri2(Pelaaja pelaaja, Vector paikka)
307    //{
308    //    Label pisteNaytto2 = new Label(pelaaja.PisteLaskuri2);
309    //    pisteNaytto2.TextColor = Color.Yellow;
310    //    pisteNaytto2.Color = Color.Black;
311    //    pisteNaytto2.Title = "Pisteet2";
312    //    pisteNaytto2.Position = paikka;
313    //    Add(pisteNaytto2);
314    //    return pisteNaytto2;
315    //}
316
317    //MessageDisplay.Add("Pelaaja 1 hävisi pelin.");
318
319    void luomonster(Vector paikka, double leveys, double korkeus)
320    {
321        Timer aikaLaskuri = new Timer();
322        aikaLaskuri.Interval = 7;
323        aikaLaskuri.Timeout += delegate
324        {
325            PhysicsObject monster = new PhysicsObject(RUUDUN_KOKO / 3, RUUDUN_KOKO / 3);
326
327            monster.Position = paikka;
328            monster.Tag = "monster";
329            monster.Image = vihu5;
330            monster.Color = Color.Red;
331            LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
332            labyrinttiAivot.Speed = 150.0;
333            monster.LifetimeLeft = TimeSpan.FromSeconds(20.0);
334            AddCollisionHandler(monster, "pelaaja", pelaajaosui2);
335            labyrinttiAivot.LabyrinthWallTag = "seina";
336            monster.Brain = labyrinttiAivot;
337            Add(monster);
338        };
339        aikaLaskuri.Start();
340        //const int RUUDUN_KOKO = 40;
341    }
342    void pelaajaosui2(PhysicsObject monster, PhysicsObject kohde)
343    {
344        if (kohde.Tag.Equals("pelaaja"))
345        {
346            kohde.Destroy();
347
348
349            ((Pelaaja)kohde).PisteLaskuri.Value -= 1 / 100;
350
351        }
352    }
353    void luozombi(Vector paikka, double leveys, double korkeus)
354    {
355        Timer aikaLaskuri = new Timer();
356        aikaLaskuri.Interval = 40;
357        aikaLaskuri.Timeout += delegate
358        {
359            PhysicsObject zombi = new PhysicsObject(17, 17);
360
361            zombi.Position = paikka;
362            zombi.Tag = "zombi";
363
364
365
366            LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
367            labyrinttiAivot.Speed = 70.0;
368            zombi.Image = zzombi;
369            zombi.LifetimeLeft = TimeSpan.FromSeconds(80.0);
370            AddCollisionHandler(zombi, "pelaaja", pelaajaosui2);
371            labyrinttiAivot.LabyrinthWallTag = "seina";
372            zombi.Brain = labyrinttiAivot;
373            Add(zombi);
374        };
375        aikaLaskuri.Start();
376
377
378    }
379
380
381    void dungeon(Vector paikka, double leveys, double korkeus)
382    {
383        Rakennus rakennus = new Rakennus(leveys, korkeus);
384        rakennus.Position = paikka;
385        rakennus.MakeStatic();
386        rakennus.Color = Color.Brown;
387        rakennus.CollisionIgnoreGroup = 1;
388        rakennus.Tag = "rakennus";
389        Add(rakennus);
390
391
392
393    }
394
395    void luovihu(Vector paikka, double leveys, double korkeus)
396    {
397        PhysicsObject vihu = new PhysicsObject(RUUDUN_KOKO / 3, RUUDUN_KOKO / 3);
398
399        vihu.Position = paikka;
400        vihu.Tag = "vihu";
401    }
402
403    void safezone(Vector paikka, double leveys, double korkeus)
404    {
405        PhysicsObject rakennus1 = new PhysicsObject(leveys, korkeus);
406        rakennus1.Position = paikka;
407        rakennus1.MakeStatic();
408        rakennus1.CollisionIgnoreGroup = 1;
409        rakennus1.Color = Color.White;
410        rakennus1.Tag = "rakennus1";
411        Add(rakennus1);
412
413    }
414    //void luoelamalaskuri2()
415    //{
416    //    //elamaLaskuri = new DoubleMeter(10);
417    //    //elamaLaskuri.MaxValue = 10;
418    //    //    elamaLaskuri.LowerLimit += ElamaLoppui;
419
420
421    //    ProgressBar elamalaskuri2 = new ProgressBar(150, 20);
422    //    elamalaskuri2.X = Screen.Left + 150;
423    //    elamalaskuri2.Y = Screen.Top - 40;
424    //    elamalaskuri2.Color = Color.Transparent;
425
426    //    //Palkin väri:
427    //    elamalaskuri2.BarColor = Color.Red;
428
429    //    //Reunan väri:
430    //    elamalaskuri2.BorderColor = Color.Black;
431    //    elamalaskuri2.BindTo(pisteNaytto2);
432    //    Add(elamalaskuri2);
433    //}
434
435}
436
437
438
439
440
441
Note: See TracBrowser for help on using the repository browser.