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

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