source: 2017/31/TaavettiV/Trumpsimulator/Trumpsimulator/Trumpsimulator/Trumpsimulator.cs @ 9313

Revision 9313, 14.2 KB checked in by nupeohje, 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 Pelihahmo : PlatformCharacter
10{
11    private IntMeter elamaLaskuri = new IntMeter(8, 0, 8);
12    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
13
14    public Pelihahmo(double leveys, double korkeus)
15        : base(leveys, korkeus)
16    {
17        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
18    }
19
20}
21
22class Asevihu : PlatformCharacter
23{
24    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
25    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
26    public Timer Ajastin;
27    public Asevihu(double leveys, double korkeus)
28        : base(leveys, korkeus)
29    {
30        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
31    }
32
33    public bool AloitaAjastin()
34    {
35        return true;
36    }
37
38   
39
40
41
42
43
44
45}
46class Talo : PlatformCharacter
47{
48    private IntMeter elamaLaskuri = new IntMeter(10, 0, 10);
49    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
50
51    public Talo(double leveys, double korkeus)
52        : base(leveys, korkeus)
53    {
54        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
55    }
56
57}
58
59
60public class Trumpsimulator : PhysicsGame
61{
62    const double nopeus = 200;
63    const double hyppyNopeus = 750;
64    const int RUUDUN_KOKO = 40;
65    const double flynopeus= 5000;
66
67    Image meksikolainen = LoadImage("meksikolainen");
68    Pelihahmo pelaaja1;
69
70
71    Image bombiKuva = LoadImage("Bombi");
72    int kenttaNumero = 1;
73    DoubleMeter jetpacklaskuri;
74
75
76    Image pelaajanKuva = LoadImage("trumphahmo");
77    Image tahtiKuva = LoadImage("one dollar");
78
79    SoundEffect maaliAani = LoadSoundEffect("maali");
80    Image olio6Kuva = LoadImage("tumbleweed");
81    public override void Begin()
82    {
83        Gravity = new Vector(0, -1000);
84        jetpacklaskuri = new DoubleMeter(0, 0, 100);
85        LuoKentta();
86        LisaaNappaimet();
87
88        Camera.Follow(pelaaja1);
89        Camera.ZoomFactor = 1.2;
90        Camera.StayInLevel = true;
91    }
92    void tomas(Vector paikka, double leveys, double korkeus)
93    {
94        PlatformCharacter y = new PlatformCharacter(leveys * 0.8, korkeus * 1.0);
95        y.Position = paikka;
96       
97       
98       
99
100        Add(y);
101        y.Tag = "y";
102        y.Image = LoadImage("tumbleweed");
103        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
104        tasoAivot.Speed = 200;
105
106        tasoAivot.FallsOffPlatforms = true;
107        tasoAivot.TriesToJump = true;
108
109        y.Brain = tasoAivot;
110
111    }
112    void bombi(Vector paikka, double leveys, double korkeus)
113    {
114        PlatformCharacter p = new PlatformCharacter(leveys * 2.0, korkeus * 2.0);
115        p.Position = paikka;
116        p.Image = bombiKuva;
117        Add(p);
118        p.Tag = "p";
119     
120
121
122        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
123        tasoAivot.Speed = 100;
124
125        tasoAivot.FallsOffPlatforms = true;
126        tasoAivot.TriesToJump = true;
127
128        p.Brain = tasoAivot;
129
130    }
131    void paasiMaalin(PhysicsObject pelaaja, PhysicsObject maali)
132    {
133        kenttaNumero++;
134
135        ClearAll();
136        Begin();
137
138
139    }
140    void lisaaMaali(Vector paikka, double leveys, double korkeus)
141    {
142        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
143       
144
145        //ClearAll();
146        //Begin();
147        maali.Tag = "maali";
148        maali.Position = paikka;
149        Add(maali);
150    }
151
152    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
153    {
154        ammus.Destroy();
155        if (kohde.Tag.Equals("A"))
156        {
157            //ShowMessageWindow("Osu");
158
159            (kohde as Asevihu).ElamaLaskuri.Value--;
160        }
161    }
162
163    void AmmuAseella(PlatformCharacter ampuja)
164    {
165        if (pelaaja1.IsDestroyed) return;
166
167        PhysicsObject ammus = ampuja.Weapon.Shoot();
168
169        if (ammus != null)
170        {
171            //ammus.Size *= 0.10;
172            ammus.Width = 20;
173            ammus.Height = 1;
174            //ammus.Image = ...
175            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
176        }
177
178    }
179
180    void VihuAmmuAseella(PlatformCharacter ampuja)
181    {
182        if (ampuja.IsDestroyed) return;
183
184        PhysicsObject ammus = ampuja.Weapon.Shoot();
185
186        if (ammus != null)
187        {
188            //ammus.Size *= 0.10;
189            ammus.Width = 20;
190            ammus.Height = 1;
191            //ammus.Image = ...
192            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
193            AddCollisionHandler(ammus, "talo", Tormaataloon);
194        }
195
196    }
197
198    void Tormaataloon(PhysicsObject tormaa,PhysicsObject kohde)
199    {
200        (kohde as Talo).ElamaLaskuri.AddValue(-1);
201    }
202    void LuoKentta()
203    {
204        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttaNumero);
205        kentta.SetTileMethod('#', LisaaTaso);
206        kentta.SetTileMethod('*', Lisaadollar);
207        kentta.SetTileMethod('N', LisaaPelaaja);
208        kentta.SetTileMethod('K', lisaaMaali);
209        kentta.SetTileMethod('y', tomas);
210        kentta.SetTileMethod('A', Lisaaasevihu);
211        kentta.SetTileMethod('T', Lisaaasevihu);
212        kentta.SetTileMethod('H', Lisaahiekka);
213        kentta.SetTileMethod('R', LisaaRuoho);
214        kentta.SetTileMethod('Z', LisaaTalo);
215        kentta.SetTileMethod('M', LisaaMuuri);
216        kentta.SetTileMethod('G', LisaaTacoVihu);
217        kentta.SetTileMethod('p', bombi);
218        kentta.SetTileMethod('C',  Lisaacaktus);
219        kentta.SetTileMethod('J', lisaajetpack);
220        kentta.Optimize('H');
221        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
222
223
224        Level.CreateBorders();
225        Level.Background.CreateGradient(Color.White, Color.SeaGreen);
226        Level.Background.Image = LoadImage("taustakuvanewyork");
227    }
228
229    void lisaajetpack(Vector paikka, double leveys, double korkeus)
230    {
231        PhysicsObject jetpack = PhysicsObject.CreateStaticObject(leveys, korkeus);
232        jetpack.Position = paikka;
233        jetpack.Image = LoadImage("jetpack picture");
234        jetpack.IgnoresCollisionResponse = true;
235        jetpack.Tag = "jetpack";
236        Add(jetpack);
237
238    }
239
240    void HeitaKranaatti(PlatformCharacter pelaaja)
241    {
242        if (pelaaja.IsDestroyed) return;
243
244        Grenade kranu = new Grenade(3.0);
245        pelaaja1.Throw(kranu, Angle.FromDegrees(50), 10000);
246
247        kranu.Explosion.AddShockwaveHandler("A", KranaattiOsui);
248
249        kranu.Explosion.AddShockwaveHandler("p", KranaattiOsui);
250    }
251    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
252    {
253        rajahdyksenKohde.Destroy();
254    }
255    void LisaaTaso(Vector paikka, double leveys, double korkeus)
256    {
257        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
258        taso.Position = paikka;
259        taso.Color = Color.Green;
260        Add(taso);
261    }
262
263    void LisaaMuuri(Vector paikka, double leveys, double korkeus)
264    {
265        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
266        taso.Position = paikka;
267        taso.Color = Color.Green;
268        Add(taso);
269
270        taso.Image = LoadImage("muuri");
271    }
272
273    void Lisaahiekka(Vector paikka, double leveys, double korkeus)
274    {
275        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
276        taso.Position = paikka;
277        taso.Image = LoadImage("hiekka");
278        taso.TextureWrapSize = new Vector(leveys / RUUDUN_KOKO, korkeus / RUUDUN_KOKO); 
279        Add(taso);
280    }
281
282    void LisaaTalo(Vector paikka, double leveys, double korkeus)
283    {
284        Talo taso = new Talo(leveys, korkeus);
285        taso.Position = paikka;
286        taso.Color = Color.Green;
287        taso.Tag = "talo";
288        Add(taso);
289
290        taso.Image = LoadImage("talo");
291
292    }
293
294
295    void LisaaRuoho(Vector paikka, double leveys, double korkeus)
296    {
297        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
298        taso.Position = paikka;
299
300        Add(taso);
301        taso.Color = Color.Green;
302        taso.Image = LoadImage("ruoho");
303    }
304
305
306    void Lisaacaktus(Vector paikka, double leveys, double korkeus)
307    {
308        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
309        taso.Position = paikka;
310
311        Add(taso);
312        taso.Color = Color.Green;
313        taso.Image = LoadImage("caktus");
314    }
315
316
317
318
319    void Lisaadollar(Vector paikka, double leveys, double korkeus)
320    {
321        PhysicsObject dollar = PhysicsObject.CreateStaticObject(leveys, korkeus);
322        dollar.IgnoresCollisionResponse = true;
323        dollar.Position = paikka;
324        dollar.Image = tahtiKuva;
325        dollar.Tag = "dollar";
326        Add(dollar);
327    }
328
329    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
330    {
331        pelaaja1 = new Pelihahmo(leveys, korkeus*2.0);
332        pelaaja1.Position = paikka;
333        pelaaja1.Mass = 2.0;
334        pelaaja1.Image = pelaajanKuva;
335        pelaaja1.Tag = "pelaaja";
336        AddCollisionHandler(pelaaja1, "dollar", Tormaadollar);
337        AddCollisionHandler(pelaaja1, "jetpack", Tormaajetpack);
338        Add(pelaaja1);
339        AddCollisionHandler(pelaaja1, "p", CollisionHandler.ExplodeBoth(511, true));
340        AddCollisionHandler(pelaaja1, "maali", paasiMaalin);
341
342        ProgressBar jetpackPalkki = new ProgressBar(150, 20);
343        jetpackPalkki.X = Screen.Right - 150;
344        jetpackPalkki.Y = Screen.Top - 20;
345        jetpackPalkki.BindTo(jetpacklaskuri);
346        Add(jetpackPalkki);
347
348        pelaaja1.Weapon = new AssaultRifle(30, 10);
349        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
350        pelaaja1.Weapon.InfiniteAmmo = true;
351        pelaaja1.Weapon.Power.DefaultValue = 400;
352        pelaaja1.Weapon.AmmoIgnoresGravity = true;
353        pelaaja1.Weapon.AmmoIgnoresExplosions = true;
354        pelaaja1.Weapon.CanHitOwner = false;
355        pelaaja1.Weapon.Image = LoadImage("alkuase");
356        pelaaja1.Weapon.Y = 5;
357    }
358
359    void LisaaNappaimet()
360    {
361        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
362        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
363        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AmmuAseella, "Lopeta peli", pelaaja1);
364
365        Keyboard.Listen(Key.E, ButtonState.Pressed, HeitaKranaatti, "heitä kranaatti", pelaaja1);
366
367        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
368        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
369        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
370        Keyboard.Listen(Key.Space, ButtonState.Down, fly, "pelaaja lentää", pelaaja1, flynopeus);
371        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
372
373        //ControllerOne.Listen(Button.A, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
374        //ControllerOne.Listen(Button.D, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
375        //ControllerOne.Listen(Button.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
376
377        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
378    }
379
380    void Liikuta(PlatformCharacter hahmo, double nopeus)
381    {
382        hahmo.Walk(nopeus);
383    }
384
385    void Hyppaa(PlatformCharacter hahmo, double nopeus)
386    {
387        hahmo.Jump(nopeus);
388    }
389    void VihuAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
390    {
391        ammus.Destroy();
392        if (kohde.Tag.ToString() == "pelaaja")
393        {
394            (kohde as Pelihahmo).ElamaLaskuri.Value--;
395        }
396    }
397
398    void Lisaaasevihu(Vector paikka, double leveys, double korkeus)
399    {
400        Asevihu asevihu = new Asevihu(leveys * 2.0, korkeus * 2.0);
401        asevihu.Position = paikka;
402        asevihu.Image = meksikolainen;
403        Add(asevihu);
404        asevihu.Tag = "A";
405
406        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
407        tasoAivot.Speed = 100;
408
409        tasoAivot.FallsOffPlatforms = true;
410        tasoAivot.TriesToJump = true;
411
412        asevihu.Brain = tasoAivot;
413
414        asevihu.Weapon = new AssaultRifle(30, 10);
415        asevihu.Weapon.ProjectileCollision = VihuAmmusOsui;
416
417        Timer aikaLaskuri = new Timer();
418        aikaLaskuri.Interval = 0.6;
419        aikaLaskuri.Timeout += () => VihuAmmuAseella(asevihu);
420        aikaLaskuri.Start();
421    }
422
423    void LisaaTacoVihu(Vector paikka, double leveys, double korkeus)
424    {
425        Asevihu tacovihu = new Asevihu(leveys * 2.0, korkeus * 2.0);
426        tacovihu.Position = paikka;
427        tacovihu.Image = LoadImage("mexivotacoduude");
428        Add(tacovihu);
429        tacovihu.Tag = "A";
430         
431        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
432        tasoAivot.Speed = 100;
433
434        tasoAivot.FallsOffPlatforms = true;
435        tasoAivot.TriesToJump = true;
436
437        tacovihu.Brain = tasoAivot;
438
439        //tacovihu.Weapon = new AssaultRifle(30, 10);
440        //tacovihu.Weapon.ProjectileCollision = VihuAmmusOsui;
441
442        Timer aikaLaskuri = new Timer();
443        aikaLaskuri.Interval = 5.2;
444        aikaLaskuri.Timeout += delegate
445        {
446            Grenade kranu = new Grenade(5.2);
447            kranu.Image = LoadImage("tacobom");
448            tacovihu.Throw(kranu, Angle.FromDegrees(300), 1000);
449
450        };
451        aikaLaskuri.Start();
452
453        tacovihu.Destroyed += aikaLaskuri.Stop;
454    }
455
456    void Tormaadollar(PhysicsObject hahmo, PhysicsObject dollar)
457    {
458        maaliAani.Play();
459        MessageDisplay.Add("Keräsit dollarin!");
460        dollar.Destroy();
461       
462    }
463    void fly(PlatformCharacter hahmo, double nopeus)
464    {
465        if(jetpacklaskuri.Value > 0)
466        {
467            hahmo.Push(new Vector(0, nopeus));
468            jetpacklaskuri.Value -= 0.2;
469        }
470       
471    }
472
473    void Tormaajetpack(PhysicsObject hahmo, PhysicsObject jetpack)
474    {
475        maaliAani.Play();
476        MessageDisplay.Add("jetpack käytössä!");
477        jetpack.Destroy();
478        jetpacklaskuri.Value = 100;
479    }
480
481}
Note: See TracBrowser for help on using the repository browser.