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

Revision 6013, 11.1 KB checked in by oslahtin, 8 years ago (diff)
Line 
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
10{
11    const double nopeus = 10000;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    PlatformCharacter pelaaja1;
15    PlatformCharacter pelaaja2;
16
17    Image pelaajanKuva = LoadImage("Pulla");
18    Image pelaajan2Kuva = LoadImage("putin kännetty");
19    Image tahtiKuva = LoadImage("pacman");
20    Image parsakaaliKuva = LoadImage("parsakaali");
21    Image samppanjaKuva = LoadImage("samppanja");
22
23    SoundEffect maaliAani = LoadSoundEffect("maali");
24    IntMeter pisteLaskuri;
25
26    bool peliKaynnissa = false;
27
28    Timer liikutusajastin;
29
30    EasyHighScore topLista = new EasyHighScore();
31    int kenttaNro = 1;
32
33    public override void Begin()
34    {
35        SetWindowSize((int)(Screen.Width), (int)Screen.Height);
36        LataaKentta();
37    }
38
39    void SeuraavaKentta()
40    {
41        kenttaNro++;
42        LataaKentta();
43    }
44    void LataaKentta()
45    {
46        ClearAll();
47        if (kenttaNro > 5)
48        {
49         Exit();
50        }
51        LuoKentta();
52        LisaaNappaimet();
53        Gravity = new Vector(0, -1900);
54
55        LuoPistelaskuri();
56        if (kenttaNro > 1)
57        {     
58           
59            Level.Background.CreateGradient(Color.ForestGreen, Color.Aquamarine);
60    }
61        Camera.Follow(pelaaja1);
62        Camera.ZoomFactor = 3.5;
63        Camera.StayInLevel = false;
64
65        liikutusajastin = new Timer();
66        liikutusajastin.Interval = 0.01;
67        liikutusajastin.Timeout += delegate
68        {
69            SiirraPelaajaaOikeammalle(pelaaja1);
70            SiirraPelaajaaOikeammalle(pelaaja2);
71        };
72        liikutusajastin.Start();
73
74        peliKaynnissa = true;
75    }
76
77    void SiirraPelaajaaOikeammalle(PlatformCharacter hahmo)
78    {
79        hahmo.Push(new Vector(nopeus, 0.0));
80
81    }
82    void LuoKentta()
83    {
84        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kartta" +kenttaNro);
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);
94        ruudut.SetTileMethod(Color.BloodRed, LisaaMaali);
95        ruudut.SetTileMethod(Color.DarkCyan, LisaaKuusikulmio);
96        ruudut.Optimize(Color.Black);
97        ruudut.Execute(20, 20);
98
99        Level.CreateLeftBorder();
100        Level.CreateTopBorder();
101        Level.CreateBottomBorder();
102        PhysicsObject oikeaReuna = Level.CreateRightBorder();
103        oikeaReuna.Tag = "oikea";
104
105        Level.Background.CreateGradient(Color.Aqua, Color.Azure);
106    }
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";
114
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    }
130    void LisaaTaso(Vector paikka, double leveys, double korkeus)
131    {
132        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
133        taso.Position = paikka;
134        taso.Color = new Color(4, 146, 208);
135        taso.Tag = "seina";
136
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;
152        pelaaja1.Mass = 3.25;
153        pelaaja1.Image = pelaajanKuva;
154        AddCollisionHandler(pelaaja1, "seina", TormaaTasoon);
155        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
156        AddCollisionHandler(pelaaja1, "vihu", TormaaTasoon);
157        AddCollisionHandler(pelaaja1, "oikea", TormaaOikeaanReunaan);
158        AddCollisionHandler(pelaaja1, "pommi", Rajahdys);
159        AddCollisionHandler(pelaaja1, "samppanja", TormaaSamppanjaan);
160        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
161        pelaaja1.Tag = "pelaaja";
162        Add(pelaaja1);
163
164    }
165    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
166    {
167
168        pelaaja2 = new PlatformCharacter(leveys, korkeus);
169        pelaaja2.Position = paikka;
170        pelaaja2.Mass = 3.25;
171        pelaaja2.Image = pelaajan2Kuva;
172     // AddCollisionHandler(pelaaja2, "seina", TormaaTasoon);
173        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
174    //AddCollisionHandler(pelaaja2, "vihu", TormaaTasoon);
175    //AddCollisionHandler(pelaaja2, "oikea", TormaaOikeaanReunaan);
176        AddCollisionHandler(pelaaja2, "pommi", Rajahdys);
177        AddCollisionHandler(pelaaja2, "samppanja", TormaaSamppanjaan);
178        AddCollisionHandler(pelaaja2, "maali", TormaaMaaliin);
179        pelaaja2.Tag = "pelaaja";
180
181        Add(pelaaja2);
182           
183
184
185
186
187    }
188    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
189    {
190        PhysicsObject vihollinen = new PhysicsObject(leveys, korkeus);
191        vihollinen.Color = Color.Azure;
192        vihollinen.Shape = Shape.Octagon;
193        vihollinen.Position = paikka;
194        vihollinen.IgnoresGravity = true;
195        vihollinen.CanRotate = true;
196     // vihollinen.Oscillate(new Vector(1, 1), korkeus * 1.5, 0.4);
197
198        Add(vihollinen);
199
200    }
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    }
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    }
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    }
251    void LisaaNappaimet()
252    {
253
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);
257        Keyboard.Listen(Key.Space, ButtonState.Pressed, Begin, "Aloita alusta");
258
259        Keyboard.Listen(Key.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
260        Keyboard.Listen(Key.Space, ButtonState.Pressed, Begin, "Aloita alusta");
261        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
262    }
263    void Liikuta(PlatformCharacter hahmo, double nopeus)
264    {
265        hahmo.Walk(nopeus);
266    }
267    void Hyppaa(PlatformCharacter hahmo, double nopeus)
268    {
269        hahmo.ForceJump(nopeus);
270    }
271
272    void TormaaParsakaaliin(PhysicsObject hahmo, PhysicsObject tahti)
273    {
274        maaliAani.Play();
275        pisteLaskuri.Value += 3;
276        MessageDisplay.Add("Popping-whirling!!!");
277        tahti.Destroy();
278    }
279
280    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject parsakaali)
281    {
282        maaliAani.Play();
283        pisteLaskuri.Value += 1;
284        MessageDisplay.Add("Jaa.");
285        parsakaali.Destroy();
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;
295        pisteNaytto.Color = Color.Transparent;
296        pisteNaytto.Title = "Pisteet:";
297        pisteNaytto.BindTo(pisteLaskuri);
298        Add(pisteNaytto);
299    }
300
301    void TormaaMaaliin(PhysicsObject tormaaja, PhysicsObject maali)
302    {
303        SeuraavaKentta();
304    }
305
306    void TormaaTasoon(PhysicsObject tormaaja, PhysicsObject kohde)
307    {
308        if (peliKaynnissa)
309        {
310
311                  MessageDisplay.Add("Kuolit! :(");
312                  Keyboard.Disable(Key.Up);
313                  liikutusajastin.Stop();
314                  peliKaynnissa = false;
315                  LataaKentta();
316        }
317
318
319    }
320
321    void TormaaOikeaanReunaan(PhysicsObject tormaaja, PhysicsObject kohde)
322    {
323        if (pisteLaskuri.Value > 1500)
324        {
325            topLista.Show();
326            MessageDisplay.Add("Pääsit kentän läpi");
327            liikutusajastin.Stop();
328            pisteLaskuri.Value += 10;
329            Begin();
330        }
331        else if (pisteLaskuri.Value < 1500)
332        {
333            topLista.Show();
334            MessageDisplay.Add("Hävisit! :)");
335            Begin();
336
337        }
338    }
339    void TormaaSamppanjaan(PhysicsObject tormaaja, PhysicsObject samppanja)
340    {
341        MessageDisplay.Add("Samppanjaa!!! =]");
342        pisteLaskuri.Value += 15;
343        samppanja.Destroy();
344    }
345    void Rajahdys(PhysicsObject hahmo, PhysicsObject
346        pommi)
347    {
348        Explosion rajahdys = new Explosion(100);
349        rajahdys.Position = pommi.Position;
350        rajahdys.Speed = 150.0;
351        rajahdys.Force = 32;
352        rajahdys.ShockwaveColor = new Color(4, 140, 228);
353        Add(rajahdys);
354
355    }
356
357
358}
Note: See TracBrowser for help on using the repository browser.