source: 2015/24/UunoT/Tasohyppelypeli2/Tasohyppelypeli2/Tasohyppelypeli2/Tasohyppelypeli2.cs @ 6016

Revision 6016, 9.9 KB checked in by otoskinn, 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 Tasohyppelypeli2 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const double kiipeaNopeus = 250;
14    const int RUUDUN_KOKO = 40;
15    int kenttaNro = 1;
16    DoubleMeter alaspainLaskuri=new DoubleMeter(5.0);
17    Timer aikaLaskuri;
18    bool osuuMaahan = false;
19    DoubleMeter pisteLaskuri = new DoubleMeter(0.0);
20    Timer pisteAjastin;
21   
22   
23    PlatformCharacter pelaaja1;
24    Image RuneStone = LoadImage("Runestone");
25    Image pelaajanKuva = LoadImage("Main");
26    Image tahtiKuva = LoadImage("tahti");
27    Image naamakuva = LoadImage ("Untitled");
28    Image brick = LoadImage("Castlebirck");
29    Image Blast = LoadImage("RuneBbbblast");
30    Image ruoho = LoadImage("Crasstiel");
31    SoundEffect maaliAani = LoadSoundEffect("maali");
32
33
34    public override void Begin()
35    {
36        SeuraavaKentta();
37       
38    }
39    void SeuraavaKentta()
40    {
41        ClearAll();
42        Gravity = new Vector(0, -1000);
43
44        if (kenttaNro == 1) LuoKentta("kentta1");
45        else if (kenttaNro == 2) LuoKentta("kentta2");
46        else if (kenttaNro == 3) LuoKentta("kentta3");
47        else if (kenttaNro > 2) Exit();
48        LisaaNappaimet();
49
50
51
52        Camera.Follow(pelaaja1);
53        Camera.ZoomFactor = 1.2;
54        Camera.StayInLevel = true;
55    }
56   
57
58    void LuoKentta(string kenttaTiedostonNimi)
59    {
60        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
61        LuoylospainAikalaskuri();
62        kentta.SetTileMethod('#', LisaaTaso);
63        //kentta.SetTileMethod('*', LisaaTahti);
64        kentta.SetTileMethod('N', LisaaPelaaja);
65        kentta.SetTileMethod('R', maata);
66        kentta.SetTileMethod('K', LuoKrystalli);
67        //kentta.SetTileMethod('B', Luoprotaali);
68        //kentta.SetTileMethod('T', LisaaTikkaat);
69        //kentta.SetTileMethod('p', spawneri);
70        //kentta.SetTileMethod('b', LuoNaama);
71        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
72        Level.CreateBorders();
73        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
74    }
75
76    void LisaaTaso(Vector paikka, double leveys, double korkeus)
77    {
78        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        taso.Image = brick;
80        taso.Position = paikka;
81        taso.Tag = "seina";
82       
83        Add(taso);
84    }
85    //void LisaaTikkaat(Vector paikka, double leveys, double korkeus)
86    //{
87    //    PhysicsObject tikkaat = PhysicsObject.CreateStaticObject(leveys, korkeus);
88    //    tikkaat.IgnoresCollisionResponse = true;
89    //    tikkaat.Tag = "tikkaat";
90    //    tikkaat.Position = paikka;
91    //    Add(tikkaat);
92    //}
93
94    //void LisaaTahti(Vector paikka, double leveys, double korkeus)
95    //{
96    //    PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
97    //    tahti.IgnoresCollisionResponse = true;
98    //    tahti.Position = paikka;
99    //    tahti.Image = tahtiKuva;
100    //    tahti.Tag = "tahti";
101    //    Add(tahti);
102    //}
103
104    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
105    {
106        pelaaja1 = new PlatformCharacter(leveys, korkeus);
107        pelaaja1.Position = paikka;
108        pelaaja1.Tag = "pelaaja";
109        pelaaja1.Mass = 4.0;
110        pelaaja1.Image = pelaajanKuva;
111        AddCollisionHandler(pelaaja1, "seina", LuoAikaLaskuri);
112        //AddCollisionHandler(pelaaja1, "tikkaat", Kiipea);
113        //AddCollisionHandler(pelaaja1, "portaali", Karttavaihto);
114        Add(pelaaja1);
115    }
116    void maata (Vector paikka, double leveys, double korkeus)
117    {
118      PhysicsObject mMata = PhysicsObject.CreateStaticObject(leveys, korkeus);
119      mMata.Image = ruoho;
120      mMata.Position = paikka;
121      mMata.Tag = "seina";
122      Add(mMata);
123       
124       
125     
126    }
127    //void Luoprotaali(Vector paikka, double leveys, double korkeus)
128    //{
129    //PhysicsObject protaali = new PhysicsObject(leveys,korkeus);
130    //protaali.Tag = "portaali";
131    //protaali.Position = paikka;
132    //Add (protaali);
133    //}
134    //void Karttavaihto(PhysicsObject pelaaja1, PhysicsObject protaali)
135    //{
136    //    kenttaNro += 1;
137    //    SeuraavaKentta();
138    //}
139    void LisaaNappaimet()
140    {
141        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
142        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
143
144        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
145        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
146        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
147
148        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
149
150        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
151        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
152        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
153       
154        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
155    }
156
157    void Liikuta(PlatformCharacter hahmo, double nopeus)
158    {
159        hahmo.Walk(nopeus);
160    }
161
162    void Hyppaa(PlatformCharacter hahmo, double nopeus)
163    {
164        hahmo.Jump(nopeus);
165        osuuMaahan = false;
166        aikaLaskuri.Stop();
167    }
168
169    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
170    {
171        maaliAani.Play();
172        MessageDisplay.Add("Keräsit tähden!");
173        tahti.Destroy();
174    }
175   
176   
177
178   
179   //void Kiipea(PhysicsObject hahmo, PhysicsObject tikkaat)
180    //{
181       //hahmo.IgnoresPhysicsLogics = true;
182        //hahmo.MoveTo(new Vector(hahmo.X, tikkaat.Top), 100);
183
184        //if (Keyboard.IsAltDown())
185        //{
186
187           
188          //  hahmo.Push(new Vector(0, 100000));
189        //}
190    //}
191    void LuoKrystalli(Vector paikka, double x, double y)
192    {
193        PhysicsObject krystalli = new PhysicsObject(40, 75);
194        krystalli.Position = paikka;
195        krystalli.Shape = Shape.Ellipse;
196        krystalli.Image = RuneStone;
197        krystalli.IgnoresGravity = true;
198        //krystalli.Brain = new FollowerBrain(pelaaja1);
199        krystalli.CollisionIgnoreGroup = 3;
200        Add(krystalli);
201
202
203        Timer ajastin = new Timer();
204        ajastin.Interval = 1;
205        ajastin.Timeout += delegate { RuneBlast(krystalli); };
206        ajastin.Start();
207       
208    }
209    void RuneBlast(PhysicsObject krystalli)
210    {
211        PhysicsObject runeblast = new PhysicsObject(50, 15);
212        runeblast.Position = krystalli.Position;
213        Vector suunta = (pelaaja1.Position - krystalli.Position).Normalize();
214        runeblast.CollisionIgnoreGroup = 3;
215        runeblast.Image = Blast;
216        runeblast.Angle = suunta.Angle;
217        runeblast.IgnoresGravity = true;
218        AddCollisionHandler(runeblast, "seina", Tromaaseina);
219        runeblast.Lifetime ;
220        Add(runeblast);
221        runeblast.Hit(suunta * 2500);
222        runeblast.Tag = "Prjectile";
223       
224    }
225    void LuoAikaLaskuri(PhysicsObject pelaaja1, PhysicsObject mMata)
226    {
227       
228        if (osuuMaahan == false)
229        {
230           
231            aikaLaskuri = new Timer();
232            aikaLaskuri.Interval = 0.1;
233            aikaLaskuri.Timeout += LaskeAlaspain;
234            aikaLaskuri.Start();
235       
236
237
238        Label aikaNaytto = new Label();
239        aikaNaytto.TextColor = Color.Black;
240        aikaNaytto.DecimalPlaces = 1;
241        aikaNaytto.BindTo(alaspainLaskuri);
242        aikaNaytto.X = Screen.Right - 50.0;
243        aikaNaytto.Y = Screen.Top - 50.0;
244        Add(aikaNaytto);
245
246        }
247
248        osuuMaahan = true;
249
250
251   }
252    void LuoylospainAikalaskuri()
253    {
254        pisteAjastin = new Timer();
255        pisteAjastin.Interval = 2;
256        pisteAjastin.Timeout += delegate { pisteLaskuri.Value++; };
257        pisteAjastin.Start();
258
259        pisteLaskuri.MaxValue = 50;
260        pisteLaskuri.UpperLimit += delegate
261        {
262
263            kenttaNro += 1;
264                SeuraavaKentta();
265                MessageDisplay.Add("peliä ei voi voittaa");
266        };
267
268        Label pisteNaytto = new Label();
269        pisteNaytto.TextColor = Color.Black;
270        pisteNaytto.DecimalPlaces = 1;
271        pisteNaytto.BindTo(pisteLaskuri);
272        pisteNaytto.X = Screen.Right - 50.0;
273        pisteNaytto.Y = Screen.Top  -100.0;
274        Add(pisteNaytto);
275    }
276    void LaskeAlaspain()
277    {
278        alaspainLaskuri.Value -= 0.1;
279
280        if (alaspainLaskuri.Value <= 0)
281        {
282            MessageDisplay.Add("#G3tr3gt");
283            //KoskemMata;
284            aikaLaskuri.Stop();
285            Timer.SingleShot(3.0, Exit);
286            return;
287
288
289
290        }
291
292    }
293   
294    void LuoRuneblastolio(Vector paikka)
295    {
296        PhysicsObject runeblast2 = new PhysicsObject(10, 5);
297        runeblast2.Position = paikka;
298        runeblast2.Image = Blast;
299        runeblast2.CollisionIgnoreGroup = 3;
300        runeblast2.Brain = new FollowerBrain(pelaaja1);
301        Add(runeblast2);
302        Timer.SingleShot(5.0, runeblast2.Destroy);
303       
304    }
305   
306    //void spawneri(Vector paikka, double leveys, double korkeus)
307    //{
308    //    Timer kutsuja = new Timer();
309    //    kutsuja.Interval = 0.25;
310    //    kutsuja.Timeout += delegate { LuoNaama(paikka); };
311    //    kutsuja.Start();
312    //}
313    void Tromaaseina(PhysicsObject runeblast, PhysicsObject taso)
314    {
315        //Explosion rajahdys = new Explosion(75);
316        //rajahdys.Position = runeblast.Position;
317        //Add(rajahdys);
318        LuoRuneblastolio(runeblast.Position);
319        runeblast.Destroy();
320    }
321   
322
323
324
325
326}
Note: See TracBrowser for help on using the repository browser.