source: 2013/26/Olli-PekkaL/'Murica/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 4317

Revision 4317, 8.9 KB checked in by olalleht, 6 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Tasohyppelypeli1 : PhysicsGame
10{
11    const double perusJuoksuNopeus = 200;
12    const double perushyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    double juoksuNopeus = perusJuoksuNopeus;
17    double hyppynopeus = perushyppyNopeus;
18
19    Image pelaajanKuva = LoadImage("UKKELI 2.0");
20    Image tahtiKuva = LoadImage("PURILAINEN");
21    Image piikkikuva = LoadImage("Piikki");
22    Image porkkanakuva = LoadImage("Porkkana");
23    Image Makkari = LoadImage("Makkari");
24    Image kokis = LoadImage("kokis");
25    Image lenkkeilijä = LoadImage("lenkkeilijä");
26
27    SoundEffect maaliAani = LoadSoundEffect("maali");
28
29    IntMeter hampurilaislaskuri = new IntMeter(0, 0, 50);
30    IntMeter pistelaskuri = new IntMeter(0, 0, 99999);
31
32    int kenttaNro = 1;
33
34    public override void Begin()
35    {
36        SeuraavaKentta();
37    }
38
39    void LuoKentta(string kentanNimi)
40    {
41        TileMap kentta = TileMap.FromLevelAsset(kentanNimi);
42        kentta.SetTileMethod('#', LisaaTaso);
43        kentta.SetTileMethod('*', LisaaTahti);
44        kentta.SetTileMethod('N', LisaaPelaaja);
45        kentta.SetTileMethod('P', LisaaPiikki);
46        kentta.SetTileMethod('O', LisaaPorkkana);
47        kentta.SetTileMethod('M', LisaaMaali);
48        kentta.SetTileMethod('K', LisaaKokis);
49        kentta.SetTileMethod('L', LisaaLenkkeilija);
50        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
51        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
52    }
53
54    void LisaaTaso(Vector paikka, double leveys, double korkeus)
55    {
56 
57        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
58        taso.Position = paikka;
59        taso.Color = Color.Green;
60        Add(taso);
61
62    }
63
64    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
65    {
66        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
67        piikki.Position = paikka;
68        piikki.Image = piikkikuva;
69        piikki.Tag = "piikki";
70        Add(piikki);
71
72    }
73    void LisaaMaali(Vector paikka, double leveys, double korkeus)
74    {
75
76        PhysicsObject maali = PhysicsObject.CreateStaticObject(200, 100);
77        maali.Image = Makkari;
78        maali.IgnoresCollisionResponse = true;
79        maali.Position = paikka;
80        maali.Tag = "Makkari";
81        Add(maali);
82
83    }
84
85    void LisaaTahti(Vector paikka, double leveys, double korkeus)
86    {
87        PhysicsObject hampurilainen = PhysicsObject.CreateStaticObject(leveys, korkeus / 2);
88        hampurilainen.IgnoresCollisionResponse = true;
89        hampurilainen.Position = paikka;
90        hampurilainen.Image = tahtiKuva;
91        hampurilainen.Tag = "Hampurilainen";
92        Add(hampurilainen);
93    }
94
95
96
97    void LisaaPorkkana(Vector paikka, double leveys, double korkeus)
98    {
99        PhysicsObject porkkana = PhysicsObject.CreateStaticObject(leveys / 2, korkeus);
100        porkkana.IgnoresCollisionResponse = true;
101        porkkana.Position = paikka;
102        porkkana.Image = porkkanakuva;
103        porkkana.Tag = "Porkkana";
104        Add(porkkana);
105    }
106
107    void LisaaKokis(Vector paikka, double leveys, double korkeus)
108    {
109        PhysicsObject Kokis = PhysicsObject.CreateStaticObject(leveys / 2, korkeus);
110        Kokis.Position = paikka;
111        Kokis.Image = kokis;
112        Kokis.Tag = "kokis";
113        Add(Kokis);
114    }
115
116    void LisaaLenkkeilija(Vector paikka, double leveys, double korkeus)
117    {
118        PlatformCharacter Lenkkeilijä = new PlatformCharacter(leveys, korkeus);
119        Lenkkeilijä.Position = paikka;
120        //Lenkk
121        Add(Lenkkeilijä);
122        PlatformWandererBrain aivot = new PlatformWandererBrain();
123        aivot.TriesToJump = true;
124        aivot.Speed = 300;
125        Lenkkeilijä.Brain = aivot;
126        Lenkkeilijä.Tag = "Lenkkeilijä";
127        Lenkkeilijä.Image = lenkkeilijä;
128    }
129
130
131
132
133    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
134    {
135        pelaaja1 = new PlatformCharacter(leveys, korkeus);
136        pelaaja1.Shape = Shape.FromImage(pelaajanKuva);
137        pelaaja1.Position = paikka;
138        pelaaja1.Mass = 5.0;
139        pelaaja1.Image = pelaajanKuva;
140        AddCollisionHandler(pelaaja1, "Hampurilainen", TormaaTahteen);
141        AddCollisionHandler(pelaaja1, "piikki", TormaaPiikkiin);
142        AddCollisionHandler(pelaaja1, "Lenkkeilijä", TormaaPiikkiin);
143        AddCollisionHandler(pelaaja1, "Porkkana", tormaaPorkkanaan);
144        AddCollisionHandler(pelaaja1, "Makkari", tormaaMaaliin);
145        AddCollisionHandler(pelaaja1, "kokis", tormaaKokikseen);
146        Add(pelaaja1);
147    }
148
149    void LisaaNappaimet()
150    {
151        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
152        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
153
154        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaVasemmalle, "Liikkuu vasemmalle", pelaaja1);
155        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaOikealle, "Liikkuu vasemmalle", pelaaja1);
156        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1);
157
158        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
159
160        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, LiikutaVasemmalle, "Pelaaja liikkuu vasemmalle", pelaaja1);
161        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, LiikutaOikealle, "Pelaaja liikkuu oikealle", pelaaja1);
162        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1);
163
164        Keyboard.Listen(Key.F12, ButtonState.Pressed, delegate { kenttaNro++; SeuraavaKentta(); }, null);
165
166        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
167    }
168
169    void LiikutaVasemmalle(PlatformCharacter hahmo)
170    {
171        hahmo.Walk(-juoksuNopeus);
172    }
173
174
175    void LiikutaOikealle(PlatformCharacter hahmo)
176    {
177        hahmo.Walk(juoksuNopeus);
178    }
179
180    void Hyppaa(PlatformCharacter hahmo)
181    {
182        hahmo.Jump(hyppynopeus);
183    }
184
185    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject tahti)
186    {
187        Timer.SingleShot(2.0, SeuraavaKentta);
188        Explosion rajahdys = new Explosion(100 * hahmo.Size.X / 40.0);
189        rajahdys.Position = hahmo.Position;
190        Add(rajahdys);
191        for (int i = 0; i < hampurilaislaskuri.Value; i++)
192        {
193            PhysicsObject purilainen = new PhysicsObject(30, 30);
194            purilainen.Position = hahmo.Position + RandomGen.NextVector(10, 50);
195            purilainen.Image = tahtiKuva;
196            Add(purilainen);
197        }
198        hahmo.Destroy();
199        pistelaskuri.Value = 0;
200
201        MessageDisplay.Add("Kuolit...");
202    }
203
204    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
205    {
206        maaliAani.Play();
207        MessageDisplay.Add("SÖIT PURILAISEN!!!!!");
208        tahti.Destroy();
209        pelaaja1.Size *= 1.1;
210        hampurilaislaskuri.Value++;
211        pistelaskuri.Value += 100;
212
213    }
214
215    void SeuraavaKentta()
216    {
217        ClearAll();
218        juoksuNopeus = perusJuoksuNopeus;
219        hyppynopeus = perushyppyNopeus;
220
221        hampurilaislaskuri.Value = 0;
222
223        if (kenttaNro == 1) LuoKentta("kentta1");
224        else if (kenttaNro == 2) LuoKentta("kentta2");
225        else if (kenttaNro == 3) LuoKentta("kentta3");
226        else if (kenttaNro == 4) LuoKentta("kentta4");
227        else if (kenttaNro == 5) LuoKentta("kentta5");
228        else if (kenttaNro == 6) LuoKentta("kentta6");
229        else if (kenttaNro > 6) Exit();
230
231
232        LisaaNappaimet();
233        Gravity = new Vector(0, -1000);
234
235        Label pisteNaytto = new Label();
236        pisteNaytto.X = Screen.Left + 100;
237        pisteNaytto.Y = Screen.Top - 100;
238        pisteNaytto.TextColor = Color.Black;
239        pisteNaytto.Color = Color.White;
240
241        pisteNaytto.BindTo(pistelaskuri);
242        Add(pisteNaytto);
243
244        Camera.Follow(pelaaja1);
245        //Camera.ZoomFactor = 1.7;
246        Camera.StayInLevel = true;
247    }
248
249    void tormaaPorkkanaan(PhysicsObject hahmo, PhysicsObject porkkana)
250    {
251        porkkana.Destroy();
252        pelaaja1.Size *= 0.5;
253        MessageDisplay.Add("Söit Porkkanan");
254        hampurilaislaskuri.Value--;
255
256    }
257
258    void tormaaKokikseen(PhysicsObject hahmo, PhysicsObject kokis)
259    {
260        kokis.Destroy();
261        MessageDisplay.Add("SOKERIHUMALA!!!!");
262        juoksuNopeus *= 1.5;
263        hyppynopeus *= 1.5;
264        Timer ajastin = new Timer();
265        ajastin.Interval = 10;
266        ajastin.Timeout += delegate { juoksuNopeus = perusJuoksuNopeus; hyppynopeus = perushyppyNopeus; };
267        ajastin.Start(1);
268        pistelaskuri.Value += 200;
269
270    }
271
272    void tormaaMaaliin(PhysicsObject hahmo, PhysicsObject maali)
273    {
274        kenttaNro++;
275        SeuraavaKentta();
276
277    }
278
279
280
281}
282
Note: See TracBrowser for help on using the repository browser.