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

Revision 7004, 10.9 KB checked in by elalhutt, 5 years ago (diff)

valmis

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