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

Revision 6946, 12.4 KB checked in by arjuhoyl, 7 years ago (diff)

kotona tehdyt muutokset

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