source: 2015/30/ArttuH/TasoHyppely/TasoHyppely/TasoHyppely/TasoHyppely.cs @ 6923

Revision 6923, 10.3 KB checked in by arjuhoyl, 4 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
9public class TasoHyppely : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    double ammusnopeus2 = 1000;
15
16    PlatformCharacter pelaaja1;
17    PlatformCharacter pelaaja2;
18    IntMeter pisteLaskuri;
19    IntMeter luotilaskuri;
20    IntMeter luotilaskuri2; 
21
22    Image asekuva = LoadImage("asekuva");
23    Image asekuva2 = LoadImage("asekuva_2");
24    Image pelaajanKuva1 = LoadImage("ukko");
25    Image pelaajanKuva2 = LoadImage("toinenukko");
26    Image tahtiKuva = LoadImage("suklaa");
27    Image luoti = LoadImage("luoti");
28    Image piikkikuva = LoadImage("piikki");
29    private Animation pelihahmo1;
30    private Animation pelihahmo2;
31    SoundEffect maaliAani = LoadSoundEffect("Pickup_Coin21");
32
33    public override void Begin()
34    {
35        Paavalikko();
36    }
37
38    void LuoKentta(int pelaajienMaara)
39    {
40        Gravity = new Vector(0, -1000);
41        TileMap kentta = TileMap.FromLevelAsset("kentta1");
42        kentta.SetTileMethod('#', LisaaTaso);
43        kentta.SetTileMethod('*', LisaaTahti);
44        kentta.SetTileMethod('N', LisaaPelaaja);
45        kentta.SetTileMethod('X', Piikki);
46        kentta.SetTileMethod('A', Ammuspaketti);
47        kentta.SetTileMethod('P', LisääPahis);
48        if (pelaajienMaara == 2)
49        {
50            kentta.SetTileMethod('Z', LisaaPelaaja2);
51        }
52        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
53
54        Level.CreateBorders();
55        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
56        LisaaOhjaimet();
57        Camera.Follow(pelaaja1);
58        if (pelaajienMaara == 2)
59        {
60            Camera.Follow(pelaaja1, pelaaja2);
61            Luotilaskuri2(); 
62           
63        }
64        LuoPistelaskuri();
65        Luotilaskuri();
66    }
67
68    void LisaaTaso(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        taso.Position = paikka;
72        taso.Color = Color.Green;
73        Add(taso);
74    }
75
76    void LisaaTahti(Vector paikka, double leveys, double korkeus)
77    {
78        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        tahti.IgnoresCollisionResponse = true;
80        tahti.Position = paikka;
81        tahti.Image = tahtiKuva;
82        tahti.Tag = "tahti";
83        Add(tahti);
84    }
85
86    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
87    {
88        pelihahmo1 = LoadAnimation("ukkoanimaatio");
89        pelaaja1 = new PlatformCharacter(leveys, korkeus);
90        pelaaja1.Position = paikka;
91        pelaaja1.Mass = 4.0;
92        pelaaja1.Image = pelaajanKuva1;
93        pelaaja1.AnimWalk = pelihahmo1;
94        pelaaja1.Weapon = new AssaultRifle(50, 10);
95        pelaaja1.Weapon.Image = asekuva;
96        pelaaja1.Weapon.FireRate = 10;
97        pelaaja1.Weapon.X = 20.0;
98        pelaaja1.Weapon.Y = -10.0;
99        pelaaja1.Weapon.Ammo.Value = 100;
100        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
101        AddCollisionHandler(pelaaja1,"piikki", PiikkiTormaa);
102        AddCollisionHandler(pelaaja1, "paketti1", Ammusotettu);
103        ControllerOne.Listen(Button.A, ButtonState.Down, Hyppaa, "pelaaja hypää", pelaaja1, 300.0);
104        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, Liikuta, "Pelaaja liikkuu vasemmalle/oikealle", pelaaja1);
105        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.1, Tahtaa, "tähtää aseella");
106        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "ampuu", pelaaja1);
107        Add(pelaaja1);
108    }
109    void Liikuta(PlatformCharacter hahmo, double nopeus)
110    {
111        hahmo.Walk(nopeus);
112    }
113
114    void Hyppaa(PlatformCharacter hahmo, double nopeus)
115    {
116        hahmo.Jump(nopeus);
117    }
118
119    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
120    {
121        pisteLaskuri.Value += 1;
122        maaliAani.Play();
123        MessageDisplay.Add("Sait Suklaata!");
124        tahti.Destroy();
125    }
126    void LisaaOhjaimet()
127    {
128
129        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
130        ControllerOne.Listen(Button.Start, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
131        ControllerTwo.Listen(Button.Start, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
132    }
133
134    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
135    {
136        pelihahmo2 = LoadAnimation("toinenukkoanimaatio");
137        pelaaja2 = new PlatformCharacter(leveys, korkeus);
138        pelaaja2.Position = paikka;
139        pelaaja2.Mass = 4.0;
140        pelaaja2.Image = pelaajanKuva2;
141        pelaaja2.AnimWalk = pelihahmo2;
142        pelaaja2.Weapon = new AssaultRifle(50, 10);
143        pelaaja2.Weapon.FireRate = 2;
144        pelaaja2.Weapon.Image = null;
145        pelaaja2.Weapon.Image = asekuva2;
146        pelaaja2.Weapon.X = 20.0;
147        pelaaja2.Weapon.Y = -10.0;
148        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
149        AddCollisionHandler(pelaaja2, "piikki", PiikkiTormaa);
150        AddCollisionHandler(pelaaja2, "paketti1", Ammusotettu2);
151        ControllerTwo.Listen(Button.A, ButtonState.Down, Hyppaa, "pelaaja hypää", pelaaja2, 300.0);
152        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.1, Liikuta, "Pelaaja liikkuu vasemmalle/oikealle", pelaaja2);
153        ControllerTwo.ListenAnalog(AnalogControl.RightStick, 0.1, Tahtaa2, "tähtää aseella");
154        ControllerTwo.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella2, "ampuu", pelaaja2);
155        Add(pelaaja2);
156       
157    }
158    void Liikuta(AnalogState tatinTila, PlatformCharacter hahmo)
159    {
160        Vector tatinAsento = tatinTila.StateVector;
161        if (tatinAsento.X == 0.0)
162        {
163            return;
164        }
165        hahmo.Walk(300.0 * tatinAsento.X);
166
167    }
168    void Paavalikko()
169    {
170        MultiSelectWindow alkuvalikko = new MultiSelectWindow("pelin valikko", "aloita peli", "lopeta");
171        alkuvalikko.AddItemHandler(0, PelaajaValikko);
172        alkuvalikko.AddItemHandler(1, Exit);
173        Add(alkuvalikko);
174
175    }
176    void PelaajaValikko()
177    {
178        MultiSelectWindow alkuvalikko = new MultiSelectWindow("montako pelaajaa", "yksin", "kahdestaan");
179        alkuvalikko.AddItemHandler(0, delegate { LuoKentta(1); });
180        alkuvalikko.AddItemHandler(1, delegate{ LuoKentta(2);});
181        Add(alkuvalikko);
182    }
183    void Ammusosui(PhysicsObject ammus, PhysicsObject kohde)
184    {
185        ammus.Destroy();
186    }
187    void LuoPistelaskuri()
188    {
189         pisteLaskuri = new IntMeter(0);
190
191        Label pisteNaytto = new Label();
192        pisteNaytto.X = Screen.Left + 100;
193        pisteNaytto.Y = Screen.Top - 100;
194        pisteNaytto.TextColor = Color.Black;
195        pisteNaytto.Color = Color.White;
196        pisteNaytto.Title = "Suklaa";
197
198        pisteNaytto.BindTo(pisteLaskuri);
199        Add(pisteNaytto);
200    }
201
202    void AmmuAseella(PlatformCharacter pelaaja1)
203    {
204        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
205
206        if (ammus != null)
207        {
208            luotilaskuri.Value--;
209            ammus.Size *= 0.8;
210            ammus.Image = luoti;
211            ControllerOne.Vibrate(0.16, 0.16, 0.16, 0.16, 0.1);
212            ammus.MaximumLifetime = TimeSpan.FromSeconds(0.6);
213        }
214    }
215
216    void Tahtaa(AnalogState tatinTila)
217    {
218        pelaaja1.Weapon.Angle = tatinTila.StateVector.Angle;
219    }
220
221    void PiikkiTormaa(PhysicsObject tormaaja, PhysicsObject kohde)
222    {
223        Remove(pelaaja1);
224        ClearAll();
225        Paavalikko();
226    }
227    void Piikki(Vector paikka, double leveys, double korkeus)
228    {
229        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
230        piikki.Position = paikka;
231        piikki.Image = piikkikuva;
232        piikki.Tag = "piikki";
233        Add(piikki);
234    }
235
236
237    void AmmuAseella2(PlatformCharacter pelaaja2)
238    {
239        PhysicsObject ammus = pelaaja2.Weapon.Shoot();
240
241        if (ammus != null)
242        {
243            ammus.Size *= 0.8;
244            ammus.Image = luoti;
245            luotilaskuri2.Value--;
246            ammus.Velocity = pelaaja2.Weapon.Angle.GetVector().Normalize() * ammusnopeus2;
247            ControllerTwo.Vibrate(100.16, 100.16, 0.16, 0.16, 0.1);
248            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0);
249        }
250    }
251    void Tahtaa2(AnalogState tatinTila)
252    {
253        pelaaja2.Weapon.Angle = tatinTila.StateVector.Angle;
254    }
255    void Luotilaskuri()
256    {
257        luotilaskuri = new IntMeter(100);
258
259        Label pisteNaytto = new Label();
260        pisteNaytto.X = Screen.Right - 190;
261        pisteNaytto.Y = Screen.Top - 100;
262        pisteNaytto.TextColor = Color.Black;
263        pisteNaytto.Color = Color.White;
264        pisteNaytto.Title = "Pelaajan 1 Panokset";
265
266        pisteNaytto.BindTo(luotilaskuri);
267        Add(pisteNaytto);
268    }
269
270    void Luotilaskuri2()
271    {
272        luotilaskuri2 = new IntMeter(100);
273
274        Label pisteNaytto = new Label();
275        pisteNaytto.X = Screen.Right - 190;
276        pisteNaytto.Y = Screen.Top - 180;
277        pisteNaytto.TextColor = Color.Black;
278        pisteNaytto.Color = Color.White;
279        pisteNaytto.Title = "Pelaajan 2 Panokset";
280        pisteNaytto.BindTo(luotilaskuri2);
281        Add(pisteNaytto);
282    }
283    void Ammuspaketti(Vector paikka, double leveys, double korkeus)
284    {
285        PhysicsObject ammuspaketti = PhysicsObject.CreateStaticObject(leveys, korkeus);
286        ammuspaketti.Position = paikka;
287        ammuspaketti.Tag = "paketti1";
288        Add(ammuspaketti);
289
290    }
291    void Ammusotettu(PhysicsObject hahmo, PhysicsObject kohde)
292    {
293        kohde.Destroy();
294        PlatformCharacter pelaaja1 = hahmo as PlatformCharacter;
295        pelaaja1.Weapon.Ammo.Value = 100;
296        luotilaskuri.Value = 100;
297    }
298    void Ammusotettu2(PhysicsObject hahmo, PhysicsObject kohde)
299    {
300        kohde.Destroy();
301        PlatformCharacter pelaaja2 = hahmo as PlatformCharacter;
302        pelaaja2.Weapon.Ammo.Value = 100;
303        luotilaskuri2.Value = 100;
304    }
305
306    void LisääPahis(Vector paikka, double leveys, double korkeus)
307       {
308        PlatformCharacter pahis = new PlatformCharacter(leveys, korkeus);
309        pahis.Position = paikka;
310       }
311
312}
Note: See TracBrowser for help on using the repository browser.