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

Revision 6942, 11.5 KB checked in by arjuhoyl, 8 years ago (diff)

päivän 3 pääte

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