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

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