source: 2013/26/RoopeK/Hypopolis/Hypopolis/Hypopolis/Hypopolis.cs @ 4325

Revision 4325, 17.3 KB checked in by roarolky, 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 Hypopolis : PhysicsGame
10{
11
12    Image pelihahmo = LoadImage("Pelihahmo2");
13
14    Image taustakuva = LoadImage("Taustakuva");
15    Image taustakuvareuna = LoadImage("TaustakuvaReuna");
16
17    Image mustaruutu = LoadImage("Mustakuva");
18
19    Image rakennus1 = LoadImage("Rakennus1");
20    Image rakennus2 = LoadImage("Rakennus2");
21
22    List<Label> valikonKohdat;
23    List<PhysicsObject> tasot;
24
25    private Animation pelaaja_hyppy;
26    private Animation pelaaja_paikka;
27
28    SoundEffect hyppyAani = LoadSoundEffect("Jump");
29    SoundEffect valinta = LoadSoundEffect("Select");
30
31    PlatformCharacter2 pelaaja;
32
33    ExplosionSystem rajahdys;
34    int pMaxMaara = 200;
35
36    public override void Begin()
37    {
38        tasot = new List<PhysicsObject>();
39        // Utility
40        SetWindowSize(1024, 768, false);
41        Camera.Zoom(0.75);
42        Ohjaimet();
43
44        // Aloitus
45        Surface Mustaruutu = new Surface(10000, 10000);
46        Mustaruutu.Image = mustaruutu;
47        Add(Mustaruutu);
48        Timer.SingleShot(0.5, Aloitus);
49
50        // Animaatio
51        pelaaja_hyppy = LoadAnimation("Hyppy");
52        pelaaja_paikka = LoadAnimation("pelaaja");
53       
54    }
55
56    void Aloitus()
57    {
58
59        // Teksti
60        LuoSatunnainenRakennusVasemmalta2();
61        Label tekstikentta = new Label(200, 200, "Aloitus1");
62        tekstikentta.X = 0;
63        tekstikentta.Y = 100;
64        tekstikentta.TextColor = Color.Black;
65        tekstikentta.Text = "HYPOPOLIS_";
66        Add(tekstikentta);
67        Timer.SingleShot(12.0, Valikko);
68
69    }
70
71    void Valikko()
72    {
73
74        ClearAll();
75
76        Surface Mustaruutu = new Surface(10000, 10000);
77        Mustaruutu.Image = mustaruutu;
78        Add(Mustaruutu, -3);
79        MediaPlayer.Play("HypopolisTheme2");
80
81        Mouse.IsCursorVisible = true;
82
83        Laskuri(LuoSatunnainenRakennusAlhaalta3);
84        Laskuri(LuoSatunnainenRakennusAlhaalta4);
85        Laskuri(LuoSatunnainenRakennusVasemmalta4);
86
87        Label tekstikentta = new Label(400, 400, "Aloitus1");
88        tekstikentta.X = -350;
89        tekstikentta.Y = 200;
90        tekstikentta.TextColor = Color.Orange;
91        tekstikentta.Text = "HYPOPOLIS_";
92        Add(tekstikentta);
93
94        valikonKohdat = new List<Label>();
95
96        Label kohta1 = new Label("START");
97        kohta1.Position = new Vector(-350, 100);
98        kohta1.TextColor = Color.White;
99        valikonKohdat.Add(kohta1);
100
101        Label kohta2 = new Label("TOPSCORE");
102        kohta2.Position = new Vector(-326, 50);
103        kohta2.TextColor = Color.White;
104        valikonKohdat.Add(kohta2);
105
106        Label kohta3 = new Label("EXIT");
107        kohta3.Position = new Vector(-358, 0);
108        kohta3.TextColor = Color.White;
109        valikonKohdat.Add(kohta3);
110
111        foreach (Label valikonKohta in valikonKohdat)
112        {
113            Add(valikonKohta);
114        }
115
116
117        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, START, null);
118        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, TOPSCORE, null);
119        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, ConfirmExit, null);
120        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
121    }
122
123    void ValikossaLiikkuminen(AnalogState hiirenTila)
124    {
125        foreach (Label kohta in valikonKohdat)
126        {
127            if (Mouse.IsCursorOn(kohta))
128            {
129                valinta.Play(0.3, -0.3, 0.0);
130                kohta.TextColor = Color.SlateGray;
131            }
132            else
133            {
134                kohta.TextColor = Color.White;
135            }
136
137        }
138    }
139
140    void START()
141    {
142
143        MediaPlayer.Stop();
144        tasot.Clear();
145        ClearAll();
146        Pelaaja();
147        Taso();
148        Ohjaimet();
149        Mouse.IsCursorVisible = false;
150
151        // Luonti
152        Laskuri(LuoSatunnainenRakennusVasemmalta1);
153        Laskuri(LuoSatunnainenRakennusVasemmalta2);
154        Laskuri(LuoSatunnainenRakennusVasemmalta3);
155        Laskuri(LuoSatunnainenRakennusVasemmalta4);
156        Laskuri(LuoSatunnainenRakennusAlhaalta1);
157        Laskuri(LuoSatunnainenRakennusAlhaalta2);
158        Laskuri(LuoSatunnainenRakennusAlhaalta3);
159        Laskuri(LuoSatunnainenRakennusAlhaalta4);
160        Laskuri(LuoSatunnainenRakennusAlhaalta5);
161        Laskuri(LuoSatunnainenRakennusYlhaalta1);
162        Laskuri(LuoSatunnainenRakennusYlhaalta2);
163        Laskuri(LuoSatunnainenRakennusYlhaalta3);
164        Laskuri(LuoSatunnainenRakennusYlhaalta4);
165        Laskuri(LuoSatunnainenRakennusYlhaalta5);
166        Laskuri(LuoSatunnainenRakennusYlhaalta6);
167
168        Timer kuolemaAjastin = new Timer();
169        kuolemaAjastin.Interval = 0.1;
170        kuolemaAjastin.Timeout += TarkastaKuolema;
171        kuolemaAjastin.Start();
172
173        // Efekti
174        rajahdys = new ExplosionSystem(LoadImage("rajahdys"), pMaxMaara);
175        rajahdys.MinLifetime = 0.3;
176        rajahdys.MaxLifetime = 0.8;
177        rajahdys.MinScale = 30.0;
178        rajahdys.MaxScale = 70.0;
179        rajahdys.MinVelocity = 10.0;
180        rajahdys.MaxVelocity = 20.0;
181        Add(rajahdys);
182
183    }
184
185    void TarkastaKuolema()
186    {
187        bool olioYlhaalla =false;
188        bool olioAlhaalla = false;
189        bool olioVasemmalla = false;
190        bool olioOikealla = false;
191
192        foreach (var olio in GetObjectsAt(pelaaja.Position, pelaaja.Height / 2))
193        {
194            if (olio == pelaaja) continue;
195            if (olio.X < pelaaja.X) olioVasemmalla = true;
196            if (olio.X > pelaaja.X) olioOikealla = true;
197            if (olio.Y < pelaaja.Y) olioAlhaalla = true;
198            if (olio.Y > pelaaja.Y) olioYlhaalla = true;
199        }
200
201        if ((olioAlhaalla && olioYlhaalla) || (olioVasemmalla && olioOikealla))
202        {
203            MessageDisplay.Add("Kuolit");
204        }
205
206        /*int sisallystenMaara = 0;
207
208        for (int i = 0; i < tasot.Count; i++)
209        {
210            //jos pelaaja on tason sisäpuolella,
211            //niin sisallystenmaara++;
212            if (pelaaja.Body.Rectangle.Intersects(tasot[i].Body.Rectangle))
213            {
214                sisallystenMaara++;
215            }
216        }
217        if(sisallystenMaara > 0)
218            MessageDisplay.Add(sisallystenMaara.ToString());*/
219    }
220
221    void TOPSCORE()
222    {
223    }
224
225    void Laskuri(Action tapahtuma)
226    {
227
228        Timer ajastin = new Timer();
229        ajastin.Interval = RandomGen.SelectOne(3, 6, 9); 
230        ajastin.Timeout += tapahtuma;
231        ajastin.Start();
232
233    }
234
235    void Kavele(PlatformCharacter2 pelaaja, Direction liike)
236    {
237
238        pelaaja.Walk(liike);
239
240    }
241
242    void Hyppy(PlatformCharacter2 pelaaja)
243    {
244     
245        if (pelaaja.Platform != null)
246        {
247
248            pelaaja.Jump(1500);
249            rajahdys.AddEffect(pelaaja.Position.X, pelaaja.Position.Y, pMaxMaara);
250            if (hyppyAani.IsPlaying == false)
251            {
252                hyppyAani.Play();
253            }
254        }
255    }
256
257
258    void Pelaaja()
259    {
260
261        pelaaja = new PlatformCharacter2(75, 75);
262        pelaaja.Shape = Shape.Rectangle;
263        pelaaja.Color = Color.Black;
264        pelaaja.AnimIdle = new Animation(pelaaja_paikka);
265        pelaaja.AnimFall = new Animation(pelaaja_paikka);
266        pelaaja.AnimJump = new Animation(pelaaja_hyppy);
267        pelaaja.AnimIdle.FPS = 5;
268        pelaaja.X = 0;
269        pelaaja.Y = Level.Bottom + 100.0;
270        pelaaja.LinearDamping = 0.95;
271        pelaaja.Restitution = 0.0;
272        pelaaja.Image = pelihahmo;
273        pelaaja.MaxVelocity = 2500;
274        pelaaja.Acceleration = 2500;
275        Gravity = new Vector(0, -1500);
276        Add(pelaaja, -1);
277
278    }
279
280
281    void Ohjaimet()
282    {
283
284        // Liike
285        Keyboard.Listen(Key.Left, ButtonState.Down, Kavele, "Vasen", pelaaja, Direction.Left);
286        Keyboard.Listen(Key.Right, ButtonState.Down, Kavele, "Oikea", pelaaja, Direction.Right);
287        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppy, "Ylös", pelaaja);
288
289        // Poistuminen
290        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
291        Keyboard.Listen(Key.Escape, ButtonState.Down, Valikko, "Lopeta peli");
292
293    }
294
295    void Taso()
296    {
297
298        Surface vasenReuna = new Surface(500, 1200);
299        vasenReuna.Restitution = 1.0;
300        vasenReuna.X = -820;
301        vasenReuna.IsVisible = false;
302        vasenReuna.Color = Color.White;
303        Add(vasenReuna);
304        tasot.Add(vasenReuna);
305
306        Surface oikeaReuna = new Surface(500, 1200);
307        oikeaReuna.Restitution = 1.0;
308        oikeaReuna.IsVisible = true;
309        oikeaReuna.X = 825;
310        oikeaReuna.Y = -1;
311        oikeaReuna.Color = Color.White;
312        oikeaReuna.Image = taustakuvareuna;
313        Add(oikeaReuna, -2);
314        tasot.Add(oikeaReuna);
315
316        Surface yläReuna = new Surface(1400, 100);
317        yläReuna.Restitution = 1.0;
318        yläReuna.Y = 550;
319        yläReuna.IsVisible = false;
320        yläReuna.Color = Color.White;
321        Add(yläReuna);
322        tasot.Add(yläReuna);
323
324        Surface alaReuna = new Surface(1400, 100);
325        alaReuna.Restitution = 1.0;
326        alaReuna.X = 0;
327        alaReuna.Y = -515;
328        alaReuna.IsVisible = false;
329        alaReuna.Color = Color.White;
330        Add(alaReuna);
331        tasot.Add(alaReuna);
332
333        Level.AmbientLight = 0.8;
334        Level.Background.Image = taustakuva;
335        //Level.BackgroundColor = Color.Black;
336
337    }
338
339    private void LuoSatunnainenRakennusVasemmalta1()
340    {
341
342        double x = RandomGen.NextDouble(-1800, -1800);
343        double y = RandomGen.NextDouble(365, 365);
344        double r = RandomGen.NextDouble(500, 900);
345        double r2 = RandomGen.NextDouble(100, 100);
346        Color vari = RandomGen.NextColor();
347        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(250, 0), rakennus1);
348
349    }
350
351    private void LuoSatunnainenRakennusVasemmalta2()
352    {
353
354        double x = RandomGen.NextDouble(-1800, -1800);
355        double y = RandomGen.NextDouble(130, 130);
356        double r = RandomGen.NextDouble(500, 900);
357        double r2 = RandomGen.NextDouble(100, 100);
358        Color vari = RandomGen.NextColor();
359        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(250, 0), rakennus1);
360
361    }
362
363    private void LuoSatunnainenRakennusVasemmalta3()
364    {
365
366        double x = RandomGen.NextDouble(-1800, -1800);
367        double y = RandomGen.NextDouble(-100, -100);
368        double r = RandomGen.NextDouble(500, 900);
369        double r2 = RandomGen.NextDouble(100, 100);
370        Color vari = RandomGen.NextColor();
371        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(250, 0), rakennus1);
372
373    }
374
375    private void LuoSatunnainenRakennusVasemmalta4()
376    {
377
378        double x = RandomGen.NextDouble(-1800, -1800);
379        double y = RandomGen.NextDouble(-330, -320);
380        double r = RandomGen.NextDouble(500, 900);
381        double r2 = RandomGen.NextDouble(100, 100);
382        Color vari = RandomGen.NextColor();
383        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(250, 0), rakennus1);
384
385    }
386
387    private void LuoSatunnainenRakennusAlhaalta1()
388    {
389
390        double x = RandomGen.NextDouble(-180, -180);
391        double y = RandomGen.NextDouble(-1800, -1800);
392        double r = RandomGen.NextDouble(100, 100);
393        double r2 = RandomGen.NextDouble(500, 900);
394        Color vari = RandomGen.NextColor();
395        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(0, 250), rakennus2);
396
397    }
398
399    private void LuoSatunnainenRakennusAlhaalta2()
400    {
401
402        double x = RandomGen.NextDouble(-410, -410);
403        double y = RandomGen.NextDouble(-1800, -1800);
404        double r = RandomGen.NextDouble(100, 100);
405        double r2 = RandomGen.NextDouble(500, 900);
406        Color vari = RandomGen.NextColor();
407        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(0, 250), rakennus2);
408
409    }
410
411    private void LuoSatunnainenRakennusAlhaalta3()
412    {
413
414        double x = RandomGen.NextDouble(50, 50);
415        double y = RandomGen.NextDouble(-1800, -1800);
416        double r = RandomGen.NextDouble(100, 100);
417        double r2 = RandomGen.NextDouble(500, 900);
418        Color vari = RandomGen.NextColor();
419        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(0, 250), rakennus2);
420
421    }
422
423    private void LuoSatunnainenRakennusAlhaalta4()
424    {
425
426        double x = RandomGen.NextDouble(275, 275);
427        double y = RandomGen.NextDouble(-1800, -1800);
428        double r = RandomGen.NextDouble(100, 100);
429        double r2 = RandomGen.NextDouble(500, 900);
430        Color vari = RandomGen.NextColor();
431        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(0, 250), rakennus2);
432
433    }
434
435    private void LuoSatunnainenRakennusAlhaalta5()
436    {
437
438        double x = RandomGen.NextDouble(475, 475);
439        double y = RandomGen.NextDouble(-1800, -1800);
440        double r = RandomGen.NextDouble(100, 100);
441        double r2 = RandomGen.NextDouble(500, 900);
442        Color vari = RandomGen.NextColor();
443        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(0, 250), rakennus2);
444
445    }
446
447    private void LuoSatunnainenRakennusYlhaalta1()
448    {
449
450        double x = RandomGen.NextDouble(-525, -525);
451        double y = RandomGen.NextDouble(1800, 1800);
452        double r = RandomGen.NextDouble(100, 100);
453        double r2 = RandomGen.NextDouble(500, 900);
454        Color vari = RandomGen.NextColor();
455        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(0, -250), rakennus2);
456
457    }
458
459    private void LuoSatunnainenRakennusYlhaalta2()
460    {
461
462        double x = RandomGen.NextDouble(-250, -250);
463        double y = RandomGen.NextDouble(1800, 1800);
464        double r = RandomGen.NextDouble(100, 100);
465        double r2 = RandomGen.NextDouble(500, 900);
466        Color vari = RandomGen.NextColor();
467        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(0, -250), rakennus2);
468
469    }
470
471    private void LuoSatunnainenRakennusYlhaalta3()
472    {
473
474        double x = RandomGen.NextDouble(-100, -100);
475        double y = RandomGen.NextDouble(1800, 1800);
476        double r = RandomGen.NextDouble(100, 100);
477        double r2 = RandomGen.NextDouble(500, 900);
478        Color vari = RandomGen.NextColor();
479        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(0, -250), rakennus2);
480
481    }
482
483    private void LuoSatunnainenRakennusYlhaalta4()
484    {
485
486        double x = RandomGen.NextDouble(-250, -250);
487        double y = RandomGen.NextDouble(1800, 1800);
488        double r = RandomGen.NextDouble(100, 100);
489        double r2 = RandomGen.NextDouble(500, 900);
490        Color vari = RandomGen.NextColor();
491        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(0, -250), rakennus2);
492
493    }
494
495    private void LuoSatunnainenRakennusYlhaalta5()
496    {
497
498        double x = RandomGen.NextDouble(-350, -350);
499        double y = RandomGen.NextDouble(1800, 1800);
500        double r = RandomGen.NextDouble(100, 100);
501        double r2 = RandomGen.NextDouble(500, 900);
502        Color vari = RandomGen.NextColor();
503        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(0, -250), rakennus2);
504
505    }
506
507    private void LuoSatunnainenRakennusYlhaalta6()
508    {
509
510        double x = RandomGen.NextDouble(-400, -400);
511        double y = RandomGen.NextDouble(1800, 1800);
512        double r = RandomGen.NextDouble(100, 100);
513        double r2 = RandomGen.NextDouble(500, 900);
514        Color vari = RandomGen.NextColor();
515        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari, new Vector(0, -250), rakennus2);
516
517    }
518
519
520    void LuoMuoto(Shape muoto, double x, double y, double sade, double sade2, Color vari, Vector nopeus, Image kuva)
521    {
522
523        PhysicsObject olio = new PhysicsObject(sade, sade2);
524        olio.Shape = muoto;
525        olio.Color = Color.OrangeRed;
526        olio.Y = y;
527        olio.X = x;
528        olio.Move(nopeus);
529        olio.MakeStatic();
530        olio.Tag = "vasenSeinä";
531        olio.Image = kuva;
532        olio.CollisionIgnoreGroup = 1;
533        olio.IgnoresCollisionResponse = false;
534        Add(olio);
535        tasot.Add(olio);
536    }
537
538    //void LuoMuoto2(Shape muoto, double x, double y, double sade, double sade2, Color vari)
539    //{
540
541    //    PhysicsObject olio2 = new PhysicsObject(sade, sade2);
542    //    olio2.Shape = muoto;
543    //    olio2.Color = Color.OrangeRed;
544    //    olio2.Y = y;
545    //    olio2.X = x;
546    //    olio2.Move(new Vector(0, 250));
547    //    olio2.MakeStatic();
548    //    olio2.Tag = "alaSeinä";
549    //    olio2.CollisionIgnoreGroup = 1;
550    //    olio2.Image = rakennus2;
551    //    olio2.IgnoresCollisionResponse = false;
552    //    Add(olio2);
553
554    //}
555
556    //void LuoMuoto3(Shape muoto, double x, double y, double sade, double sade2, Color vari)
557    //{
558
559    //    PhysicsObject olio3 = new PhysicsObject(sade, sade2);
560    //    olio3.Shape = muoto;
561    //    olio3.Color = Color.OrangeRed;
562    //    olio3.Y = y;
563    //    olio3.X = x;
564    //    olio3.Move(new Vector(0, -250));
565    //    olio3.MakeStatic();
566    //    olio3.Tag = "yläSeinä";
567    //    olio3.CollisionIgnoreGroup = 1;
568    //    olio3.Image = rakennus2;
569    //    olio3.IgnoresCollisionResponse = false;
570    //    Add(olio3);
571
572    //}
573}
Note: See TracBrowser for help on using the repository browser.