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

Revision 6984, 10.8 KB checked in by elalhutt, 4 years ago (diff)

peli valmis viimeistelyä vaille

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