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

Revision 9311, 13.6 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("tuomas");
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 * 1.0, korkeus * 1.0);
95        y.Position = paikka;
96     
97       
98        Add(y);
99        y.Tag = "y";
100        y.Image = LoadImage("hilari clinton");
101        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
102        tasoAivot.Speed = 900;
103
104        tasoAivot.FallsOffPlatforms = true;
105        tasoAivot.TriesToJump = true;
106
107        y.Brain = tasoAivot;
108
109    }
110    void bombi(Vector paikka, double leveys, double korkeus)
111    {
112        PlatformCharacter p = new PlatformCharacter(leveys * 0.9, korkeus * 0.9);
113        p.Position = paikka;
114        p.Image = bombiKuva;
115        Add(p);
116        p.Tag = "p";
117     
118
119
120        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
121        tasoAivot.Speed = 100;
122
123        tasoAivot.FallsOffPlatforms = true;
124        tasoAivot.TriesToJump = true;
125
126        p.Brain = tasoAivot;
127
128    }
129    void paasiMaalin(PhysicsObject pelaaja, PhysicsObject maali)
130    {
131        kenttaNumero++;
132
133        ClearAll();
134        Begin();
135
136
137    }
138    void lisaaMaali(Vector paikka, double leveys, double korkeus)
139    {
140        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
141       
142
143        //ClearAll();
144        //Begin();
145        maali.Tag = "maali";
146        maali.Position = paikka;
147        Add(maali);
148    }
149
150    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
151    {
152        ammus.Destroy();
153        if (kohde.Tag.Equals("A"))
154        {
155            //ShowMessageWindow("Osu");
156
157            (kohde as Asevihu).ElamaLaskuri.Value--;
158        }
159    }
160
161    void AmmuAseella(PlatformCharacter ampuja)
162    {
163        if (pelaaja1.IsDestroyed) return;
164
165        PhysicsObject ammus = ampuja.Weapon.Shoot();
166
167        if (ammus != null)
168        {
169            //ammus.Size *= 0.10;
170            ammus.Width = 20;
171            ammus.Height = 1;
172            //ammus.Image = ...
173            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
174        }
175
176    }
177
178    void VihuAmmuAseella(PlatformCharacter ampuja)
179    {
180        if (ampuja.IsDestroyed) return;
181
182        PhysicsObject ammus = ampuja.Weapon.Shoot();
183
184        if (ammus != null)
185        {
186            //ammus.Size *= 0.10;
187            ammus.Width = 20;
188            ammus.Height = 1;
189            //ammus.Image = ...
190            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
191            AddCollisionHandler(ammus, "talo", Tormaataloon);
192        }
193
194    }
195
196    void Tormaataloon(PhysicsObject tormaa,PhysicsObject kohde)
197    {
198        (kohde as Talo).ElamaLaskuri.AddValue(-1);
199    }
200    void LuoKentta()
201    {
202        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttaNumero);
203        kentta.SetTileMethod('#', LisaaTaso);
204        kentta.SetTileMethod('*', Lisaadollar);
205        kentta.SetTileMethod('N', LisaaPelaaja);
206        kentta.SetTileMethod('K', lisaaMaali);
207        kentta.SetTileMethod('y', tomas);
208        kentta.SetTileMethod('A', Lisaaasevihu);
209        kentta.SetTileMethod('T', Lisaaasevihu);
210        kentta.SetTileMethod('H', Lisaahiekka);
211        kentta.SetTileMethod('R', LisaaRuoho);
212        kentta.SetTileMethod('Z', LisaaTalo);
213        kentta.SetTileMethod('M', LisaaMuuri);
214        kentta.SetTileMethod('G', LisaaTacoVihu);
215        kentta.SetTileMethod('p', bombi);
216        kentta.SetTileMethod('C',  Lisaacaktus);
217        kentta.SetTileMethod('J', lisaajetpack);
218        kentta.Optimize('H');
219        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
220
221
222        Level.CreateBorders();
223        Level.Background.CreateGradient(Color.White, Color.SeaGreen);
224        Level.Background.Image = LoadImage("taustakuvanewyork");
225    }
226
227    void lisaajetpack(Vector paikka, double leveys, double korkeus)
228    {
229        PhysicsObject jetpack = PhysicsObject.CreateStaticObject(leveys, korkeus);
230        jetpack.Position = paikka;
231        jetpack.Image = LoadImage("jetpack picture");
232        jetpack.IgnoresCollisionResponse = true;
233        jetpack.Tag = "jetpack";
234        Add(jetpack);
235
236    }
237
238
239    void LisaaTaso(Vector paikka, double leveys, double korkeus)
240    {
241        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
242        taso.Position = paikka;
243        taso.Color = Color.Green;
244        Add(taso);
245    }
246
247    void LisaaMuuri(Vector paikka, double leveys, double korkeus)
248    {
249        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
250        taso.Position = paikka;
251        taso.Color = Color.Green;
252        Add(taso);
253
254        taso.Image = LoadImage("muuri");
255    }
256
257    void Lisaahiekka(Vector paikka, double leveys, double korkeus)
258    {
259        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
260        taso.Position = paikka;
261        taso.Image = LoadImage("hiekka");
262        taso.TextureWrapSize = new Vector(leveys / RUUDUN_KOKO, korkeus / RUUDUN_KOKO);
263        Add(taso);
264    }
265
266    void LisaaTalo(Vector paikka, double leveys, double korkeus)
267    {
268        Talo taso = new Talo(leveys, korkeus);
269        taso.Position = paikka;
270        taso.Color = Color.Green;
271        taso.Tag = "talo";
272        Add(taso);
273
274        taso.Image = LoadImage("talo");
275
276    }
277
278
279    void LisaaRuoho(Vector paikka, double leveys, double korkeus)
280    {
281        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
282        taso.Position = paikka;
283
284        Add(taso);
285        taso.Color = Color.Green;
286        taso.Image = LoadImage("ruoho");
287    }
288
289
290    void Lisaacaktus(Vector paikka, double leveys, double korkeus)
291    {
292        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
293        taso.Position = paikka;
294
295        Add(taso);
296        taso.Color = Color.Green;
297        taso.Image = LoadImage("caktus");
298    }
299
300
301
302
303    void Lisaadollar(Vector paikka, double leveys, double korkeus)
304    {
305        PhysicsObject dollar = PhysicsObject.CreateStaticObject(leveys, korkeus);
306        dollar.IgnoresCollisionResponse = true;
307        dollar.Position = paikka;
308        dollar.Image = tahtiKuva;
309        dollar.Tag = "dollar";
310        Add(dollar);
311    }
312
313    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
314    {
315        pelaaja1 = new Pelihahmo(leveys, korkeus);
316        pelaaja1.Position = paikka;
317        pelaaja1.Mass = 4.0;
318        pelaaja1.Image = pelaajanKuva;
319        pelaaja1.Tag = "pelaaja";
320        AddCollisionHandler(pelaaja1, "dollar", Tormaadollar);
321        AddCollisionHandler(pelaaja1, "jetpack", Tormaajetpack);
322        Add(pelaaja1);
323        AddCollisionHandler(pelaaja1, "p", CollisionHandler.ExplodeBoth(99999, true));
324        AddCollisionHandler(pelaaja1, "maali", paasiMaalin);
325
326        ProgressBar jetpackPalkki = new ProgressBar(150, 20);
327        jetpackPalkki.X = Screen.Right - 150;
328        jetpackPalkki.Y = Screen.Top - 20;
329        jetpackPalkki.BindTo(jetpacklaskuri);
330        Add(jetpackPalkki);
331
332        pelaaja1.Weapon = new AssaultRifle(30, 10);
333        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
334        pelaaja1.Weapon.InfiniteAmmo = true;
335        pelaaja1.Weapon.Power.DefaultValue = 400;
336        pelaaja1.Weapon.AmmoIgnoresGravity = true;
337        pelaaja1.Weapon.AmmoIgnoresExplosions = true;
338        pelaaja1.Weapon.CanHitOwner = false;
339        pelaaja1.Weapon.Image = LoadImage("alkuase");
340        pelaaja1.Weapon.Y = 5;
341    }
342
343    void LisaaNappaimet()
344    {
345        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
346        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
347        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AmmuAseella, "Lopeta peli", pelaaja1);
348
349        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
350        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
351        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
352        Keyboard.Listen(Key.Space, ButtonState.Down, fly, "pelaaja lentää", pelaaja1, flynopeus);
353        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
354
355        //ControllerOne.Listen(Button.A, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
356        //ControllerOne.Listen(Button.D, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
357        //ControllerOne.Listen(Button.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
358
359        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
360    }
361
362    void Liikuta(PlatformCharacter hahmo, double nopeus)
363    {
364        hahmo.Walk(nopeus);
365    }
366
367    void Hyppaa(PlatformCharacter hahmo, double nopeus)
368    {
369        hahmo.Jump(nopeus);
370    }
371    void VihuAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
372    {
373        ammus.Destroy();
374        if (kohde.Tag.ToString() == "pelaaja")
375        {
376            (kohde as Pelihahmo).ElamaLaskuri.Value--;
377        }
378    }
379
380    void Lisaaasevihu(Vector paikka, double leveys, double korkeus)
381    {
382        Asevihu asevihu = new Asevihu(leveys * 0.9, korkeus * 0.9);
383        asevihu.Position = paikka;
384        asevihu.Image = meksikolainen;
385        Add(asevihu);
386        asevihu.Tag = "A";
387
388        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
389        tasoAivot.Speed = 100;
390
391        tasoAivot.FallsOffPlatforms = true;
392        tasoAivot.TriesToJump = true;
393
394        asevihu.Brain = tasoAivot;
395
396        asevihu.Weapon = new AssaultRifle(30, 10);
397        asevihu.Weapon.ProjectileCollision = VihuAmmusOsui;
398
399        Timer aikaLaskuri = new Timer();
400        aikaLaskuri.Interval = 0.2;
401        aikaLaskuri.Timeout += () => VihuAmmuAseella(asevihu);
402        aikaLaskuri.Start();
403    }
404
405    void LisaaTacoVihu(Vector paikka, double leveys, double korkeus)
406    {
407        Asevihu tacovihu = new Asevihu(leveys * 0.9, korkeus * 0.9);
408        tacovihu.Position = paikka;
409        tacovihu.Image = LoadImage("mexivotacoduude");
410        Add(tacovihu);
411        tacovihu.Tag = "A";
412         
413        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
414        tasoAivot.Speed = 100;
415
416        tasoAivot.FallsOffPlatforms = true;
417        tasoAivot.TriesToJump = true;
418
419        tacovihu.Brain = tasoAivot;
420
421        //tacovihu.Weapon = new AssaultRifle(30, 10);
422        //tacovihu.Weapon.ProjectileCollision = VihuAmmusOsui;
423
424        Timer aikaLaskuri = new Timer();
425        aikaLaskuri.Interval = 0.2;
426        aikaLaskuri.Timeout += delegate
427        {
428            Grenade kranu = new Grenade(4.0);
429            kranu.Image = LoadImage("tacobom");
430            tacovihu.Throw(kranu, Angle.FromDegrees(30), 10000);
431
432        };
433        aikaLaskuri.Start();
434
435        tacovihu.Destroyed += aikaLaskuri.Stop;
436    }
437
438    void Tormaadollar(PhysicsObject hahmo, PhysicsObject dollar)
439    {
440        maaliAani.Play();
441        MessageDisplay.Add("Keräsit dollarin!");
442        dollar.Destroy();
443       
444    }
445    void fly(PlatformCharacter hahmo, double nopeus)
446    {
447        if(jetpacklaskuri.Value > 0)
448        {
449            hahmo.Push(new Vector(0, nopeus));
450            jetpacklaskuri.Value -= 0.2;
451        }
452       
453    }
454
455    void Tormaajetpack(PhysicsObject hahmo, PhysicsObject jetpack)
456    {
457        maaliAani.Play();
458        MessageDisplay.Add("jetpack käytössä!");
459        jetpack.Destroy();
460        jetpacklaskuri.Value = 100;
461    }
462
463}
Note: See TracBrowser for help on using the repository browser.