source: 2010/30/nilaiton/Tasohyppely1/Peli.cs @ 1453

Revision 1453, 14.3 KB checked in by nilaiton, 10 years ago (diff)

JOOO

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using Jypeli.Effects;
6
7
8class Tasohyppely : PhysicsGame
9{
10    const double nopeus = 200;
11    const double hyppyVoima = 4000;
12    int kenttaLaskuri = 1;
13    const int ruudunLeveys = 50;
14    const int ruudunKorkeus = 50;
15    PlatformCharacter pelaaja1;
16    PhysicsObject maali;
17    IntMeter pisteLaskuri;
18    GameObject[] alkupisteet = new GameObject[10];
19    GameObject[] loppupisteet = new GameObject[10];
20    int kaikkipisteet;
21
22    Image PeliLoppuiKuva = LoadImage("PeliPaattyi");
23
24    ExplosionSystem rajahdys;
25
26   
27
28    protected override void Begin()
29    {
30        rajahdys = new ExplosionSystem(LoadImage("tahti"), 300);
31        Add(rajahdys);
32
33        Gravity = new Vector(0, -1000);
34        //LuoMaali();
35        luoKentta1();
36        lisaaNappaimet();
37
38        Camera.Follow(pelaaja1);
39        Camera.ZoomFactor = 2.0;
40        Camera.StayInLevel = true;
41        kaikkipisteet = 0;
42
43       
44
45
46    }
47
48    void luoKentta1()
49    {
50       
51        Label teksti2 = new Label("Taso 1");
52        teksti2.TextColor = Color.White;
53        teksti2.X = Screen.Left + 1000;
54        teksti2.Y = Screen.Top - 100;
55        Add(teksti2);
56
57       
58
59        LuoLaskuri();
60        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
61        Level.Background.CreateStars();
62
63        TileMap ruudut = TileMap.FromFile("kentta1.txt");
64
65        ruudut['-'] = lisaaTaso;
66        ruudut['M'] = LuoMaaliTileMap;
67        ruudut['X'] = lisaaPelaajatTileMap;
68        //ruudut['V'] = LuoVihollinen;
69        ruudut['L'] = LuoLaatikko;
70        ruudut['A'] = LuoLaatikko2;
71        ruudut['0'] = LuoReitti0;
72        ruudut['1'] = LuoReitti1;
73        ruudut['2'] = LuoReitti2;
74        ruudut['3'] = LuoReitti3;
75        ruudut['4'] = LuoReitti4;
76        Gravity = new Vector(0, -1000);
77
78        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
79
80        for (int i = 0; i < 10; i++)
81        {
82            if (alkupisteet[i] != null)
83            {
84
85                PhysicsObject vihollinen = LuoVihollinen(i);
86                Add(vihollinen);
87            }
88        }
89    }
90    void luoKentta2()
91    {
92
93        Label teksti = new Label("Taso 2");
94        teksti.TextColor = Color.White;
95        teksti.X = Screen.Left + 1000;
96        teksti.Y = Screen.Top - 100;
97        Add(teksti);
98
99        ClearAll();
100        LuoLaskuri();
101        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
102        Level.Background.CreateStars();
103
104        TileMap ruudut = TileMap.FromFile("kentta2.txt");
105
106        ruudut['-'] = lisaaTaso;
107        ruudut['M'] = LuoMaaliTileMap;
108        ruudut['X'] = lisaaPelaajatTileMap;
109        //ruudut['V'] = LuoVihollinen;
110        ruudut['L'] = LuoLaatikko;
111        ruudut['A'] = LuoLaatikko2;
112        ruudut['0'] = LuoReitti0;
113        ruudut['1'] = LuoReitti1;
114        ruudut['2'] = LuoReitti2;
115        ruudut['3'] = LuoReitti3;
116        ruudut['4'] = LuoReitti4;
117        ruudut['5'] = LuoReitti5;
118        ruudut['6'] = LuoReitti6;
119        ruudut['7'] = LuoReitti7;
120        ruudut['8'] = LuoReitti8;
121        Gravity = new Vector(0, -1000);
122
123        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
124
125        for (int i = 0; i < 10; i++)
126        {
127            if (alkupisteet[i] != null)
128            {
129
130                PhysicsObject vihollinen = LuoVihollinen(i);
131                Add(vihollinen);
132            }
133        }
134
135        Camera.Follow(pelaaja1);
136        Camera.ZoomFactor = 2.0;
137        Camera.StayInLevel = true;
138        lisaaNappaimet();
139        rajahdys = new ExplosionSystem(LoadImage("tahti"), 300);
140        Add(rajahdys);
141    }
142    void luoKentta3()
143    {
144        ClearAll();
145
146       
147
148
149        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
150        Level.Background.CreateStars();
151
152        Label lopputeksti = new Label();
153        lopputeksti.Height = 300;
154        lopputeksti.Width = 1000;
155        lopputeksti.X = Screen.Left + 670;
156        lopputeksti.Y = Screen.Top - 260;
157        lopputeksti.IsVisible = true;
158        lopputeksti.Show();
159        lopputeksti.Image = LoadImage("PeliPaattyi");
160       
161        Add(lopputeksti);
162
163        Label parhaat = new Label("Parhaat pelaajat:");
164        parhaat.X = Screen.Left + 757;
165        parhaat.Y = Screen.Top - 510;
166        parhaat.Color = Color.Red;
167        parhaat.IsVisible = true;
168        parhaat.BorderColor = Color.Black;
169        Add (parhaat);
170
171        Gravity = new Vector(0, -1000);
172        Camera.Follow(pelaaja1);
173        Camera.ZoomFactor = 2.0;
174        Camera.StayInLevel = true;
175        lisaaNappaimet();
176
177        HighScoreList topLista;
178        topLista = HighScoreList.LoadOrCreate("topten.dat", 10);
179        topLista.Show(kaikkipisteet);
180        topLista.ScreenList.ItemColor = Color.Red;
181        topLista.ScreenList.HighlightColor = Color.Black;
182        topLista.ScreenInput.QueryText.TextColor = Color.Blue;
183       
184
185        topLista.ScreenList.HighlightIndex = -500000;
186       
187    }
188
189    void luoKentta4()
190    {
191
192    }
193
194    void luoKentta5()
195    {
196    }
197
198    void lisaaTasoPaikkaan(double x, double y)
199    {
200        PhysicsObject taso = PhysicsObject.CreateStaticObject(200, 18);
201        taso.Color = Color.White;
202        taso.X = x;
203        taso.Y = y;
204        Add(taso);
205    }
206
207    PhysicsObject lisaaTaso()
208    {
209        PhysicsObject taso = PhysicsObject.CreateStaticObject(200, 18);
210        taso.Color = Color.White;
211
212        return taso;
213    }
214
215
216
217
218    //void lisaaPelaajat()
219    //{
220    //    pelaaja1 = new PlatformCharacter(40, 40);
221    //    pelaaja1.Mass = 4.0;
222    //    pelaaja1.Image = LoadImage("tahti");
223    //    pelaaja1.X = 0;
224    //    pelaaja1.Y = Level.Bottom + 100;
225    //    LaserGun laserPyssy = new LaserGun(20, 5);
226    //    //laserPyssy.LaserCollision = LaserSadeOsuu;
227    //    pelaaja1.Weapon = new LaserGun(0, 0);
228    //    Add(pelaaja1);
229    //    //laserPyssy.Ammo.Value = 100;
230    //    laserPyssy.IsVisible = false;
231    //}
232
233    void vaihdaKentta(int kenttaLaskuri)
234    {
235        kaikkipisteet += pisteLaskuri.Value;
236        if (kenttaLaskuri == 1)
237        {
238            luoKentta1();
239        }
240        if (kenttaLaskuri == 2)
241        {
242            luoKentta2();
243        }
244        if (kenttaLaskuri == 3)
245        {
246            luoKentta3();
247        }
248
249    }
250
251    void lisaaNappaimet()
252    {
253        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
254        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
255
256        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
257        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
258        Keyboard.Listen(Key.Space, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
259        Keyboard.Listen(Key.RightControl, ButtonState.Down, AmmuAseella, "Ammu");
260
261        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
262
263        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
264        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
265        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
266    }
267
268    void liikuta(PlatformCharacter hahmo, double nopeus)
269    {
270        hahmo.Walk(nopeus);
271    }
272
273    void hyppaa(PlatformCharacter hahmo, double voima)
274    {
275        hahmo.Jump(voima);
276    }
277    void KasittelePelaajanTormays(PhysicsObject pelaaja, PhysicsObject kohde)
278    {
279        if (kohde.Tag.ToString() == "maali1")
280        {
281            kenttaLaskuri++;
282            vaihdaKentta(kenttaLaskuri);
283
284        }
285        if (kohde.Tag.ToString() == "maali2")
286        {
287            kenttaLaskuri++;
288            vaihdaKentta(kenttaLaskuri);
289        }
290
291        if (kohde.Tag.ToString() == "vihollinen")
292        {
293            rajahdys.MinScale = 0.01;
294            rajahdys.MaxScale = 0.4;
295            rajahdys.MinVelocity = 10;
296            rajahdys.MaxVelocity = 200;
297            rajahdys.MinLifetime = 0.1;
298            rajahdys.MaxLifetime = 1.5;
299
300            rajahdys.AddEffect(pelaaja.X, pelaaja.Y, 50);
301            GameOver();
302            pelaaja.Destroy();           
303
304
305
306        }
307
308    }
309
310    void KasitteleAmpuminen(PhysicsObject ammus, PhysicsObject kohde)
311    {
312        if (kohde.Tag.ToString() == "vihollinen")
313        {
314            Explosion rajahdys2 = new Explosion(25);
315            rajahdys2.Position = kohde.Position;
316            rajahdys2.Speed = 200.0;
317            rajahdys2.Force = 0;
318            rajahdys2.ShockwaveColor = Color.Lime;
319            pisteLaskuri.Value++;
320            pisteLaskuri.Value += 250;
321            pisteLaskuri.Value = pisteLaskuri.Value + 249;
322
323
324            Add(rajahdys2);
325            kohde.Destroy();
326
327        }
328    }
329    void LuoMaali()
330    {
331        maali = PhysicsObject.CreateStaticObject(75.0, 120.0);
332        maali.X = 150.0;
333        maali.Y = 200.0;
334        maali.Shape = Shapes.Rectangle;
335        maali.Color = Color.Yellow;
336        maali.Tag = "maali1";
337        Add(maali);
338
339    }
340    PhysicsObject lisaaPelaajatTileMap()
341    {
342        pelaaja1 = new PlatformCharacter(40, 40);
343        pelaaja1.Mass = 4.0;
344        pelaaja1.Image = LoadImage("tahti");
345        pelaaja1.X = 0;
346        pelaaja1.Y = Level.Bottom + 100;
347        LaserGun laserPyssy = new LaserGun(20, 5);
348        pelaaja1.Weapon = new LaserGun(0, 0);
349        Add(pelaaja1);
350        laserPyssy.IsVisible = false;
351        AddCollisionHandler(pelaaja1, KasittelePelaajanTormays);
352        AddCollisionHandler(pelaaja1, KeraaPisteita);
353
354        return pelaaja1;
355
356    }
357    PhysicsObject LuoMaaliTileMap()
358    {
359        maali = PhysicsObject.CreateStaticObject(75.0, 100.0);
360        maali.X = 150.0;
361        maali.Y = 200.0;
362        maali.Shape = Shapes.Rectangle;
363        maali.Color = Color.Yellow;
364        maali.Tag = "maali2";
365        return maali;
366    }
367
368    PhysicsObject LuoVihollinen(int reitti)
369    {
370        PhysicsObject vihollinen = new PhysicsObject(50, 50);
371        vihollinen.Shape = Shapes.Circle;
372        vihollinen.Color = Color.DarkMagenta;
373        vihollinen.Mass = 4.0;
374        vihollinen.Tag = "vihollinen";
375        PathFollowerBrain aivo = new PathFollowerBrain();
376        //vihollinen.IgnoresCollisionResponse = true;
377        vihollinen.IgnoresGravity = true;
378        vihollinen.Position = alkupisteet[reitti].Position;
379
380        Vector[] pisteet = new Vector[]
381        {
382            alkupisteet[reitti].Position,
383            loppupisteet[reitti].Position,
384        };
385
386        aivo.Path = pisteet;
387        vihollinen.Brain = aivo;
388        aivo.Speed = 100.0;
389        return vihollinen;
390
391    }
392
393    void AmmuAseella()
394    {
395        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
396
397        if (ammus != null)
398        {
399            ammus.Size *= 4;
400            //ammus.Shape = Shapes.Circle;
401
402            ammus.Color = Color.Lime;
403            AddCollisionHandler(ammus, KasitteleAmpuminen);
404            ammus.Tag = "ammus";
405
406        }
407    }
408    GameObject LuoReittiPiste(int reitti)
409    {
410        GameObject piste = new GameObject(1, 1);
411        piste.IsVisible = false;
412        if (alkupisteet[reitti] == null)
413        {
414            alkupisteet[reitti] = piste;
415        }
416        else
417        {
418            loppupisteet[reitti] = piste;
419        }
420        return piste;
421
422    }
423
424    GameObject LuoReitti0()
425    {
426        return LuoReittiPiste(0);
427    }
428
429    GameObject LuoReitti1()
430    {
431        return LuoReittiPiste(1);
432    }
433    GameObject LuoReitti2()
434    {
435        return LuoReittiPiste(2);
436    }
437    GameObject LuoReitti3()
438    {
439        return LuoReittiPiste(3);
440    }
441    GameObject LuoReitti4()
442    {
443        return LuoReittiPiste(4);
444
445    }
446    GameObject LuoReitti5()
447    {
448        return LuoReittiPiste(5);
449    }
450    GameObject LuoReitti6()
451    {
452        return LuoReittiPiste(6);
453    }
454    GameObject LuoReitti7()
455    {
456        return LuoReittiPiste(7);
457    }
458    GameObject LuoReitti8()
459    {
460        return LuoReittiPiste(8);
461    }
462
463
464    void LuoLaskuri()
465    {
466        pisteLaskuri = new IntMeter(kaikkipisteet);
467
468        Label pisteNaytto = new Label();
469        pisteNaytto.X = Screen.Left + 175;
470        pisteNaytto.Y = Screen.Top - 100;
471        pisteNaytto.TextColor = Color.Red;
472
473        pisteNaytto.BindTo(pisteLaskuri);
474        Add(pisteNaytto);
475
476        Label pisteTeksti = new Label("Pisteitä: ");
477        pisteTeksti.X = Screen.Left + 100;
478        pisteTeksti.Y = Screen.Top - 100;
479        pisteTeksti.TextColor = Color.Red;
480        Add(pisteTeksti);
481    }
482
483    void KeraaPisteita(PhysicsObject pelaaja, PhysicsObject kohde)
484    {
485        if (kohde.Tag.ToString() == "Laatikko")
486        {
487            pisteLaskuri.Value++;
488            pisteLaskuri.Value += 50;
489            pisteLaskuri.Value = pisteLaskuri.Value + 49;
490            kohde.Destroy();
491           
492
493        }
494        if (kohde.Tag.ToString() == "Laatikko2")
495        {
496            pisteLaskuri.Value++;
497            pisteLaskuri.Value += 500;
498            pisteLaskuri.Value = pisteLaskuri.Value + 499;
499            kohde.Destroy();
500
501
502        }
503    }
504    PhysicsObject LuoLaatikko()
505    {
506        PhysicsObject laatikko;
507        laatikko = new PhysicsObject(20.0, 20.0);
508       
509        laatikko.Shape = Shapes.Rectangle;
510        laatikko.Color = Color.Green;
511        laatikko.Mass = 1000.0;
512        laatikko.Tag = "Laatikko";
513
514        return laatikko;
515
516    }
517    void GameOver()
518    {
519        //ClearAll();
520        Label peliOhi = new Label("Game Over!");
521
522        peliOhi.TextColor = Color.Red;
523       
524        //peliOhi.Position = pelaaja1.Position;
525        peliOhi.Position = Screen.Center;
526        Add(peliOhi);
527    }
528
529    PhysicsObject LuoLaatikko2()
530    {
531        PhysicsObject laatikko2;
532        laatikko2 = new PhysicsObject(35.0, 35.0);
533
534        laatikko2.Shape = Shapes.Rectangle;
535        laatikko2.Color = Color.Cyan;
536        laatikko2.Mass = 1000.0;
537        laatikko2.Tag = "Laatikko2";
538
539        return laatikko2;
540
541    }
542
543}
544
Note: See TracBrowser for help on using the repository browser.