source: 2014/30/AarniAR/BitPup/BitPup/BitPup/BitPup.cs @ 5837

Revision 5837, 9.4 KB checked in by esaala, 5 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class BitPup : PhysicsGame
10{
11    const double nopeus = 300;
12    const double hyppyNopeus = 500;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    int kenttaNro = 1;
17    Image pelaajanKuva = LoadImage("BitPup1S");
18    Image tahtiKuva = LoadImage("tahti");
19    Image[] Juoksu = LoadImages("BitPup1R", "BitPup2R");
20    Image Hyppy = LoadImage("BitPup1J");
21    private Image[] TimeBombPic = LoadImages("TimeBomb1", "TimeBomb2", "TimeBomb3");
22    private Image Spike = LoadImage("Spike");
23    private Image FallBlock = LoadImage("Falling");
24    private Image Loppu = LoadImage("Loppu");
25
26    DoubleMeter health;
27
28
29    SoundEffect maaliAani = LoadSoundEffect("maali");
30
31    public override void Begin()
32    {
33        SmoothTextures = false;
34
35        alku();
36
37    }
38
39    void AloitaPeli()
40    {
41
42
43
44        SeuraavaKentta();
45        LisaaNappaimet();
46
47
48    }
49
50    void LuoKentta(string kenttaTiedostonNimi)
51    {
52        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
53        kentta.SetTileMethod('#', LisaaTaso);
54        kentta.SetTileMethod('*', LisaaTahti);
55        kentta.SetTileMethod('N', LisaaPelaaja);
56        kentta.SetTileMethod('T', LisaaTimeBomb);
57        kentta.SetTileMethod('G', LisaaLoppu);
58        kentta.SetTileMethod('S', LisaaSpike);
59        kentta.SetTileMethod('F', LisaaFall);
60        kentta.SetTileMethod('&', LisaaKentta);
61
62
63
64
65
66        TileMap ruudut = TileMap.FromLevelAsset(kenttaTiedostonNimi);
67        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
68        Level.CreateBorders();
69        Level.Background.Color = Color.LightGray;
70    }
71
72    void LisaaTaso(Vector paikka, double leveys, double korkeus)
73    {
74        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
75        taso.Position = paikka;
76        taso.Color = Color.Gray;
77        Add(taso);
78    }
79
80    void LisaaTahti(Vector paikka, double leveys, double korkeus)
81    {
82        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
83        tahti.IgnoresCollisionResponse = true;
84        tahti.Position = paikka;
85        tahti.Image = tahtiKuva;
86        tahti.Tag = "tahti";
87        Add(tahti);
88    }
89
90    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
91    {
92        pelaaja1 = new PlatformCharacter(leveys, korkeus);
93        pelaaja1.Position = paikka;
94        pelaaja1.Mass = 4.0;
95        pelaaja1.Image = pelaajanKuva;
96        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
97        pelaaja1.AnimJump = new Animation(Hyppy);
98        pelaaja1.AnimFall = new Animation(Hyppy);
99        pelaaja1.AnimWalk = new Animation(Juoksu);
100        pelaaja1.AnimWalk.FPS = 4;
101
102        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
103        AddCollisionHandler(pelaaja1, "timebomb", TormaaPommiin);
104        AddCollisionHandler(pelaaja1, "loppu", TormaaLoppuun);
105        AddCollisionHandler(pelaaja1, "spike", TormaaSpikeen);
106        AddCollisionHandler(pelaaja1, "fall", TormaaFall);
107        Add(pelaaja1);
108    }
109
110    void LisaaNappaimet()
111    {
112        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
113        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
114
115        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
116        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
117        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
118        Keyboard.Listen(Key.Enter, ButtonState.Pressed, Tauko, "PauseGame");
119        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
120
121        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
122        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
123        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
124
125
126        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
127    }
128
129    void Liikuta(PlatformCharacter hahmo, double nopeus)
130    {
131        hahmo.Walk(nopeus);
132    }
133
134    void Hyppaa(PlatformCharacter hahmo, double nopeus)
135    {
136        hahmo.Jump(nopeus);
137    }
138
139    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
140    {
141        maaliAani.Play();
142        MessageDisplay.Add("Keräsit tähden!");
143        tahti.Destroy();
144    }
145
146    void TormaaFall(PhysicsObject hahmo, PhysicsObject fall)
147    {
148        if (hahmo.Y > fall.Y)
149        {
150            Timer.SingleShot(0.4, delegate
151            {
152                fall.Velocity = new Vector(0, -275);
153                fall.LifetimeLeft = TimeSpan.FromSeconds(10);
154            });
155        }
156    }
157
158    void TormaaSpikeen(PhysicsObject hahmo, PhysicsObject spike)
159    {
160        if (!hahmo.IsDestroying)
161        {
162            MessageDisplay.Add("Game Over!");
163            hahmo.Destroy();
164            Timer.SingleShot(2, AloitaPeli);
165        }
166    }
167
168    void TormaaLoppuun(PhysicsObject hahmo, PhysicsObject tahti)
169    {
170        kenttaNro++;
171        SeuraavaKentta();
172    }
173
174    void TormaaPommiin(PhysicsObject hahmo, PhysicsObject timebomb)
175    {
176        if (hahmo.Y > timebomb.Y)
177        {
178            timebomb.Animation = new Animation(TimeBombPic);
179            timebomb.Animation.FPS = 1;
180            timebomb.Animation.Start();
181            timebomb.Tag = null;
182
183            timebomb.Animation.Played += delegate
184            {
185                Explosion ex = new Explosion(50);
186                ex.Position = timebomb.Position;
187                Add(ex);
188                timebomb.Destroy();
189            };
190        }
191    }
192
193    void LisaaTimeBomb(Vector paikka, double leveys, double korkeus)
194    {
195        PhysicsObject timebomb = PhysicsObject.CreateStaticObject(leveys, korkeus);
196        timebomb.Position = paikka;
197        timebomb.Image = TimeBombPic[0];
198        timebomb.Tag = "timebomb";
199        Add(timebomb);
200    }
201    void LisaaLoppu(Vector paikka, double leveys, double korkeus)
202    {
203        PhysicsObject loppu = PhysicsObject.CreateStaticObject(leveys, korkeus);
204        loppu.Position = paikka;
205        loppu.Tag = "loppu";
206        loppu.Color = Color.LightGray;
207        Add(loppu);
208    }
209    void LisaaSpike(Vector paikka, double leveys, double korkeus)
210    {
211        PhysicsObject spike = PhysicsObject.CreateStaticObject(leveys, korkeus - 4);
212        spike.Position = paikka;
213        spike.Y -= 2;
214        spike.Image = Spike;
215        spike.Tag = "spike";
216        Add(spike);
217    }
218    void LisaaFall(Vector paikka, double leveys, double korkeus)
219    {
220        PhysicsObject fall = PhysicsObject.CreateStaticObject(leveys, korkeus * 0.5);
221        fall.Position = paikka;
222        //fall.Y += korkeus * 0.25;
223        fall.Image = FallBlock;
224        fall.Tag = "fall";
225        Add(fall);
226    }
227    void alku()
228    {
229        MultiSelectWindow alkuValikko = new MultiSelectWindow("BitPup",
230"Aloita peli", "Lopeta");
231        Add(alkuValikko);
232        alkuValikko.AddItemHandler(0, AloitaPeli);
233
234        alkuValikko.AddItemHandler(1, Exit);
235        alkuValikko.DefaultCancel = 3;
236
237    }
238    void SeuraavaKentta()
239    {
240        ClearAll();
241        Gravity = new Vector(0, -2000);
242
243        if (kenttaNro == 1)
244        {
245            LuoKentta("kentta1");
246            MessageDisplay.Add("Operator: Their Entrance Is Currently Unguarded. Get In There Before They Notice You!");
247            MessageDisplay.Add("Mission 1: Storm The Entrance");
248        }
249        else if (kenttaNro == 2)
250        {
251            LuoKentta("kentta2");
252            MessageDisplay.Add("Operator: Most Of The Energy Readings Come From Underground. Find The Way Below.");
253            MessageDisplay.Add("Mission 2: Find The Way Down");
254        }
255        else if (kenttaNro > 2);
256        {
257             
258        }
259
260
261        LisaaNappaimet();
262        LuoPistelaskuri();
263
264        Camera.Follow(pelaaja1);
265        Camera.ZoomFactor = 2.0;
266        Camera.StayInLevel = true;
267
268
269    }
270    void LisaaKentta(Vector paikka, double leveys, double korkeus)
271    {
272        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
273        taso.Position = paikka;
274        taso.Color = Color.LightGray;
275        Add(taso);
276    }
277    void Tauko()
278    {
279        MultiSelectWindow TaukoValikko = new MultiSelectWindow("Pause",
280  "Jatka", "Lopeta");
281        Add(TaukoValikko);
282       
283
284        TaukoValikko.AddItemHandler(1, Exit);
285        TaukoValikko.DefaultCancel = 3; 
286    }
287    void LuoPistelaskuri()
288    {
289        health = new DoubleMeter(100);
290        health.MaxValue = 100;
291        health.MinValue = 0;
292       
293
294        health.Changed += delegate
295        {
296           
297        };
298
299        ProgressBar healthMeter = new ProgressBar(200, 20);
300        healthMeter.X = Screen.Left + 200;
301        healthMeter.Y = Screen.Top - 950;
302        healthMeter.BindTo(health);
303        Add(healthMeter);
304       
305
306        healthMeter.Angle = Angle.StraightAngle;
307        healthMeter.Color = Color.Transparent;
308        healthMeter.BorderColor = Color.Black;
309        healthMeter.BarColor = Color.LightBlue;
310
311
312
313
314    }
315}
316
317
318       
319       
Note: See TracBrowser for help on using the repository browser.