source: 2015/24/OskariL/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 6013

Revision 6013, 11.1 KB checked in by oslahtin, 4 years ago (diff)
RevLine 
[6013]1using Jypeli;
2using Jypeli.Controls;
3using Jypeli.Widgets;
4using Jypeli.Effects;
5using Jypeli.Content;
6using Jypeli.Assets;
7using Jypeli.GameObjects;
8
9public class Tasohyppelypeli1 : PhysicsGame
[5919]10{
[5929]11    const double nopeus = 10000;
[5919]12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    PlatformCharacter pelaaja1;
[5976]15    PlatformCharacter pelaaja2;
[5919]16
17    Image pelaajanKuva = LoadImage("Pulla");
[5976]18    Image pelaajan2Kuva = LoadImage("putin kännetty");
[5919]19    Image tahtiKuva = LoadImage("pacman");
[5929]20    Image parsakaaliKuva = LoadImage("parsakaali");
[5976]21    Image samppanjaKuva = LoadImage("samppanja");
[5919]22
23    SoundEffect maaliAani = LoadSoundEffect("maali");
24    IntMeter pisteLaskuri;
25
[5929]26    bool peliKaynnissa = false;
27
28    Timer liikutusajastin;
29
[5949]30    EasyHighScore topLista = new EasyHighScore();
[6013]31    int kenttaNro = 1;
[5929]32
[5919]33    public override void Begin()
34    {
[6013]35        SetWindowSize((int)(Screen.Width), (int)Screen.Height);
36        LataaKentta();
37    }
[5976]38
[6013]39    void SeuraavaKentta()
40    {
41        kenttaNro++;
42        LataaKentta();
43    }
44    void LataaKentta()
45    {
[5976]46        ClearAll();
[6013]47        if (kenttaNro > 5)
48        {
49         Exit();
50        }
51        LuoKentta();
52        LisaaNappaimet();
[5949]53        Gravity = new Vector(0, -1900);
[5919]54
55        LuoPistelaskuri();
[6013]56        if (kenttaNro > 1)
57        {     
58           
59            Level.Background.CreateGradient(Color.ForestGreen, Color.Aquamarine);
60    }
[5919]61        Camera.Follow(pelaaja1);
[6013]62        Camera.ZoomFactor = 3.5;
63        Camera.StayInLevel = false;
[5929]64
[6013]65        liikutusajastin = new Timer();
[5976]66        liikutusajastin.Interval = 0.01;
67        liikutusajastin.Timeout += delegate
68        {
69            SiirraPelaajaaOikeammalle(pelaaja1);
70            SiirraPelaajaaOikeammalle(pelaaja2);
71        };
[6013]72        liikutusajastin.Start();
[5929]73
74        peliKaynnissa = true;
[6013]75    }
[5929]76
[5976]77    void SiirraPelaajaaOikeammalle(PlatformCharacter hahmo)
[5929]78    {
[5976]79        hahmo.Push(new Vector(nopeus, 0.0));
[5919]80
[5929]81    }
[5919]82    void LuoKentta()
83    {
[6013]84        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kartta" +kenttaNro);
[5976]85        ruudut.SetTileMethod(Color.Black, LisaaTaso);
86        //ruudut.SetTileMethod('*', LisaaTahti);
87        ruudut.SetTileMethod(Color.Red, LisaaPelaaja);
88        ruudut.SetTileMethod(Color.Cyan, LisaaVihollinen);
89        ruudut.SetTileMethod(Color.Orange, LisaaPahis);
90        ruudut.SetTileMethod(Color.YellowGreen, LuoParsakaali);
91        ruudut.SetTileMethod(Color.Gold, LisaaPommi);
92        ruudut.SetTileMethod(Color.DarkAzure, LisaaPelaaja2);
93        ruudut.SetTileMethod(Color.Azure, LisaaSamppanja);
[6013]94        ruudut.SetTileMethod(Color.BloodRed, LisaaMaali);
95        ruudut.SetTileMethod(Color.DarkCyan, LisaaKuusikulmio);
[5996]96        ruudut.Optimize(Color.Black);
[5976]97        ruudut.Execute(20, 20);
[6013]98
[5929]99        Level.CreateLeftBorder();
100        Level.CreateTopBorder();
101        Level.CreateBottomBorder();
102        PhysicsObject oikeaReuna = Level.CreateRightBorder();
103        oikeaReuna.Tag = "oikea";
104
[5996]105        Level.Background.CreateGradient(Color.Aqua, Color.Azure);
[5919]106    }
[6013]107    void LisaaKuusikulmio(Vector paikka, double leveys, double korkeus)
108    {
109        PhysicsObject kuusikulmio = new PhysicsObject(leveys, korkeus);
110        kuusikulmio.Position = paikka;
111        kuusikulmio.Shape = Shape.Hexagon;
112        kuusikulmio.Color = Color.DarkRed;
113        kuusikulmio.Tag = "kuusikulmio";
[5919]114
[6013]115
116    }
117    void LisaaMaali(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject maali = new PhysicsObject(leveys, korkeus);
120        maali.Position = paikka;
121        maali.Shape = Shape.Heart;
122        maali.Color = Color.BloodRed;
123        maali.Tag = "maali";
124        maali.IgnoresCollisionResponse = true;
125        maali.IgnoresGravity = true;
126        maali.IgnoresExplosions = true;
127
128        Add(maali);
129    }
[5919]130    void LisaaTaso(Vector paikka, double leveys, double korkeus)
131    {
132        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
133        taso.Position = paikka;
[5949]134        taso.Color = new Color(4, 146, 208);
[5929]135        taso.Tag = "seina";
[6013]136
[5919]137        Add(taso);
138    }
139    void LisaaTahti(Vector paikka, double leveys, double korkeus)
140    {
141        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
142        tahti.IgnoresCollisionResponse = true;
143        tahti.Position = paikka;
144        tahti.Image = tahtiKuva;
145        tahti.Tag = "tahti";
146        Add(tahti);
147    }
148    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
149    {
150        pelaaja1 = new PlatformCharacter(leveys, korkeus);
151        pelaaja1.Position = paikka;
[5949]152        pelaaja1.Mass = 3.25;
[5919]153        pelaaja1.Image = pelaajanKuva;
[5929]154        AddCollisionHandler(pelaaja1, "seina", TormaaTasoon);
[5919]155        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
[5929]156        AddCollisionHandler(pelaaja1, "vihu", TormaaTasoon);
157        AddCollisionHandler(pelaaja1, "oikea", TormaaOikeaanReunaan);
[5949]158        AddCollisionHandler(pelaaja1, "pommi", Rajahdys);
[5976]159        AddCollisionHandler(pelaaja1, "samppanja", TormaaSamppanjaan);
[6013]160        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
161        pelaaja1.Tag = "pelaaja";
[5976]162        Add(pelaaja1);
[5949]163
[5919]164    }
[5976]165    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
166    {
[6013]167
[5976]168        pelaaja2 = new PlatformCharacter(leveys, korkeus);
169        pelaaja2.Position = paikka;
170        pelaaja2.Mass = 3.25;
171        pelaaja2.Image = pelaajan2Kuva;
[6013]172     // AddCollisionHandler(pelaaja2, "seina", TormaaTasoon);
[5976]173        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
[6013]174    //AddCollisionHandler(pelaaja2, "vihu", TormaaTasoon);
175    //AddCollisionHandler(pelaaja2, "oikea", TormaaOikeaanReunaan);
[5976]176        AddCollisionHandler(pelaaja2, "pommi", Rajahdys);
177        AddCollisionHandler(pelaaja2, "samppanja", TormaaSamppanjaan);
[6013]178        AddCollisionHandler(pelaaja2, "maali", TormaaMaaliin);
179        pelaaja2.Tag = "pelaaja";
[5976]180
181        Add(pelaaja2);
[6013]182           
[5976]183
184
185
186
187    }
[5929]188    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
189    {
190        PhysicsObject vihollinen = new PhysicsObject(leveys, korkeus);
191        vihollinen.Color = Color.Azure;
[5996]192        vihollinen.Shape = Shape.Octagon;
[5929]193        vihollinen.Position = paikka;
194        vihollinen.IgnoresGravity = true;
[5976]195        vihollinen.CanRotate = true;
[6013]196     // vihollinen.Oscillate(new Vector(1, 1), korkeus * 1.5, 0.4);
[5976]197
[5929]198        Add(vihollinen);
[5919]199
[5929]200    }
[5949]201    void LisaaPommi(Vector paikka, double leveys, double korkeus)
202    {
203        PhysicsObject pommi = new PhysicsObject(leveys, korkeus);
204        pommi.Color = Color.Black;
205        pommi.Shape = Shape.Triangle;
206        pommi.Position = paikka;
207        pommi.IgnoresGravity = true;
208        pommi.CanRotate = true;
209        pommi.Tag = "pommi";
210
211        Add(pommi);
212
213
214    }
[5929]215    void LisaaPahis(Vector paikka, double leveys, double korkeus)
216    {
217
218        PhysicsObject pahis = new PhysicsObject(leveys, korkeus);
219        pahis.Color = Color.DarkRed;
220        pahis.Shape = Shape.Diamond;
221        pahis.Position = paikka;
222        pahis.IgnoresGravity = true;
223        pahis.CanRotate = true;
224        pahis.Oscillate(new Vector(0, 1), korkeus * 1.5, 0.3);
225
226        Add(pahis);
227
228    }
229    void LuoParsakaali(Vector paikka, double leveys, double korkeus)
230    {
231        PhysicsObject parsakaali = PhysicsObject.CreateStaticObject(leveys, korkeus);
232        parsakaali.IgnoresCollisionResponse = true;
233        parsakaali.Position = paikka;
234        parsakaali.Image = parsakaaliKuva;
235        parsakaali.Tag = "tahti";
236        Add(parsakaali);
237
238    }
[5976]239    void LisaaSamppanja(Vector paikka, double leveys, double korkeus)
240    {
241
242        PhysicsObject samppanja = PhysicsObject.CreateStaticObject(leveys, korkeus);
243        samppanja.IgnoresCollisionResponse = true;
244        samppanja.Position = paikka;
245        samppanja.Image = samppanjaKuva;
246        samppanja.Tag = "samppanja";
247        Add(samppanja);
248
249
250    }
[5919]251    void LisaaNappaimet()
252    {
[5976]253
[5919]254        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
255        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
256        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
[5976]257        Keyboard.Listen(Key.Space, ButtonState.Pressed, Begin, "Aloita alusta");
[5919]258
[5976]259        Keyboard.Listen(Key.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
260        Keyboard.Listen(Key.Space, ButtonState.Pressed, Begin, "Aloita alusta");
[5996]261        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
[5919]262    }
263    void Liikuta(PlatformCharacter hahmo, double nopeus)
264    {
265        hahmo.Walk(nopeus);
266    }
267    void Hyppaa(PlatformCharacter hahmo, double nopeus)
268    {
[5949]269        hahmo.ForceJump(nopeus);
[5919]270    }
[6013]271
[5996]272    void TormaaParsakaaliin(PhysicsObject hahmo, PhysicsObject tahti)
[5929]273    {
274        maaliAani.Play();
275        pisteLaskuri.Value += 3;
276        MessageDisplay.Add("Popping-whirling!!!");
[5996]277        tahti.Destroy();
[5929]278    }
279
[5996]280    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject parsakaali)
[6013]281    {
282        maaliAani.Play();
283        pisteLaskuri.Value += 1;
284        MessageDisplay.Add("Jaa.");
285        parsakaali.Destroy();
[5919]286    }
287    void LuoPistelaskuri()
288    {
289        pisteLaskuri = new IntMeter(0);
290
291        Label pisteNaytto = new Label();
292        pisteNaytto.X = Screen.Left + 100;
293        pisteNaytto.Y = Screen.Top - 100;
294        pisteNaytto.TextColor = Color.Black;
[5929]295        pisteNaytto.Color = Color.Transparent;
296        pisteNaytto.Title = "Pisteet:";
[5919]297        pisteNaytto.BindTo(pisteLaskuri);
298        Add(pisteNaytto);
299    }
[5949]300
[6013]301    void TormaaMaaliin(PhysicsObject tormaaja, PhysicsObject maali)
302    {
303        SeuraavaKentta();
304    }
305
[5929]306    void TormaaTasoon(PhysicsObject tormaaja, PhysicsObject kohde)
[6013]307    {
308        if (peliKaynnissa)
309        {
[5996]310
[6013]311                  MessageDisplay.Add("Kuolit! :(");
312                  Keyboard.Disable(Key.Up);
313                  liikutusajastin.Stop();
314                  peliKaynnissa = false;
315                  LataaKentta();
316        }
317
318
319    }
320
[5996]321    void TormaaOikeaanReunaan(PhysicsObject tormaaja, PhysicsObject kohde)
[5929]322    {
[5996]323        if (pisteLaskuri.Value > 1500)
[5929]324        {
[5996]325            topLista.Show();
326            MessageDisplay.Add("Pääsit kentän läpi");
[5976]327            liikutusajastin.Stop();
[5996]328            pisteLaskuri.Value += 10;
[5976]329            Begin();
[5929]330        }
[5996]331        else if (pisteLaskuri.Value < 1500)
332        {
333            topLista.Show();
334            MessageDisplay.Add("Hävisit! :)");
335            Begin();
[5976]336
[5996]337        }
[5929]338    }
[5976]339    void TormaaSamppanjaan(PhysicsObject tormaaja, PhysicsObject samppanja)
[5949]340    {
[5976]341        MessageDisplay.Add("Samppanjaa!!! =]");
342        pisteLaskuri.Value += 15;
343        samppanja.Destroy();
344    }
[6013]345    void Rajahdys(PhysicsObject hahmo, PhysicsObject
[5996]346        pommi)
[5976]347    {
[5949]348        Explosion rajahdys = new Explosion(100);
349        rajahdys.Position = pommi.Position;
[5976]350        rajahdys.Speed = 150.0;
351        rajahdys.Force = 32;
352        rajahdys.ShockwaveColor = new Color(4, 140, 228);
[5949]353        Add(rajahdys);
[5929]354
[5949]355    }
[5976]356
357
[5929]358}
Note: See TracBrowser for help on using the repository browser.