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

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