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

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