source: 2015/30/EliasHu/RescueRanger/RescueRanger/RescueRanger/RescueRanger.cs @ 6967

Revision 6967, 10.5 KB checked in by elalhutt, 4 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 RescueRanger : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 43;
13    const int RUUDUN_KOKO = 40;
14
15    Label pisteNaytto;
16    IntMeter pistelaskuri;
17    int kenttanumero = 1; // tämä numero kertoo kentän aloitusnumeron
18    int kenttaNumeroMax = 2;
19
20    IntMeter pisteetkaikki = new IntMeter(0);
21
22    EasyHighScore topLista = new EasyHighScore();
23
24    IntMeter pisteLaskuri2;
25
26    PlatformCharacter pelaaja1;
27
28
29    //TODO vikaan kenttään metsäpalo
30    //TODO musiikki taustalle
31    //TODO käännä laskuri
32
33
34    Image tukki = LoadImage            ("log");
35    Image lehti = LoadImage           ("leaf");
36    Image taustaKuva = LoadImage   ("america");
37    Image pelaajanKuva = LoadImage("mediheli");
38    Image tahtiKuva = LoadImage      ("tahti");
39    Image elain = LoadImage          ("elain");
40    Image rangerz = LoadImage       ("ranger");
41    Image fly = LoadImage          ("Flybomb");
42    Image Asem = LoadImage           ("Asema");
43
44    SoundEffect maaliAani = LoadSoundEffect  ("maali");
45    SoundEffect hitmarker = LoadSoundEffect("HITMARKER");
46    SoundEffect rajahdysAani = LoadSoundEffect("Barrels");
47
48    public override void Begin()
49    {
50        pisteLaskuri2 = new IntMeter(0);
51        AlkuValikko();
52       
53    }
54
55    void AloitaPeli()
56    {
57        ClearAll();
58        if (kenttanumero > kenttaNumeroMax)
59        {
60            topLista.EnterAndShow(pisteetkaikki);
61            return;
62        }
63        Gravity = new Vector(0, -1000);
64
65        LuoPisteLaskuri();
66        LuoPistelaskuri2();
67        LuoKentta();
68        LisaaNappaimet();
69
70
71
72        Camera.Follow(pelaaja1);
73        Camera.ZoomFactor = 1.2;
74        Camera.StayInLevel = true;
75    }
76
77    void AlkuValikko(Window sender = null)
78    {
79        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
80"Aloita peli", "Parhaat pisteet", "Lopeta");
81        Add(alkuValikko);
82        alkuValikko.AddItemHandler(0, AloitaPeli);
83        alkuValikko.AddItemHandler(1, ParhaatPisteet);
84        alkuValikko.AddItemHandler(2, Exit);
85    }
86
87    void ParhaatPisteet()
88    {
89        topLista.Show();
90        topLista.HighScoreWindow.Closed += AlkuValikko;
91
92
93    }
94
95
96
97
98    void LuoKentta()
99    {
100        pistelaskuri.MaxValue = 0;
101        TileMap kentta = TileMap.FromLevelAsset("kentta"+kenttanumero);
102        kentta.SetTileMethod('#', LisaaTaso)      ;
103        kentta.SetTileMethod('i', LisaaTaso2)     ;
104        kentta.SetTileMethod('*', LisaaElain)     ;
105        kentta.SetTileMethod('=', LisaaTurva)     ;
106        kentta.SetTileMethod('N', LisaaPelaaja)   ;
107        kentta.SetTileMethod('t', LisaaMaali)     ;
108        kentta.SetTileMethod('u', LisaaTalo)      ;
109        kentta.SetTileMethod('r', LisaaRanger)    ;
110        kentta.SetTileMethod('V', LisaaVihollinen);
111        kentta.SetTileMethod('a', LisaaAsema)     ;
112        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO)  ;
113        Level.CreateBorders();
114        Level.Background.Image = taustaKuva;
115        GameObject tausta = new GameObject(Level.Width, Level.Height);
116        tausta.Image = taustaKuva;
117        Add(tausta,-3);
118
119        pisteNaytto.IntFormatString = "{0} / " + pistelaskuri.MaxValue;
120
121    }
122
123    void LisaaTaso(Vector paikka, double leveys, double korkeus)
124    {
125        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
126        taso.Position = paikka;
127        taso.Color = Color.Green;
128        taso.Image = lehti;
129        taso.Tag = "Puu";
130        Add(taso);
131    }
132
133    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
134    {
135        GameObject taso2 = new GameObject(leveys, korkeus);
136        taso2.Position = paikka;
137         taso2.Image = lehti;
138        Add(taso2);
139    }
140
141    void LisaaRanger(Vector paikka, double leveys, double korkeus)
142    {
143        GameObject ranger = new GameObject(leveys, korkeus);
144        ranger.Position = paikka;
145         ranger.Image = rangerz;
146        Add(ranger);
147    }
148
149
150    void LisaaTalo(Vector paikka, double leveys, double korkeus)
151    {
152        PhysicsObject talo = PhysicsObject.CreateStaticObject(leveys, korkeus);
153        talo.Position = paikka;
154        talo.Image = tukki;
155        talo.Tag = "Puu";
156        Add(talo);
157
158    }
159
160    void LisaaAsema(Vector paikka, double leveys, double korkeus)
161    {
162        GameObject asema = new GameObject(leveys * 6.5, korkeus * 3.2);
163        asema.Position = paikka;
164        asema.Image = Asem;
165        Add(asema);
166    }
167
168    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
169    {
170        PhysicsObject vihollinen = new PhysicsObject(leveys, korkeus);
171        vihollinen.Position = paikka;
172        vihollinen.Tag = "karpanen";
173        vihollinen.IgnoresGravity = true;
174        vihollinen.Image = fly;
175        Add(vihollinen);
176        List<Vector> polku = new List<Vector>()               ;
177        polku.Add(paikka+ new Vector(200, 0))                 ;
178        polku.Add(paikka-new Vector(200, 0))                  ;
179        PathFollowerBrain polkuaivot = new PathFollowerBrain();
180        polkuaivot.Path = polku                               ;
181        polkuaivot.Loop = true                                ;
182        vihollinen.Brain = polkuaivot                         ;
183
184       
185    }
186
187    void TormaaKarpaseen(PhysicsObject pelaaja1, PhysicsObject vihollinen)
188    {
189        Explosion rajahdys = new Explosion(5000000) ;
190        rajahdys.Position = vihollinen.Position;
191        rajahdys.Sound = rajahdysAani          ;
192        rajahdys.Speed = 10000            ;
193        Add(rajahdys)                          ;
194        pelaaja1.Destroy()             ;
195        vihollinen.Destroy()           ;
196        pisteLaskuri2.Value += 1;
197        Timer.SingleShot(2, AloitaPeli);
198    }
199
200    void LisaaTurva(Vector paikka, double leveys, double korkeus)
201    {
202        PhysicsObject turva = PhysicsObject.CreateStaticObject(leveys, korkeus);
203        turva.Position = paikka;
204        turva.Color = Color.Brown;
205        Add(turva);
206    }
207
208    void LisaaMaali(Vector paikka, double leveys, double korkeus)
209    {
210        PhysicsObject Maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
211        Maali.Position = paikka;
212        Maali.Color = Color.Brown;
213        Maali.Tag = "maali";
214        Add(Maali);
215    }
216
217    void LisaaElain(Vector paikka, double leveys, double korkeus)
218    {
219        PhysicsObject Elain = PhysicsObject.CreateStaticObject(leveys, korkeus);
220        Elain.IgnoresCollisionResponse = true;
221        Elain.Position = paikka;
222        Elain.Image = elain;
223        Elain.Tag = "Elain";
224        Add(Elain);
225
226        pistelaskuri.MaxValue++;
227    }
228
229    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
230    {
231        pelaaja1 = new PlatformCharacter(leveys * 1.5, korkeus * 0.7);
232        pelaaja1.Position = paikka;
233        pelaaja1.Mass = 400;
234        pelaaja1.Image = pelaajanKuva;
235        AddCollisionHandler(pelaaja1, "Elain", TormaaElaimeen)    ;
236        AddCollisionHandler(pelaaja1, "Puu", TormaaPuuhun)        ;
237        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin)     ;
238        AddCollisionHandler(pelaaja1, "karpanen", TormaaKarpaseen);
239        Add(pelaaja1);
240    }
241
242    void LisaaNappaimet()
243    {
244        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
245        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
246        Keyboard.Listen(Key.N, ButtonState.Pressed, NoClip, "Älä tee sitä!", true);
247        Keyboard.Listen(Key.N, ButtonState.Released, NoClip, "Älä tee sitä!", false);
248
249        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
250        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
251        Keyboard.Listen(Key.Space, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
252
253        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
254
255        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
256        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
257        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
258
259        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
260    }
261
262    void Liikuta(PlatformCharacter hahmo, double nopeus)
263    {
264        hahmo.Walk(nopeus);
265    }
266
267    void Hyppaa(PlatformCharacter hahmo, double nopeus)
268    {
269        hahmo.ForceJump(nopeus);
270    }
271
272    void NoClip(bool noclip)
273    {
274        pelaaja1.IgnoresCollisionResponse = noclip;
275    }
276
277
278    void TormaaElaimeen(PhysicsObject hahmo, PhysicsObject Elain)
279    {
280        maaliAani.Play();
281        MessageDisplay.Add("Keräsit eläimen!");
282        pistelaskuri.Value += 1;
283        Elain.Destroy();
284    }
285
286    void TormaaMaaliin(PhysicsObject hahmo, PhysicsObject maali)
287    {
288        if (pistelaskuri.Value == pistelaskuri.MaxValue)
289        {
290            pisteetkaikki.Value += pisteLaskuri2.Value;  //  lisää kaikenkaikkisiin yrityksiin tähä kenttään kuluneet yritykset.
291            kenttanumero++;
292            AloitaPeli();
293        }
294    }
295    void TormaaPuuhun(PhysicsObject hahmo, PhysicsObject Puu)
296    {
297        if (!pelaaja1.IgnoresCollisionResponse)
298        {
299            pisteLaskuri2.Value += 1;
300            hitmarker.Play();
301            AloitaPeli();
302        }
303    }
304
305
306    void LuoPisteLaskuri()
307    {
308        pistelaskuri = new IntMeter(0);
309
310        pisteNaytto = new Label("");
311        pisteNaytto.X = Screen.Left + 100;
312        pisteNaytto.Y = Screen.Top - 100;
313        pisteNaytto.TextColor = Color.Black;
314        pisteNaytto.Color = Color.White;
315        pisteNaytto.Title = "eläimet";
316
317        pisteNaytto.BindTo(pistelaskuri);
318        Add(pisteNaytto);
319    }
320
321   void LuoPistelaskuri2()
322    {
323       
324
325        Label pisteNaytto2 = new Label();
326        pisteNaytto2.X = Screen.Right - 100;
327        pisteNaytto2.Y = Screen.Top - 100;
328        pisteNaytto2.TextColor = Color.Black;
329        pisteNaytto2.Color = Color.White;
330        pisteNaytto2.Title = "yritykset";
331        pisteNaytto2.IntFormatString = ": {0:D3}";
332
333
334        pisteNaytto2.BindTo(pisteLaskuri2);
335        Add(pisteNaytto2);
336    }
337
338}
Note: See TracBrowser for help on using the repository browser.