source: 2010/24/timisahe/Makkarajahti/Peli.cs @ 969

Revision 969, 9.3 KB checked in by timisahe, 13 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    const double nopeus = 200;
10    const double hyppyVoima = 4000;
11
12    IntMeter pisteLaskuri;
13    ValueDisplay pisteNaytto;
14
15    PlatformCharacter pelaaja1;
16    Vector aloituspaikka;
17
18    int kenttaNro; // monesko kenttä on menossa
19
20    Timer uudelleenSyntymisAjastin;
21
22
23    protected override void Begin()
24    {
25
26
27
28
29
30        SetWindowSize(true);
31
32        kenttaNro = 0;
33
34        // Luodaan pistelaskuri
35        pisteLaskuri = new IntMeter(0);
36
37        // luodaan pistelaskunäyttö
38        pisteNaytto = new ValueDisplay();
39        pisteNaytto.Text = "Makkaroita: ";
40        pisteNaytto.X = Screen.RightSafe - 250;
41        pisteNaytto.Y = Screen.TopSafe - 50;
42        pisteNaytto.BindTo(pisteLaskuri);
43        Add(pisteNaytto);
44
45        // Zoomataan lähemmäksi
46        Camera.ZoomFactor = 2.0;
47
48        Camera.StayInLevel = true;
49
50        seuraavaKentta();
51        MessageDisplay.Add("Etsi kaikki Makkarat (13) ja löydä Bulska!");
52    }
53
54
55    void seuraavaKentta()
56    {
57        ClearAll();
58        pisteLaskuri.Reset();
59
60        kenttaNro += 1; // lisätään kenttänumeroa yhdellä
61        MessageDisplay.Add("Makkarajahti");
62
63        // Asetetaan painovoima
64        Gravity = new Vector(0, -1000);
65
66        luoKentta();
67        lisaaNappaimet();
68        Camera.Follow(pelaaja1);
69
70    }
71
72
73
74
75
76    void luoKentta()
77    {
78
79        Level.Background.CreateGradient(Color.SkyBlue, Color.SkyBlue);
80
81        TileMap ruudut = TileMap.FromFile("kentta1.txt");
82
83        ruudut['='] = lisaaTaso;
84        ruudut['*'] = lisaaPelaajat;
85        ruudut['o'] = lisaaPyoreataso;
86        ruudut['i'] = seina;
87        ruudut['#'] = taso;
88        ruudut['-'] = lisaaTasoend;
89        ruudut['&'] = tasoend;
90        ruudut[','] = piikit;
91        ruudut['M'] = makkara;
92        ruudut['0'] = pettavakivi;
93        ruudut['!'] = nuotio;
94        ruudut['?'] = Bulska;
95
96        const int ruudunLeveys = 50;
97        const int ruudunKorkeus = 50;
98
99        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
100        Level.CreateBorders();
101        aloituspaikka = pelaaja1.Position;
102        AddCollisionHandler(pelaaja1, Kasittelepelaaja1Tormays);
103        AddCollisionHandler(pelaaja1, Kasittelepelaaja1Palaminen);
104
105    }
106
107
108    PhysicsObject pettavakivi()
109    {
110        PhysicsObject pyoreataso = PhysicsObject.CreateStaticObject(50.0, 50.0, Shapes.Circle);
111        pyoreataso.Color = Color.Black;
112        pyoreataso.Image = LoadImage("kivi");
113        Add(pyoreataso);
114        pyoreataso.Tag = "kivi";
115
116        return pyoreataso;
117
118    }
119
120    PhysicsObject makkara()
121    {
122        PhysicsObject makkara = PhysicsObject.CreateStaticObject(50.0, 50.0);
123        makkara.Color = Color.Orange;
124        makkara.Image = LoadImage("Makkara");
125        Add(makkara);
126        PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Circle);
127        makkara.Tag = "maali";
128        maali.IgnoresCollisionResponse = true;
129
130
131        return makkara;
132    }
133
134
135
136
137    PhysicsObject piikit()
138    {
139        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0, 50.0);
140        taso.Tag = "piikit";
141        taso.Color = Color.Orange;
142        taso.Image = LoadImage("piikit");
143        Add(taso);
144
145        return taso;
146    }
147
148
149    PhysicsObject tasoend()
150    {
151        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0, 50.0);
152        taso.Color = Color.Orange;
153        taso.Image = LoadImage("maaend");
154        Add(taso);
155
156        return taso;
157    }
158
159
160
161
162    PhysicsObject lisaaTasoend()
163    {
164        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0, 50.0);
165        taso.Color = Color.Orange;
166        taso.Image = LoadImage("lattiaend");
167        Add(taso);
168
169        return taso;
170    }
171
172    PhysicsObject taso()
173    {
174        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0, 50.0);
175        taso.Color = Color.Orange;
176        taso.Image = LoadImage("maa");
177        Add(taso);
178
179        return taso;
180    }
181
182
183
184    PhysicsObject lisaaTaso()
185    {
186        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0, 50.0);
187        taso.Color = Color.Orange;
188        taso.Image = LoadImage("lattia");
189        Add(taso);
190
191        return taso;
192    }
193    PhysicsObject lisaaPyoreataso()
194    {
195        PhysicsObject pyoreataso = PhysicsObject.CreateStaticObject(50.0, 50.0, Shapes.Circle);
196        pyoreataso.Color = Color.Black;
197        pyoreataso.Image = LoadImage("kivi");
198        Add(pyoreataso);
199
200        return pyoreataso;
201
202    }
203    PlatformCharacter lisaaPelaajat()
204    {
205        pelaaja1 = new PlatformCharacter(40, 60);
206        pelaaja1.Mass = 8.0;
207        pelaaja1.Image = LoadImage("Bulla");   
208        AddCollisionHandler(pelaaja1, osuiMaaliin);
209        AddCollisionHandler(pelaaja1, pettavakivi);
210       
211
212        Add(pelaaja1);
213
214
215        return pelaaja1;
216
217
218
219
220    }
221
222
223
224    PhysicsObject seina()
225    {
226        PhysicsObject seina = PhysicsObject.CreateStaticObject(50.0, 50.0);
227        seina.Color = Color.Gray;
228        Add(seina);
229        seina.Image = LoadImage("seina");
230
231        return seina;
232    }
233
234
235
236    void lisaaNappaimet()
237    {
238        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
239        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
240
241        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
242        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
243        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
244
245
246
247        lisaaGamePadNappaimet(ControllerOne);
248    }
249
250    void lisaaGamePadNappaimet(GamePad controller)
251    {
252        controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
253
254        controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
255        controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
256        controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
257
258
259    }
260
261
262
263    void liikuta(PlatformCharacter hahmo, double nopeus)
264    {
265        hahmo.Walk(nopeus);
266    }
267
268    void hyppaa(PlatformCharacter hahmo, double voima)
269    {
270        hahmo.Jump(voima);
271        ControllerOne.Vibrate(0.5, 0.5, 0.0, 0.0, 0.2);
272    }
273
274    void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
275    {
276        if (otherObject.Tag.ToString() == "maali")
277        {
278
279            //this.PlaySound("maali");
280            int edellisenKentanPisteet = pisteLaskuri.Value;
281            pisteLaskuri.Value++;
282            MessageDisplay.Add("Sait makkaran!" + " Makkaroita: " + pisteLaskuri.Value);
283            MessageDisplay.TextColor = Color.Yellow;
284
285
286            otherObject.Destroy();
287
288
289        }
290    }
291
292
293    void Kasittelepelaaja1Tormays(PhysicsObject pelaaja1, PhysicsObject kohde)
294    {
295        if (kohde.Tag == "piikit")
296        {
297            pelaaja1.Position = aloituspaikka;
298            ControllerOne.Vibrate(010.0, 10.0, 0.0, 0.0, 0.7);
299            MessageDisplay.Add("Auts!");
300            MessageDisplay.TextColor = Color.Red;
301
302
303
304
305        }
306    }
307    void pettavakivi(PhysicsObject collidingObject, PhysicsObject otherObject)
308    {
309        if (otherObject.Tag.ToString() == "kivi")
310        {
311            otherObject.IsVisible = false;
312            otherObject.IgnoresCollisionResponse = false;
313            TeeSyntymisAjastin(otherObject);
314        }
315    }
316
317    void TeeSyntymisAjastin(PhysicsObject kivi)
318    {
319        Timer uudelleenSyntymisAjastin = new Timer();
320        uudelleenSyntymisAjastin.Tag = kivi;
321        uudelleenSyntymisAjastin.Interval = 3;
322        uudelleenSyntymisAjastin.Trigger += KiviSyntyyUudelleen;
323        Add(uudelleenSyntymisAjastin);
324        uudelleenSyntymisAjastin.Start();
325    }
326
327    void KiviSyntyyUudelleen(Timer t)
328    {
329        (t.Tag as PhysicsObject).IgnoresCollisionResponse = true;
330        (t.Tag as PhysicsObject).IsVisible = true;
331        t.Stop();
332    }
333
334    PhysicsObject nuotio()
335    {
336        PhysicsObject nuotio = PhysicsObject.CreateStaticObject(50.0, 50.0);
337        nuotio.Color = Color.Gray;
338        Add(nuotio);
339        nuotio.Image = LoadImage("nuotio");
340        nuotio.Tag = "nuotio";
341
342        return nuotio;
343    }
344    void Kasittelepelaaja1Palaminen(PhysicsObject pelaaja1, PhysicsObject kohde)
345    {
346        if (kohde.Tag == "nuotio")
347        {
348            MessageDisplay.Add("Polttaa!");
349            MessageDisplay.TextColor = Color.Red;
350
351           
352            Explosion rajahdys = new Explosion(500);
353            rajahdys.Position = pelaaja1.Position;
354            rajahdys.Speed = 1000.0;
355            rajahdys.Force = 100000;
356
357            Add(rajahdys);
358
359            ControllerOne.Vibrate(10.0, 10.0, 0.0, 0.0, 1.0);
360
361
362        }
363
364
365    }
366    PhysicsObject Bulska()
367    {
368        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0, 50.0);
369        taso.Color = Color.Orange;
370        taso.Image = LoadImage("Bulska");
371        Add(taso);
372
373        return taso;
374    }
375
376}
Note: See TracBrowser for help on using the repository browser.