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

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