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

Revision 4296, 12.2 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
24    private Animation pelaaja_hyppy;
25    private Animation pelaaja_paikka;
26
27    SoundEffect hyppyAani = LoadSoundEffect("Jump");
28
29    PlatformCharacter2 pelaaja;
30
31    ExplosionSystem rajahdys;
32    int pMaxMaara = 200;
33
34    public override void Begin()
35    {
36
37        // Utility
38        SetWindowSize(1024, 768, false);
39        Camera.Zoom(0.75);
40        Ohjaimet();
41
42        // Aloitus
43        Surface Mustaruutu = new Surface(10000, 10000);
44        Mustaruutu.Image = mustaruutu;
45        Add(Mustaruutu);
46        Timer.SingleShot(2.0, Aloitus);
47
48        // Efekti
49        rajahdys = new ExplosionSystem(LoadImage("rajahdys"), pMaxMaara);
50        rajahdys.MinLifetime = 0.3;
51        rajahdys.MaxLifetime = 0.8;
52        rajahdys.MinScale = 30.0;
53        rajahdys.MaxScale = 70.0;
54        rajahdys.MinVelocity = 10.0;
55        rajahdys.MaxVelocity = 20.0;
56        Add(rajahdys);
57
58        // Animaatio
59        pelaaja_hyppy = LoadAnimation("Hyppy");
60        pelaaja_paikka = LoadAnimation("pelaaja");
61
62    }
63
64    void Aloitus()
65    {
66
67        // Musiikki
68        MediaPlayer.Play("HypopolisTheme");
69
70        // Teksti
71        LuoSatunnainenRakennusVasemmalta2();
72        Label tekstikentta = new Label(200, 200, "Aloitus1");
73        tekstikentta.X = 0;
74        tekstikentta.Y = 100;
75        tekstikentta.TextColor = Color.Black;
76        tekstikentta.Text = "HYPOPOLIS_";
77        Add(tekstikentta);
78        Timer.SingleShot(12.0, Phase1);
79
80    }
81
82    void Phase1()
83    {
84
85        Valikko();
86
87    }
88
89    void Valikko()
90    {
91
92        ClearAll();
93
94        Surface Mustaruutu = new Surface(10000, 10000);
95        Mustaruutu.Image = mustaruutu;
96        Add(Mustaruutu, -3);
97
98        Mouse.IsCursorVisible = true;
99
100        Laskuri(LuoSatunnainenRakennusAlhaalta3);
101        Laskuri(LuoSatunnainenRakennusAlhaalta4);
102        Laskuri(LuoSatunnainenRakennusAlhaalta5);
103        Laskuri(LuoSatunnainenRakennusVasemmalta4);
104
105        Label tekstikentta = new Label(400, 400, "Aloitus1");
106        tekstikentta.X = -350;
107        tekstikentta.Y = 200;
108        tekstikentta.TextColor = Color.Orange;
109        tekstikentta.Text = "HYPOPOLIS_";
110        Add(tekstikentta);
111
112        valikonKohdat = new List<Label>();
113
114        Label kohta1 = new Label("START");
115        kohta1.Position = new Vector(-350, 100);
116        kohta1.TextColor = Color.White;
117        valikonKohdat.Add(kohta1);
118
119        Label kohta2 = new Label("TOPSCORE");
120        kohta2.Position = new Vector(-326, 50);
121        kohta2.TextColor = Color.White;
122        valikonKohdat.Add(kohta2);
123
124        Label kohta3 = new Label("EXIT");
125        kohta3.Position = new Vector(-358, 0);
126        kohta3.TextColor = Color.White;
127        valikonKohdat.Add(kohta3);
128
129        foreach (Label valikonKohta in valikonKohdat)
130        {
131            Add(valikonKohta);
132        }
133
134
135        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, START, null);
136        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, TOPSCORE, null);
137        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, ConfirmExit, null);
138        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
139    }
140
141    void ValikossaLiikkuminen(AnalogState hiirenTila)
142    {
143        foreach (Label kohta in valikonKohdat)
144        {
145            if (Mouse.IsCursorOn(kohta))
146            {
147                kohta.TextColor = Color.SlateGray;
148            }
149            else
150            {
151                kohta.TextColor = Color.White;
152            }
153
154        }
155    }
156
157    void START()
158    {
159
160        MediaPlayer.Stop();
161        ClearAll();
162        Pelaaja();
163        Taso();
164        Ohjaimet();
165        Mouse.IsCursorVisible = false;
166
167        // Luonti
168        Laskuri(LuoSatunnainenRakennusVasemmalta1);
169        Laskuri(LuoSatunnainenRakennusVasemmalta2);
170        Laskuri(LuoSatunnainenRakennusVasemmalta3);
171        Laskuri(LuoSatunnainenRakennusVasemmalta4);
172        Laskuri(LuoSatunnainenRakennusAlhaalta1);
173        Laskuri(LuoSatunnainenRakennusAlhaalta2);
174        Laskuri(LuoSatunnainenRakennusAlhaalta3);
175        Laskuri(LuoSatunnainenRakennusAlhaalta4);
176        Laskuri(LuoSatunnainenRakennusAlhaalta5);
177
178    }
179
180    void TOPSCORE()
181    {
182    }
183
184    void Laskuri(Action tapahtuma)
185    {
186
187        Timer ajastin = new Timer();
188        ajastin.Interval = RandomGen.SelectOne(3, 6, 9); 
189        ajastin.Timeout += tapahtuma;
190        ajastin.Start();
191
192    }
193
194    void Kavele(PlatformCharacter2 pelaaja, Direction liike)
195    {
196
197        pelaaja.Walk(liike);
198
199    }
200
201    void Hyppy(PlatformCharacter2 pelaaja)
202    {
203     
204        if (pelaaja.Platform != null)
205        {
206
207            pelaaja.Jump(1500);
208            rajahdys.AddEffect(pelaaja.Position.X, pelaaja.Position.Y, pMaxMaara);
209            if (hyppyAani.IsPlaying == false)
210            {
211                hyppyAani.Play();
212            }
213        }
214    }
215
216
217    void Pelaaja()
218    {
219
220        pelaaja = new PlatformCharacter2(75, 75);
221        pelaaja.Shape = Shape.Rectangle;
222        pelaaja.Color = Color.Black;
223        pelaaja.AnimIdle = new Animation(pelaaja_paikka);
224        pelaaja.AnimFall = new Animation(pelaaja_paikka);
225        pelaaja.AnimJump = new Animation(pelaaja_hyppy);
226        pelaaja.AnimIdle.FPS = 5;
227        pelaaja.X = 0;
228        pelaaja.Y = Level.Bottom + 100.0;
229        pelaaja.LinearDamping = 0.95;
230        pelaaja.Restitution = 0.0;
231        pelaaja.Image = pelihahmo;
232        pelaaja.MaxVelocity = 2500;
233        pelaaja.Acceleration = 2500;
234        Gravity = new Vector(0, -1500);
235        Add(pelaaja, -1);
236
237    }
238
239
240    void Ohjaimet()
241    {
242
243        // Liike
244        Keyboard.Listen(Key.Left, ButtonState.Down, Kavele, "Vasen", pelaaja, Direction.Left);
245        Keyboard.Listen(Key.Right, ButtonState.Down, Kavele, "Oikea", pelaaja, Direction.Right);
246        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppy, "Ylös", pelaaja);
247
248        // Poistuminen
249        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
250        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Lopeta peli");
251
252    }
253
254    void Taso()
255    {
256
257        Surface vasenReuna = new Surface(500, 1200);
258        vasenReuna.Restitution = 1.0;
259        vasenReuna.X = -820;
260        vasenReuna.IsVisible = false;
261        vasenReuna.Color = Color.White;
262        Add(vasenReuna);
263
264        Surface oikeaReuna = new Surface(500, 1200);
265        oikeaReuna.Restitution = 1.0;
266        oikeaReuna.IsVisible = true;
267        oikeaReuna.X = 825;
268        oikeaReuna.Y = -1;
269        oikeaReuna.Color = Color.White;
270        oikeaReuna.Image = taustakuvareuna;
271        Add(oikeaReuna, -2);
272
273        Surface yläReuna = new Surface(1400, 100);
274        yläReuna.Restitution = 1.0;
275        yläReuna.Y = 550;
276        yläReuna.IsVisible = false;
277        yläReuna.Color = Color.White;
278        Add(yläReuna);
279
280        Surface alaReuna = new Surface(1400, 100);
281        alaReuna.Restitution = 1.0;
282        alaReuna.X = 0;
283        alaReuna.Y = -515;
284        alaReuna.IsVisible = false;
285        alaReuna.Color = Color.White;
286        Add(alaReuna);
287
288        Level.AmbientLight = 0.8;
289        Level.Background.Image = taustakuva;
290        //Level.BackgroundColor = Color.Black;
291
292    }
293
294    private void LuoSatunnainenRakennusVasemmalta1()
295    {
296
297        double x = RandomGen.NextDouble(-1800, -1800);
298        double y = RandomGen.NextDouble(365, 365);
299        double r = RandomGen.NextDouble(500, 900);
300        double r2 = RandomGen.NextDouble(100, 100);
301        Color vari = RandomGen.NextColor();
302        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari);
303
304    }
305
306    private void LuoSatunnainenRakennusVasemmalta2()
307    {
308
309        double x = RandomGen.NextDouble(-1800, -1800);
310        double y = RandomGen.NextDouble(130, 130);
311        double r = RandomGen.NextDouble(500, 900);
312        double r2 = RandomGen.NextDouble(100, 100);
313        Color vari = RandomGen.NextColor();
314        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari);
315
316    }
317
318    private void LuoSatunnainenRakennusVasemmalta3()
319    {
320
321        double x = RandomGen.NextDouble(-1800, -1800);
322        double y = RandomGen.NextDouble(-100, -100);
323        double r = RandomGen.NextDouble(500, 900);
324        double r2 = RandomGen.NextDouble(100, 100);
325        Color vari = RandomGen.NextColor();
326        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari);
327
328    }
329
330    private void LuoSatunnainenRakennusVasemmalta4()
331    {
332
333        double x = RandomGen.NextDouble(-1800, -1800);
334        double y = RandomGen.NextDouble(-330, -320);
335        double r = RandomGen.NextDouble(500, 900);
336        double r2 = RandomGen.NextDouble(100, 100);
337        Color vari = RandomGen.NextColor();
338        LuoMuoto(Shape.Rectangle, x, y, r, r2, vari);
339
340    }
341
342    private void LuoSatunnainenRakennusAlhaalta1()
343    {
344
345        double x = RandomGen.NextDouble(-180, -180);
346        double y = RandomGen.NextDouble(-1800, -1800);
347        double r = RandomGen.NextDouble(100, 100);
348        double r2 = RandomGen.NextDouble(500, 900);
349        Color vari = RandomGen.NextColor();
350        LuoMuoto2(Shape.Rectangle, x, y, r, r2, vari);
351
352    }
353
354    private void LuoSatunnainenRakennusAlhaalta2()
355    {
356
357        double x = RandomGen.NextDouble(-410, -410);
358        double y = RandomGen.NextDouble(-1800, -1800);
359        double r = RandomGen.NextDouble(100, 100);
360        double r2 = RandomGen.NextDouble(500, 900);
361        Color vari = RandomGen.NextColor();
362        LuoMuoto2(Shape.Rectangle, x, y, r, r2, vari);
363
364    }
365
366    private void LuoSatunnainenRakennusAlhaalta3()
367    {
368
369        double x = RandomGen.NextDouble(50, 50);
370        double y = RandomGen.NextDouble(-1800, -1800);
371        double r = RandomGen.NextDouble(100, 100);
372        double r2 = RandomGen.NextDouble(500, 900);
373        Color vari = RandomGen.NextColor();
374        LuoMuoto2(Shape.Rectangle, x, y, r, r2, vari);
375
376    }
377
378    private void LuoSatunnainenRakennusAlhaalta4()
379    {
380
381        double x = RandomGen.NextDouble(275, 275);
382        double y = RandomGen.NextDouble(-1800, -1800);
383        double r = RandomGen.NextDouble(100, 100);
384        double r2 = RandomGen.NextDouble(500, 900);
385        Color vari = RandomGen.NextColor();
386        LuoMuoto2(Shape.Rectangle, x, y, r, r2, vari);
387
388    }
389
390    private void LuoSatunnainenRakennusAlhaalta5()
391    {
392
393        double x = RandomGen.NextDouble(475, 475);
394        double y = RandomGen.NextDouble(-1800, -1800);
395        double r = RandomGen.NextDouble(100, 100);
396        double r2 = RandomGen.NextDouble(500, 900);
397        Color vari = RandomGen.NextColor();
398        LuoMuoto2(Shape.Rectangle, x, y, r, r2, vari);
399
400    }
401
402
403    void LuoMuoto(Shape muoto, double x, double y, double sade, double sade2, Color vari)
404    {
405
406        PhysicsObject olio = new PhysicsObject(sade, sade2);
407        olio.Shape = muoto;
408        olio.Color = Color.OrangeRed;
409        olio.Y = y;
410        olio.X = x;
411        olio.Move(new Vector(250, 0));
412        olio.MakeStatic();
413        olio.Tag = "vasenSeinä";
414        olio.Image = rakennus1;
415        olio.CollisionIgnoreGroup = 1;
416        olio.IgnoresCollisionResponse = false;
417        Add(olio);
418
419    }
420
421    void LuoMuoto2(Shape muoto, double x, double y, double sade, double sade2, Color vari)
422    {
423
424        PhysicsObject olio2 = new PhysicsObject(sade, sade2);
425        olio2.Shape = muoto;
426        olio2.Color = Color.OrangeRed;
427        olio2.Y = y;
428        olio2.X = x;
429        olio2.Move(new Vector(0, 250));
430        olio2.MakeStatic();
431        olio2.Tag = "alaSeinä";
432        olio2.CollisionIgnoreGroup = 1;
433        olio2.Image = rakennus2;
434        olio2.IgnoresCollisionResponse = false;
435        Add(olio2);
436
437    }
438}
Note: See TracBrowser for help on using the repository browser.