source: 2014/24/OttoH/TasoHyppyV1/TasoHyppyV1/TasoHyppyV1/TasoHyppyV1.cs @ 4969

Revision 4969, 10.1 KB checked in by ottjerju, 5 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 TasoHyppyV1 : PhysicsGame
10{
11
12   
13   
14    const double nopeus = 200;
15    const double hyppyNopeus = 550;
16    const int RUUDUN_KOKO = 20;
17    Timer aikaLaskuri;
18    PlatformCharacter pelaaja1;
19    PhysicsObject laava;
20    Image tasonKuva = LoadImage("ruoho2");
21    Image piikinKuva = LoadImage("piikki2");
22    Image vihunKuva = LoadImage("pommi2");
23    Image pelaajanKuva = LoadImage("sieni4");
24    Image tahtiKuva = LoadImage("mariostar2");
25    Image taustaKuva = LoadImage("pilvet");
26    Image ilmatasonKuva = LoadImage("mariotaso2");
27    Image laavanKuva = LoadImage("laava");
28    Image taytetasonKuva = LoadImage("multa");
29    Image taustaPilvetKuva = LoadImage("pilvi2");
30    Image lopunKuva = LoadImage("portal");
31    SoundEffect maaliAani = LoadSoundEffect("maali");
32
33
34    public override void Begin()
35    {
36       
37        LuoAlkuValikko();
38    }
39
40    void LuoAlkuValikko()
41    {
42        ClearAll();
43
44        MultiSelectWindow alkuValikko = new MultiSelectWindow("1UP's Adventure",
45            "Aloita alusta", "Lopeta");
46        Add(alkuValikko);
47
48        MessageDisplay.Add("Paina F1 niin näet näppäimet. Välilyönnistä ammut panoksen jonka avulla voit hyppiä paikkoihin joihin et normaalisti pysty. Vaatii harjoitusta. Kerää 12 Kaikki Tähteä.");
49        MessageDisplay.TextColor = Color.Orange;
50        MessageDisplay.MessageTime = new TimeSpan(0, 0, 20);
51       
52
53        alkuValikko.AddItemHandler(0, AloitaPeli);
54        alkuValikko.AddItemHandler(1, Exit);
55    }
56
57    void AloitaPeli()
58    {
59        Gravity = new Vector(0, -1000);
60
61        LuoKentta();
62        LisaaNappaimet();
63
64        //Camera.ZoomToAllObjects();
65       Camera.Follow(pelaaja1);
66       Camera.ZoomFactor = 1;
67       Camera.StayInLevel = true;
68    }
69
70    void LuoKentta()
71    {
72        TileMap kentta = TileMap.FromLevelAsset("kentta1");
73        kentta.SetTileMethod('L', LisaaLoppu);
74        kentta.SetTileMethod('K', LisaaIlmaTaso);
75        kentta.SetTileMethod('#', LisaaTaso);
76        kentta.SetTileMethod('*', LisaaTahti);
77        kentta.SetTileMethod('o', LisaaTayteTaso);
78        kentta.SetTileMethod('N', LisaaPelaaja);
79        kentta.SetTileMethod('V', LisaaVihu);
80        kentta.SetTileMethod('P', LisaaPiikki);
81        kentta.SetTileMethod('Y', LisaaLaava);
82        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
83        Level.CreateBorders();
84        Level.Background.Color = Color.SkyBlue;
85        Level.Background.FitToLevel();
86        LuoAikaLaskuri();
87        GameObject taustaPilvet = new GameObject(100, 50);
88        taustaPilvet.Image = taustaPilvetKuva;
89        taustaPilvet.Position = new Vector(Level.Left + 200, Level.Top -10) * 0.5;
90        Add(taustaPilvet, 3);
91        Layers[3].RelativeTransition = new Vector(0.5, 0.5);
92
93    }
94    void LisaaLoppu(Vector paikka, double leveys, double korkeus)
95    {
96        PhysicsObject loppu = PhysicsObject.CreateStaticObject(leveys, korkeus);
97        loppu.Position = paikka;
98        loppu.Image = lopunKuva;
99        Add(loppu);
100
101        loppu.Tag = "loppu";
102    }
103    void LisaaLaava(Vector paikka, double leveys, double korkeus)
104    {
105        laava = new PhysicsObject(leveys, Level.Height);
106        laava.CanRotate = false;
107        laava.IgnoresGravity = true;
108        laava.IgnoresExplosions = true;
109        laava.IgnoresCollisionResponse = true;
110        laava.Position = new Vector((Level.Left + leveys/2),0);
111        laava.Image = laavanKuva;
112        laava.Restitution = 1.0;
113        Add(laava);
114
115        laava.Tag = "laava";
116        AddCollisionHandler(laava, pelaaja1, TuhoaPelaaja);
117        AddCollisionHandler(laava, TuhoaEste);
118
119        laava.Velocity = new Vector(20, 0);
120
121    }
122
123    void TuhoaPelaaja(PhysicsObject laava, PlatformCharacter pelaaja)
124    {
125        pelaaja.Destroy();
126        LuoAlkuValikko();
127    }
128
129    void TuhoaEste(PhysicsObject laava, PhysicsObject kappale)
130    {
131        kappale.Destroy();
132    }
133
134    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
135    {
136        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
137        piikki.Position = paikka;
138        piikki.Image = piikinKuva;
139        Add(piikki);
140
141        piikki.Tag = "piikki";
142    }
143   
144
145    void LisaaTaso(Vector paikka, double leveys, double korkeus)
146    {
147       PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
148        taso.Position = paikka;
149        taso.Image = tasonKuva;
150        taso.Tag = "taso";
151        Add(taso);
152    }
153
154    void LisaaTahti(Vector paikka, double leveys, double korkeus)
155    {
156        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
157        tahti.IgnoresCollisionResponse = true;
158        tahti.Position = paikka;
159        tahti.Image = tahtiKuva;
160        tahti.Tag = "mariostar2";
161        Add(tahti);
162    }
163
164    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
165    {
166        pelaaja1 = new PlatformCharacter(leveys, korkeus);
167        pelaaja1.Position = paikka;
168        pelaaja1.Mass = 4.0;
169        pelaaja1.Image = pelaajanKuva;
170        AddCollisionHandler(pelaaja1, "mariostar2", TormaaTahteen);
171        AddCollisionHandler(pelaaja1, "vihu", TormaaVihuun);
172        Add(pelaaja1);
173        AddCollisionHandler(pelaaja1, "piikki", TormaaVihuun);
174        pelaaja1.Weapon = new Cannon (0, 0);
175        pelaaja1.Weapon.Ammo.Value = 70; 
176        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
177        AddCollisionHandler(pelaaja1, "loppu", tormaaLoppuun);
178
179    }
180    void tormaaLoppuun(PhysicsObject pelaaja, PhysicsObject loppu)
181    {
182        ClearAll();
183        Level.Background.Color = Color.Black;
184        Label teksti = new Label("Onneksi olkoon läpäisit pelin! Lopetat pelin ESC. Aikasi oli " +aikaLaskuri.SecondCounter.Value);
185        teksti.TextColor = Color.LimeGreen;
186        Add(teksti);
187        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Lopeta peli");
188    }
189    void TormaaVihuun(PhysicsObject pelaaja, PhysicsObject vihu)
190    {
191        if (vihu.Tag == "vihu")
192        {
193            pelaaja.Destroy();
194            LuoAlkuValikko();
195        }
196        else if (vihu.Tag == "piikki")
197        {
198            pelaaja.Destroy();
199            LuoAlkuValikko();
200        }
201    }
202
203    void LisaaVihu(Vector paikka, double leveys, double korkeus)
204    {
205        PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus);
206        vihu.Position = paikka;
207        vihu.Mass = 4.0;
208        vihu.Image = vihunKuva;
209        vihu.Tag = "vihu";
210        AddCollisionHandler(vihu, "sieni4", TormaaTahteen);
211        Add(vihu);
212       
213
214       
215    }
216    void LisaaNappaimet()
217    {
218        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
219        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
220
221        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
222        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
223        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
224
225        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
226
227        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
228        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
229        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
230
231        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
232        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
233        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
234    }
235
236    void Liikuta(PlatformCharacter hahmo, double nopeus)
237    {
238        hahmo.Walk(nopeus);
239    }
240
241    void Hyppaa(PlatformCharacter hahmo, double nopeus)
242    {
243        hahmo.Jump(nopeus);
244    }
245
246    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
247    {
248        maaliAani.Play();
249        MessageDisplay.Add("Keräsit tähden!");
250        tahti.Destroy();
251    }
252
253    void LisaaTayteTaso(Vector paikka, double leveys, double korkeus)
254    {
255        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
256        taso.IgnoresGravity = true;
257        taso.Position = paikka;
258        taso.Image = taytetasonKuva;
259        Add(taso);
260    }
261   
262
263    void AmmusOsui (PhysicsObject ammus, PhysicsObject kohde)
264    {
265        ammus.Destroy();
266        Explosion rajahdys = new Explosion(50);
267        rajahdys.Force = 2000;
268        rajahdys.Position = ammus.Position;
269        Add(rajahdys);
270    }
271
272    void AmmuAseella(PlatformCharacter pelaaja)
273    {
274        PhysicsObject ammus = pelaaja.Weapon.Shoot();
275       
276
277        if (ammus != null)
278        {
279            //ammus.Size *= 3;
280            //ammus.Image = ...
281            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
282            AddCollisionHandler(ammus, "vihu", CollisionHandler.DestroyBoth);
283            AddCollisionHandler(ammus, "taso", CollisionHandler.DestroyObject);
284            AddCollisionHandler(ammus, "laava", CollisionHandler.DestroyObject);
285        }
286    }
287
288    void LisaaIlmaTaso(Vector paikka, double leveys, double korkeus)
289    {
290        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
291        taso.Position = paikka;
292        taso.Image = ilmatasonKuva;
293        taso.Tag = "ilmataso";
294        Add(taso);
295    }
296    void LuoAikaLaskuri()
297    {
298        aikaLaskuri = new Timer();
299        aikaLaskuri.Start();
300
301        Label aikaNaytto = new Label();
302        aikaNaytto.TextColor = Color.Black;
303        aikaNaytto.DecimalPlaces = 1;
304        aikaNaytto.X = Screen.Right - 100;
305        aikaNaytto.Y = Screen.Top - 100;
306        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
307        Add(aikaNaytto);
308    }
309
310   }
311
Note: See TracBrowser for help on using the repository browser.