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

Revision 9283, 6.8 KB checked in by npo17_69, 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(5, 0, 5);
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 = 2000;
45    const double hyppyNopeus = 7500;
46    const int RUUDUN_KOKO = 40;
47    const double flynopeus= 50000;
48
49    Image meksikolainen = LoadImage("meksikolainen");
50    Pelihahmo pelaaja1;
51
52    int kenttaNumero = 2;
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    void lisaaMaali(Vector paikka, double leveys, double korkeus)
71    {
72        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
73
74        maali.Tag = "maali";
75        maali.Position = paikka;
76        Add(maali);
77    }    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
78    {
79        ammus.Destroy();
80        if (kohde.Tag.Equals("m"))
81        {
82            //ShowMessageWindow("Osu");
83           
84            (kohde as Asevihu).ElamaLaskuri.Value--;
85        }
86    }
87
88    void AmmuAseella(PlatformCharacter ampuja)
89    {
90        if (pelaaja1.IsDestroyed) return;
91
92        PhysicsObject ammus = ampuja.Weapon.Shoot();
93
94        if (ammus != null)
95        {
96            //ammus.Size *= 0.10;
97            ammus.Width = 20;
98            ammus.Height = 1;
99            //ammus.Image = ...
100            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
101        }
102
103    }
104    void LuoKentta()
105    {
106        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttaNumero);
107        kentta.SetTileMethod('#', LisaaTaso);
108        kentta.SetTileMethod('*', Lisaadollar);
109        kentta.SetTileMethod('N', LisaaPelaaja);
110        kentta.SetTileMethod('K', lisaaMaali);
111        kentta.SetTileMethod('A', Lisaaasevihu);
112        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
113        Level.CreateBorders();
114        Level.Background.CreateGradient(Color.White, Color.SeaGreen);
115        Level.Background.Image = LoadImage("taustakuvanewyork");
116    }
117
118    void paasiMaalin(PhysicsObject pelaaja, PhysicsObject maali)
119    {
120        kenttaNumero++;
121
122        ClearAll();
123        Begin();
124
125    }
126        void LisaaTaso(Vector paikka, double leveys, double korkeus)
127    {
128        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
129        taso.Position = paikka;
130        taso.Color = Color.Green;
131        Add(taso);
132    }
133
134    void Lisaadollar(Vector paikka, double leveys, double korkeus)
135    {
136        PhysicsObject dollar = PhysicsObject.CreateStaticObject(leveys, korkeus);
137        dollar.IgnoresCollisionResponse = true;
138        dollar.Position = paikka;
139        dollar.Image = tahtiKuva;
140        dollar.Tag = "dollar";
141        Add(dollar);
142    }
143
144    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
145    {
146        pelaaja1 = new Pelihahmo(leveys, korkeus);
147        pelaaja1.Position = paikka;
148        pelaaja1.Mass = 4.0;
149        pelaaja1.Image = pelaajanKuva;
150        pelaaja1.Tag = "pelaaja";
151        AddCollisionHandler(pelaaja1, "dollar", Tormaadollar);
152        Add(pelaaja1);
153    }
154
155    void LisaaNappaimet()
156    {
157        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
158        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
159
160        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
161        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
162        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
163        Keyboard.Listen(Key.Space , ButtonState.Down, fly, "pelaaja lentää", pelaaja1, flynopeus);
164        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
165
166        //ControllerOne.Listen(Button.A, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
167        //ControllerOne.Listen(Button.D, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
168        //ControllerOne.Listen(Button.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
169
170        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
171    }
172
173    void Liikuta(PlatformCharacter hahmo, double nopeus)
174    {
175        hahmo.Walk(nopeus);
176    }
177
178    void Hyppaa(PlatformCharacter hahmo, double nopeus)
179    {
180        hahmo.Jump(nopeus);
181    }
182    void VihuAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
183    {
184        ammus.Destroy();
185        if (kohde.Tag.ToString() == "pelaaja")
186        {
187            (kohde as Pelihahmo).ElamaLaskuri.Value--;
188        }
189    }
190
191    void Lisaaasevihu(Vector paikka, double leveys, double korkeus)
192    {
193        PlatformCharacter asevihu = new PlatformCharacter(leveys * 0.9, korkeus * 0.9);
194        asevihu.Position = paikka;
195        asevihu.Image = meksikolainen;
196        Add(asevihu);
197        asevihu.Tag = "A";
198
199        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
200        tasoAivot.Speed = 100;
201
202        tasoAivot.FallsOffPlatforms = true;
203        tasoAivot.TriesToJump = true;
204
205        asevihu.Brain = tasoAivot;
206
207        asevihu.Weapon = new AssaultRifle(30, 10);
208        asevihu.Weapon.ProjectileCollision = VihuAmmusOsui;
209
210        Timer aikaLaskuri = new Timer();
211        aikaLaskuri.Interval = 0.2;
212        aikaLaskuri.Timeout += () => AmmuAseella(asevihu);
213        aikaLaskuri.Start();
214    }
215    void Tormaadollar(PhysicsObject hahmo, PhysicsObject dollar)
216    {
217        maaliAani.Play();
218        MessageDisplay.Add("Keräsit dollarin!");
219        dollar.Destroy();
220    }
221    void fly(PlatformCharacter hahmo, double nopeus)
222    {
223
224        hahmo.Push(new Vector(0, nopeus));
225    }
226}
Note: See TracBrowser for help on using the repository browser.