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

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