source: 2017/27/UunoT/Tasohyppelypeli2/Tasohyppelypeli2/Tasohyppelypeli2/Tasohyppelypeli2.cs @ 8992

Revision 8992, 10.3 KB checked in by npo17_46, 2 years ago (diff)

Joo

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