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

Revision 9301, 11.1 KB checked in by nupeohje, 2 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
9class Pelihahmo : PlatformCharacter
10{
11    private IntMeter elamaLaskuri = new IntMeter(10, 0, 10);
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
42public class Trumpsimulator : PhysicsGame
43{
44    const double nopeus = 500;
45    const double hyppyNopeus = 750;
46    const int RUUDUN_KOKO = 40;
47    const double flynopeus = 500;
48
49    Image meksikolainen = LoadImage("meksikolainen");
50    Pelihahmo pelaaja1;
51
52    int kenttaNumero = 1;
53    Image bombiKuva = LoadImage("Bombi");
54    Image pelaajanKuva = LoadImage("trumphahmo");
55    Image tahtiKuva = LoadImage("one dollar");
56
57    SoundEffect maaliAani = LoadSoundEffect("maali");
58    Image olio6Kuva = LoadImage("tuomas");
59    public override void Begin()
60    {
61        Gravity = new Vector(0, -1000);
62
63        LuoKentta();
64        LisaaNappaimet();
65
66        Camera.Follow(pelaaja1);
67        Camera.ZoomFactor = 1.2;
68        Camera.StayInLevel = true;
69    }
70    void tomas(Vector paikka, double leveys, double korkeus)
71    {
72        PlatformCharacter y = new PlatformCharacter(leveys * 1.0, korkeus * 1.0);
73        y.Position = paikka;
74     
75       
76        Add(y);
77        y.Tag = "y";
78        y.Image = LoadImage("hilari clinton");
79        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
80        tasoAivot.Speed = 900;
81
82        tasoAivot.FallsOffPlatforms = true;
83        tasoAivot.TriesToJump = true;
84
85        y.Brain = tasoAivot;
86
87    }
88    void bombi(Vector paikka, double leveys, double korkeus)
89    {
90        PlatformCharacter p = new PlatformCharacter(leveys * 0.9, korkeus * 0.9);
91        p.Position = paikka;
92        p.Image = bombiKuva;
93        Add(p);
94        p.Tag = "p";
95     
96
97
98        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
99        tasoAivot.Speed = 100;
100
101        tasoAivot.FallsOffPlatforms = true;
102        tasoAivot.TriesToJump = true;
103
104        p.Brain = tasoAivot;
105
106    }
107    void paasiMaalin(PhysicsObject pelaaja, PhysicsObject maali)
108    {
109        kenttaNumero++;
110
111        ClearAll();
112        Begin();
113
114
115    }
116    void lisaaMaali(Vector paikka, double leveys, double korkeus)
117    {
118        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
119       
120
121        //ClearAll();
122        //Begin();
123        maali.Tag = "maali";
124        maali.Position = paikka;
125        Add(maali);
126    }
127
128    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
129    {
130        ammus.Destroy();
131        if (kohde.Tag.Equals("A"))
132        {
133            //ShowMessageWindow("Osu");
134
135            (kohde as Asevihu).ElamaLaskuri.Value--;
136        }
137    }
138
139    void AmmuAseella(PlatformCharacter ampuja)
140    {
141        if (pelaaja1.IsDestroyed) return;
142
143        PhysicsObject ammus = ampuja.Weapon.Shoot();
144
145        if (ammus != null)
146        {
147            //ammus.Size *= 0.10;
148            ammus.Width = 20;
149            ammus.Height = 1;
150            //ammus.Image = ...
151            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
152        }
153
154    }
155    void LuoKentta()
156    {
157        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttaNumero);
158        kentta.SetTileMethod('#', LisaaTaso);
159        kentta.SetTileMethod('*', Lisaadollar);
160        kentta.SetTileMethod('N', LisaaPelaaja);
161        kentta.SetTileMethod('K', lisaaMaali);
162        kentta.SetTileMethod('y', tomas);
163        kentta.SetTileMethod('A', Lisaaasevihu);
164        kentta.SetTileMethod('T', Lisaaasevihu);
165        kentta.SetTileMethod('H', Lisaahiekka);
166        kentta.SetTileMethod('R', LisaaRuoho);
167        kentta.SetTileMethod('Z', LisaaTalo);
168        kentta.SetTileMethod('M', LisaaMuuri);
169        kentta.SetTileMethod('G', LisaaTacoVihu);
170        kentta.SetTileMethod('p', bombi);
171        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
172
173
174        Level.CreateBorders();
175        Level.Background.CreateGradient(Color.White, Color.SeaGreen);
176        Level.Background.Image = LoadImage("taustakuvanewyork");
177    }
178
179   
180   
181       
182   
183    void LisaaTaso(Vector paikka, double leveys, double korkeus)
184    {
185        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
186        taso.Position = paikka;
187        taso.Color = Color.Green;
188        Add(taso);
189    }
190
191    void LisaaMuuri(Vector paikka, double leveys, double korkeus)
192    {
193        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
194        taso.Position = paikka;
195        taso.Color = Color.Green;
196        Add(taso);
197
198        taso.Image = LoadImage("muuri");
199    }
200
201    void Lisaahiekka(Vector paikka, double leveys, double korkeus)
202    {
203        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
204        taso.Position = paikka;
205
206        Add(taso);
207        taso.Color = Color.Green;
208        taso.Image = LoadImage("hiekka");
209    }
210
211    void LisaaTalo(Vector paikka, double leveys, double korkeus)
212    {
213        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
214        taso.Position = paikka;
215        taso.Color = Color.Green;
216        Add(taso);
217
218        taso.Image = LoadImage("talo");
219
220    }
221
222
223    void LisaaRuoho(Vector paikka, double leveys, double korkeus)
224    {
225        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
226        taso.Position = paikka;
227
228        Add(taso);
229        taso.Color = Color.Green;
230        taso.Image = LoadImage("ruoho");
231    }
232   
233
234
235    void Lisaadollar(Vector paikka, double leveys, double korkeus)
236    {
237        PhysicsObject dollar = PhysicsObject.CreateStaticObject(leveys, korkeus);
238        dollar.IgnoresCollisionResponse = true;
239        dollar.Position = paikka;
240        dollar.Image = tahtiKuva;
241        dollar.Tag = "dollar";
242        Add(dollar);
243    }
244
245    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
246    {
247        pelaaja1 = new Pelihahmo(leveys, korkeus);
248        pelaaja1.Position = paikka;
249        pelaaja1.Mass = 4.0;
250        pelaaja1.Image = pelaajanKuva;
251        pelaaja1.Tag = "pelaaja";
252        AddCollisionHandler(pelaaja1, "dollar", Tormaadollar);
253        Add(pelaaja1);
254        AddCollisionHandler(pelaaja1, "p", CollisionHandler.ExplodeBoth(99999, true));
255        AddCollisionHandler(pelaaja1, "maali", paasiMaalin);
256
257        pelaaja1.Weapon = new AssaultRifle(30, 10);
258        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
259        pelaaja1.Weapon.InfiniteAmmo = true;
260        pelaaja1.Weapon.Power.DefaultValue = 400;
261        pelaaja1.Weapon.AmmoIgnoresGravity = true;
262        pelaaja1.Weapon.AmmoIgnoresExplosions = true;
263        pelaaja1.Weapon.CanHitOwner = false;
264        pelaaja1.Weapon.Image = LoadImage("alkuase");
265        pelaaja1.Weapon.Y = 5;
266    }
267
268    void LisaaNappaimet()
269    {
270        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
271        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
272        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AmmuAseella, "Lopeta peli", pelaaja1);
273
274        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
275        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
276        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
277        Keyboard.Listen(Key.Space, ButtonState.Down, fly, "pelaaja lentää", pelaaja1, flynopeus);
278        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
279
280        //ControllerOne.Listen(Button.A, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
281        //ControllerOne.Listen(Button.D, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
282        //ControllerOne.Listen(Button.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
283
284        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
285    }
286
287    void Liikuta(PlatformCharacter hahmo, double nopeus)
288    {
289        hahmo.Walk(nopeus);
290    }
291
292    void Hyppaa(PlatformCharacter hahmo, double nopeus)
293    {
294        hahmo.Jump(nopeus);
295    }
296    void VihuAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
297    {
298        ammus.Destroy();
299        if (kohde.Tag.ToString() == "pelaaja")
300        {
301            (kohde as Pelihahmo).ElamaLaskuri.Value--;
302        }
303    }
304
305    void Lisaaasevihu(Vector paikka, double leveys, double korkeus)
306    {
307        Asevihu asevihu = new Asevihu(leveys * 0.9, korkeus * 0.9);
308        asevihu.Position = paikka;
309        asevihu.Image = meksikolainen;
310        Add(asevihu);
311        asevihu.Tag = "A";
312
313        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
314        tasoAivot.Speed = 100;
315
316        tasoAivot.FallsOffPlatforms = true;
317        tasoAivot.TriesToJump = true;
318
319        asevihu.Brain = tasoAivot;
320
321        asevihu.Weapon = new AssaultRifle(30, 10);
322        asevihu.Weapon.ProjectileCollision = VihuAmmusOsui;
323
324        Timer aikaLaskuri = new Timer();
325        aikaLaskuri.Interval = 0.2;
326        aikaLaskuri.Timeout += () => AmmuAseella(asevihu);
327        aikaLaskuri.Start();
328    }
329
330    void LisaaTacoVihu(Vector paikka, double leveys, double korkeus)
331    {
332        Asevihu tacovihu = new Asevihu(leveys * 0.9, korkeus * 0.9);
333        tacovihu.Position = paikka;
334        tacovihu.Image = LoadImage("mexivotacoduude");
335        Add(tacovihu);
336        tacovihu.Tag = "A";
337
338        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
339        tasoAivot.Speed = 100;
340
341        tasoAivot.FallsOffPlatforms = true;
342        tasoAivot.TriesToJump = true;
343
344        tacovihu.Brain = tasoAivot;
345
346        //tacovihu.Weapon = new AssaultRifle(30, 10);
347        //tacovihu.Weapon.ProjectileCollision = VihuAmmusOsui;
348
349        Timer aikaLaskuri = new Timer();
350        aikaLaskuri.Interval = 0.2;
351        aikaLaskuri.Timeout += delegate
352        {
353            Grenade kranu = new Grenade(4.0);
354            kranu.Image = LoadImage("tacobom");
355            tacovihu.Throw(kranu, Angle.FromDegrees(30), 10000);
356
357        };
358        aikaLaskuri.Start();
359    }
360
361    void Tormaadollar(PhysicsObject hahmo, PhysicsObject dollar)
362    {
363        maaliAani.Play();
364        MessageDisplay.Add("Keräsit dollarin!");
365        dollar.Destroy();
366    }
367    void fly(PlatformCharacter hahmo, double nopeus)
368    {
369
370        hahmo.Push(new Vector(0, nopeus));
371    }
372}
Note: See TracBrowser for help on using the repository browser.