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

Revision 6929, 8.9 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;
18
19   
20    IntMeter pisteLaskuri2;
21
22    PlatformCharacter pelaaja1;
23
24
25    //TODO vikaan kenttään metsäpalo
26    //TODO musiikki taustalle
27    //TODO maali texture
28    //TODO lääkäri asema loppuun
29
30
31    Image tukki = LoadImage            ("log");
32    Image lehti = LoadImage           ("leaf");
33    Image taustaKuva = LoadImage   ("america");
34    Image pelaajanKuva = LoadImage("mediheli");
35    Image tahtiKuva = LoadImage      ("tahti");
36    Image elain = LoadImage          ("elain");
37    Image rangerz = LoadImage       ("ranger");
38    Image fly = LoadImage          ("Flybomb");
39
40    SoundEffect maaliAani = LoadSoundEffect  ("maali");
41    SoundEffect hitmarker = LoadSoundEffect("HITMARKER");
42    SoundEffect rajahdysAani = LoadSoundEffect("Barrels");
43
44    public override void Begin()
45    {
46        pisteLaskuri2 = new IntMeter(0);
47        aloitapeli();
48    }
49
50    void aloitapeli()
51    {
52        ClearAll();
53        Gravity = new Vector(0, -1000);
54
55        LuoPisteLaskuri();
56        LuoPistelaskuri2();
57        LuoKentta();
58        LisaaNappaimet();
59
60
61        Camera.Follow(pelaaja1);
62        Camera.ZoomFactor = 1.2;
63        Camera.StayInLevel = true;
64    }
65
66    void LuoKentta()
67    {
68        pistelaskuri.MaxValue = 0;
69        TileMap kentta = TileMap.FromLevelAsset("kentta"+kenttanumero);
70        kentta.SetTileMethod('#', LisaaTaso)      ;
71        kentta.SetTileMethod('i', LisaaTaso2)     ;
72        kentta.SetTileMethod('*', LisaaElain)     ;
73        kentta.SetTileMethod('=', LisaaTurva)     ;
74        kentta.SetTileMethod('N', LisaaPelaaja)   ;
75        kentta.SetTileMethod('t', LisaaMaali)     ;
76        kentta.SetTileMethod('u', LisaaTalo)      ;
77        kentta.SetTileMethod('r', LisaaRanger)    ;
78        kentta.SetTileMethod('V', LisaaVihollinen);
79        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO)  ;
80        Level.CreateBorders();
81        Level.Background.Image = taustaKuva;
82        GameObject tausta = new GameObject(Level.Width, Level.Height);
83        tausta.Image = taustaKuva;
84        Add(tausta,-3);
85
86        pisteNaytto.IntFormatString = "{0} / " + pistelaskuri.MaxValue;
87
88    }
89
90    void LisaaTaso(Vector paikka, double leveys, double korkeus)
91    {
92        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
93        taso.Position = paikka;
94        taso.Color = Color.Green;
95        taso.Image = lehti;
96        taso.Tag = "Puu";
97        Add(taso);
98    }
99
100    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
101    {
102        GameObject taso2 = new GameObject(leveys, korkeus);
103        taso2.Position = paikka;
104         taso2.Image = lehti;
105        Add(taso2);
106    }
107
108    void LisaaRanger(Vector paikka, double leveys, double korkeus)
109    {
110        GameObject ranger = new GameObject(leveys, korkeus);
111        ranger.Position = paikka;
112         ranger.Image = rangerz;
113        Add(ranger);
114    }
115
116
117    void LisaaTalo(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject talo = PhysicsObject.CreateStaticObject(leveys, korkeus);
120        talo.Position = paikka;
121        talo.Image = tukki;
122        talo.Tag = "Puu";
123        Add(talo);
124
125    }
126
127    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
128    {
129        PhysicsObject vihollinen = new PhysicsObject(leveys, korkeus);
130        vihollinen.Position = paikka;
131        vihollinen.Tag = "karpanen";
132        vihollinen.IgnoresGravity = true;
133        vihollinen.Image = fly;
134        Add(vihollinen);
135        List<Vector> polku = new List<Vector>()               ;
136        polku.Add(paikka+ new Vector(200, 0))                 ;
137        polku.Add(paikka-new Vector(200, 0))                  ;
138        PathFollowerBrain polkuaivot = new PathFollowerBrain();
139        polkuaivot.Path = polku                               ;
140        polkuaivot.Loop = true                                ;
141        vihollinen.Brain = polkuaivot                         ;
142
143       
144    }
145
146    void TormaaKarpaseen(PhysicsObject pelaaja1, PhysicsObject vihollinen)
147    {
148        Explosion rajahdys = new Explosion(5000000) ;
149        rajahdys.Position = vihollinen.Position;
150        rajahdys.Sound = rajahdysAani          ;
151        rajahdys.Speed = 10000            ;
152        Add(rajahdys)                          ;
153        pelaaja1.Destroy()             ;
154        vihollinen.Destroy()           ;
155        Timer.SingleShot(2, aloitapeli);
156    }
157
158    void LisaaTurva(Vector paikka, double leveys, double korkeus)
159    {
160        PhysicsObject turva = PhysicsObject.CreateStaticObject(leveys, korkeus);
161        turva.Position = paikka;
162        turva.Color = Color.Brown;
163        Add(turva);
164    }
165
166    void LisaaMaali(Vector paikka, double leveys, double korkeus)
167    {
168        PhysicsObject Maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
169        Maali.Position = paikka;
170        Maali.Color = Color.Brown;
171        Maali.Tag = "maali";
172        Add(Maali);
173    }
174
175    void LisaaElain(Vector paikka, double leveys, double korkeus)
176    {
177        PhysicsObject Elain = PhysicsObject.CreateStaticObject(leveys, korkeus);
178        Elain.IgnoresCollisionResponse = true;
179        Elain.Position = paikka;
180        Elain.Image = elain;
181        Elain.Tag = "Elain";
182        Add(Elain);
183
184        pistelaskuri.MaxValue++;
185    }
186
187    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
188    {
189        pelaaja1 = new PlatformCharacter(leveys * 1.5, korkeus * 0.7);
190        pelaaja1.Position = paikka;
191        pelaaja1.Mass = 400;
192        pelaaja1.Image = pelaajanKuva;
193        AddCollisionHandler(pelaaja1, "Elain", TormaaElaimeen)    ;
194        AddCollisionHandler(pelaaja1, "Puu", TormaaPuuhun)        ;
195        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin)     ;
196        AddCollisionHandler(pelaaja1, "karpanen", TormaaKarpaseen);
197        Add(pelaaja1);
198    }
199
200    void LisaaNappaimet()
201    {
202        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
203        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
204
205        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
206        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
207        Keyboard.Listen(Key.Space, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
208
209        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
210
211        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
212        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
213        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
214
215        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
216    }
217
218    void Liikuta(PlatformCharacter hahmo, double nopeus)
219    {
220        hahmo.Walk(nopeus);
221    }
222
223    void Hyppaa(PlatformCharacter hahmo, double nopeus)
224    {
225        hahmo.ForceJump(nopeus);
226    }
227
228    void TormaaElaimeen(PhysicsObject hahmo, PhysicsObject Elain)
229    {
230        maaliAani.Play();
231        MessageDisplay.Add("Keräsit eläimen!");
232        pistelaskuri.Value += 1;
233        Elain.Destroy();
234    }
235
236    void TormaaMaaliin(PhysicsObject hahmo, PhysicsObject maali)
237    {
238        if (pistelaskuri.Value == pistelaskuri.MaxValue)
239        {
240           
241            kenttanumero++;
242            aloitapeli();
243        }
244    }
245    void TormaaPuuhun(PhysicsObject hahmo, PhysicsObject Puu)
246    {
247        pisteLaskuri2.Value += 1;
248        hitmarker.Play();
249        aloitapeli();
250    }
251
252    void LuoPisteLaskuri()
253    {
254        pistelaskuri = new IntMeter(0);
255
256        pisteNaytto = new Label("");
257        pisteNaytto.X = Screen.Left + 100;
258        pisteNaytto.Y = Screen.Top - 100;
259        pisteNaytto.TextColor = Color.Black;
260        pisteNaytto.Color = Color.White;
261        pisteNaytto.Title = "eläimet";
262
263        pisteNaytto.BindTo(pistelaskuri);
264        Add(pisteNaytto);
265    }
266
267   void LuoPistelaskuri2()
268    {
269       
270
271        Label pisteNaytto2 = new Label();
272        pisteNaytto2.X = Screen.Right - 100;
273        pisteNaytto2.Y = Screen.Top - 100;
274        pisteNaytto2.TextColor = Color.Black;
275        pisteNaytto2.Color = Color.White;
276        pisteNaytto2.Title = "yritykset";
277        pisteNaytto2.IntFormatString = ": {0:D3}";
278
279
280        pisteNaytto2.BindTo(pisteLaskuri2);
281        Add(pisteNaytto2);
282    }
283
284}
Note: See TracBrowser for help on using the repository browser.