source: 2012/23/OtsoL/randombattle/randombattle/randombattle/randombattle.cs @ 2890

Revision 2890, 11.5 KB checked in by otperula, 8 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 randombattle : PhysicsGame
10{
11    Explosion pum;
12    DoubleMeter hpmittari; // pelaajan hp
13    //DoubleMeter pahismittari;
14    //DoubleMeter pomomittari;
15    PlatformCharacter pelaaja;
16    Image pahiksenkuva = LoadImage("villain");
17    Image pelaajankuva = LoadImage("superplayer");
18    Image pomonkuva = LoadImage("boss1");
19    Image villain2 = LoadImage("villain2");
20    //pammus();
21
22    int kranaattejaIlmassa = 0;
23
24    public override void Begin()
25    {
26        LuoPelaajanHP();
27        ded();
28        //pelaaja();
29        ohjaimet();
30        painovoima();
31        // pahis();
32        luokenttä();
33        hkranaatti();
34        MultiSelectWindow valikko = new MultiSelectWindow("tervetuloa", "Aloita peli", "lopeta");
35        valikko.ItemSelected += pvalikonnappi;
36        valikko.Shape = Shape.Circle;
37
38        Add(valikko);
39
40
41        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
42        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
43    }
44    void checpoint(Vector paikka, double leveys, double korkeus)
45    {
46        PhysicsObject cp = new PhysicsObject(100, 100);
47        cp.Shape = Shape.Rectangle;
48        cp.Color = Color.HotPink;
49        cp.Restitution = 1.0;
50        Add(cp);
51
52
53    }
54    void pvalikonnappi(int valinta)
55    {
56        switch (valinta)
57        {
58            case 0:
59                break;
60            case 1:
61                break;
62            case 2:
63                Exit();
64                break;
65        }
66    }
67    DoubleMeter pomohp(int oletus, int min, int max)
68    {
69        DoubleMeter pomomittari = new DoubleMeter(oletus, min, max);
70        return pomomittari;
71
72
73
74
75
76    }
77    void pammus()
78{
79
80
81
82
83
84
85}
86    void luopelaaja(Vector paikka, double leveys, double korkeus)
87    {
88        pelaaja = new PlatformCharacter(70.0, 120.0);
89
90        pelaaja.Color = Color.Transparent;
91        pelaaja.Shape = Shape.Rectangle;
92        pelaaja.Image = pelaajankuva;
93        AddCollisionHandler(pelaaja, "panos", CollisionHandler.AddMeterValue(hpmittari, -20));
94        pelaaja.Position = paikka;
95        pelaaja.Tag = "pelaaja";
96        AddCollisionHandler(pelaaja, "pahis", CollisionHandler.AddMeterValue(hpmittari, -15));
97        AddCollisionHandler(pelaaja, "pahis2", CollisionHandler.AddMeterValue(hpmittari, -30));
98        pelaaja.Mass = 1.0;
99        pelaaja.Weapon = new AssaultRifle(60, 5);
100        pelaaja.Weapon.Ammo.Value = int.MaxValue;
101        pelaaja.Weapon.ProjectileCollision += AmmusOsui;
102
103        Add(pelaaja);
104    }
105
106    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
107    {
108        if (kohde.Tag == "pahis")
109        {
110            Explosion pum = new Explosion(300);
111            pum.Position = kohde.Position;
112            Add(pum);
113            kohde.Destroy();
114        }
115
116        ammus.Destroy();
117    }
118
119    void ded()
120    {
121        if (hpmittari.Value == 0)
122            MessageDisplay.Add("kuolit");
123    }
124
125
126
127    void KranaattiOsui(IPhysicsObject kohde, Vector suunta)
128    {
129        if (kohde.Tag == "pahis")
130            kohde.Destroy();
131        if (kohde.Tag == "pahis2")
132            kohde.Destroy();
133    }
134
135    DoubleMeter LuoHPMittari(int oletus, int min, int max)
136    {
137        DoubleMeter mittari = new DoubleMeter(oletus, min, max);
138        return mittari;
139    }
140
141    void PahisKuolee(PhysicsObject pahis)
142    {
143        Explosion pum = new Explosion(300);
144        pum.Position = pahis.Position;
145        Add(pum);
146        pahis.Destroy();
147    }
148    void pomo(Vector paikka, double leveys, double korkeus)
149    {
150        PhysicsObject pomo = new PhysicsObject(2000, 2000);
151        pomo.Shape = Shape.Rectangle;
152        pomo.Tag = "pomo";
153        pomo.Image = pomonkuva;
154        pomo.Position = paikka;
155        DoubleMeter pomomittari = pomohp(200, 0, 200);
156        pomomittari.LowerLimit += delegate
157        {
158            pomo.Destroy();
159            Explosion pam = new Explosion(3000);
160            pam.Position = pomo.Position;
161            Add(pam);
162            MessageDisplay.Add("Voitit!");
163        };
164
165BarGauge pomopalkki = new BarGauge(30, 300);
166        pomopalkki.BindTo(pomomittari);
167        Add(pomopalkki);
168        pomopalkki.X = Screen.Right - 350;
169       pomopalkki.Y = Screen.Bottom + 250;
170       pomopalkki.Angle = Angle.RightAngle;
171       //pomopalkki.Right = +150;
172        pomopalkki.BarColor = Color.Red;
173        pomopalkki.BorderColor = Color.DarkRed;
174        Add(pomopalkki);
175        Timer ajastin = new Timer();
176        ajastin.Interval = 1.0;
177        ajastin.Timeout += delegate {pomoampuu(pomo); };
178        ajastin.Start();
179
180
181        pomo.Color = Color.Black;
182        pomo.Mass = 400.0;
183        AddCollisionHandler(pomo, "ammus", CollisionHandler.AddMeterValue(pomomittari, -1));
184        Add(pomo);
185
186
187    }
188    void pomoampuu(PhysicsObject pomo)
189    {
190       
191    if(Vector.Distance(pelaaja.Position, pomo.Position) <6000)
192    {
193        PhysicsObject panos = new PhysicsObject(20, 20);
194        panos.Color = Color.Black;
195        panos.Shape = Shape.Circle;
196        panos.Tag = "panos";
197        panos.IgnoresGravity = true;
198        Vector suuntap = pelaaja.Position - pomo.Position;
199
200        panos.Hit(suuntap.Normalize()*2000);
201        panos.Position = pomo.Position;
202
203        AddCollisionHandler(panos, tuhoa);
204        Add(panos);
205
206    }
207    }
208    void pelaajamenettää(PhysicsObject pelaaja, PhysicsObject pahis)
209    {
210    hpmittari.Value -=10;
211
212
213
214    }
215    void tuhoa(PhysicsObject panos, PhysicsObject kohde)
216    {
217        if (kohde.Tag == "pomo") 
218        {
219            return;
220
221        }
222        panos.Destroy();
223    }
224    void luokenttä()
225    {
226        //Vaihda mappia vaihtamalla gamemapin numeroa.Joko 1 tai 2.   :D
227        TileMap ruudut = TileMap.FromLevelAsset("gamemap2");
228        ruudut.SetTileMethod('!', luopelaaja);
229
230
231        ruudut.SetTileMethod('p', pahis);
232        ruudut.SetTileMethod('b', pomo);
233        ruudut.SetTileMethod('x', palikka);
234        ruudut.SetTileMethod('z', LuoPahis2);
235        ruudut.SetTileMethod('c', tynnyri);
236        ruudut.SetTileMethod('v', checpoint);
237        ruudut.Execute(100, 100);
238
239        Camera.ZoomToLevel();
240    }
241
242    void tynnyri(Vector paikka, double leveys, double korkeus)
243    {
244        PhysicsObject tynnyri = new PhysicsObject(100, 100);
245        tynnyri.Shape = Shape.Rectangle;
246        tynnyri.Color = Color.Brown;
247        tynnyri.Restitution = 1.0;
248        tynnyri.Position = paikka;
249        Add(tynnyri);
250
251    }
252
253    /// <summary>
254    /// Pahis, joka kuolee monesta osumasta
255    /// ja jolla on oma elämämittari
256    /// </summary>
257    /// <param name="paikka"></param>
258    /// <param name="leveys"></param>
259    /// <param name="korkeus"></param>
260    void LuoPahis2(Vector paikka, double leveys, double korkeus)
261    {
262        PhysicsObject pahis2 = new PhysicsObject(300, 200);
263        pahis2.Image = villain2;
264        pahis2.Shape = Shape.Rectangle;
265        pahis2.Position = paikka;
266
267        DoubleMeter pahiksenHpMittari = LuoHPMittari(5, 0, 5);
268        pahiksenHpMittari.LowerLimit += delegate
269        {
270            PahisKuolee(pahis2);
271        };
272
273        FollowerBrain Saivo = new FollowerBrain();
274        Saivo.Active = true;
275        Saivo.Target = pelaaja;
276        Saivo.Speed = 300;
277        Saivo.TargetFollowDistance = 800;
278        Saivo.TargetCloseDistance = 20;
279        pahis2.Tag = "pahis2";
280        pahis2.Brain = Saivo;
281        pahis2.Mass = 5.0;
282        Add(pahis2);
283        // AddCollisionHandler(pahis2, "ammus", CollisionHandler.AddMeterValue(pahiksenHpMittari, -1));
284        AddCollisionHandler(pahis2, "ammus", delegate(PhysicsObject o, PhysicsObject kohde)
285        {
286            pahiksenHpMittari.Value--;
287        });
288    }
289
290    /// <summary>
291    /// Pahis joka kuolee yhdestä osumasta
292    /// </summary>
293    /// <param name="paikka"></param>
294    /// <param name="leveys"></param>
295    /// <param name="korkeus"></param>
296    void pahis(Vector paikka, double leveys, double korkeus)
297    {
298        PhysicsObject pahis = new PhysicsObject(60, 120);
299        pahis.Image = pahiksenkuva;
300        pahis.Shape = Shape.Rectangle;
301        pahis.Position = paikka;
302
303        FollowerBrain Saivo = new FollowerBrain();
304        Saivo.Active = true;
305        Saivo.Target = pelaaja;
306        Saivo.Speed = 500;
307        Saivo.TargetFollowDistance = 600;
308        Saivo.TargetCloseDistance = 30;
309        pahis.Tag = "pahis";
310        pahis.Brain = Saivo;
311        pahis.Mass = 1.0;
312        Add(pahis);
313    }
314
315
316    void LuoPelaajanHP()
317    {
318        hpmittari = new DoubleMeter(200);
319        hpmittari.MaxValue = 200;
320
321        BarGauge hppalkki = new BarGauge(20, 150);
322        hppalkki.BindTo(hpmittari);
323        Add(hppalkki);
324        hppalkki.X = Screen.Left + 150;
325        hppalkki.Y = Screen.Top - 80;
326        hppalkki.Angle = Angle.StraightAngle;
327        hppalkki.BarColor = Color.Gold;
328        hppalkki.BorderColor = Color.Red;
329        hpmittari.LowerLimit += hploppu;
330    }
331
332    void painovoima()
333    {
334        Gravity = new Vector(0, -2000);
335    }
336
337    void hploppu(double heltti)
338    {
339        Explosion pum = new Explosion(300);
340        pum.Position = pelaaja.Position;
341        Add(pum);
342        pelaaja.Destroy();
343        ded();
344    }
345
346    void palikka(Vector paikka, double leveys, double korkeus)
347    {
348        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
349        palikka.Position = paikka;
350        palikka.Shape = Shape.Rectangle;
351        palikka.Color = Color.Black;
352        Add(palikka);
353    }
354
355    void ohjaimet()
356    {
357        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppy, null);
358        Keyboard.Listen(Key.D, ButtonState.Down, oikealle, null);
359        Keyboard.Listen(Key.A, ButtonState.Down, vasemmalle, null);
360        Keyboard.Listen(Key.G, ButtonState.Down, ampua, null, 2.0);
361        Keyboard.Listen(Key.H, ButtonState.Pressed, hkranaatti, null);
362    }
363
364    void hyppy()
365    {
366        //Vector hypy = new Vector(0, 500);
367        pelaaja.Jump(2500);
368
369    }
370
371    void oikealle()
372    {
373        pelaaja.Walk(1000);
374    }
375
376    void vasemmalle()
377    {
378        pelaaja.Walk(-1000);
379    }
380
381    void ampua(double velocity)
382    {
383        PhysicsObject ammus = pelaaja.Weapon.Shoot();
384        if (ammus != null)
385        {
386            ammus.Tag = "ammus";
387            ammus.Size *= 3;
388            ammus.Velocity *= velocity;
389        }
390    }
391
392    void hkranaatti()
393    {
394        if (kranaattejaIlmassa <= 3)
395        {
396            PhysicsObject kranaatti = new PhysicsObject(10, 10);
397            kranaatti.X = pelaaja.X + 40;
398            kranaatti.Y = pelaaja.Y + 40;
399            Add(kranaatti);
400            Vector heittovoima = Vector.FromLengthAndAngle(2000, Angle.FromDegrees(45));
401            kranaatti.Hit(heittovoima);
402            kranaatti.MaximumLifetime = TimeSpan.FromSeconds(3);
403            kranaatti.Color = Color.Black;
404            kranaattejaIlmassa++;
405            kranaatti.Destroyed += delegate
406            {
407                Explosion pum = new Explosion(100);
408                pum.Position = kranaatti.Position;
409                pum.ShockwaveReachesObject += KranaattiOsui;
410                Add(pum);
411                kranaattejaIlmassa--;
412            };
413        }
414    }
415
416}
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
Note: See TracBrowser for help on using the repository browser.