source: 2017/23/VenlaV/platformerproto/platformerproto/platformerproto/platformerproto.cs @ 8478

Revision 8478, 10.4 KB checked in by nupeohje, 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 platformerproto : PhysicsGame
10{
11    PlatformCharacter pelaaja;
12    PlatformCharacter Nelio;
13    PlatformCharacter Pallo;
14    Image ruohokuva = LoadImage("ruoho");
15    Image lehdetkuva = LoadImage("Leaf_Floor");
16    Image multa = LoadImage("dirt");
17    Image pilvi = LoadImage("cloud");
18    Image runko = LoadImage("treer");
19    Image multat = LoadImage("dirtdark");
20    Image puulb = LoadImage("tree l b");
21    Image puultk = LoadImage("tree l t");
22    Image puurb = LoadImage("tree r b");
23    Image puurtk = LoadImage("tree r t");
24    Image doork = LoadImage("door");
25    Image doorugk = LoadImage("doorug");
26    Image coin = LoadImage("mariocoin");
27    Image portalk = LoadImage("portal tile");
28    Image borderk = LoadImage("Border");
29    int Laskuri = 0;
30    int Hyppy = 0;
31
32    int kenttaNro = 1;
33    DoubleMeter elamaLaskuri;
34
35
36    public override void Begin()
37    {
38        SeuraavaKentta();
39    }
40
41    void SeuraavaKentta()
42    {
43        ClearAll();
44
45        Mouse.IsCursorVisible = true;
46
47        if (kenttaNro == 1)  LuoKentta("kenttatestui");
48        else if (kenttaNro == 2)  LuoKentta("kentta2");
49        else if (kenttaNro == 3) LuoKentta("kentta3");
50        else if (kenttaNro > 3) Exit();
51
52        Camera.Zoom(5);
53
54        LuoElamaLaskuri();
55       
56        Camera.Follow(pelaaja);
57
58        AddCollisionHandler(pelaaja, "Kolikko", SaaRahaa);
59        AddCollisionHandler(pelaaja, "Maa", LisaaHyppyja);
60        AddCollisionHandler(pelaaja, "Portaali", OsuuPortaaliin);
61        AddCollisionHandler(pelaaja, "Vihu", Ohno);
62
63
64        Gravity = new Vector(0, -700);
65        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu vasemmalle", pelaaja, -200.0);
66        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu oikealle", pelaaja, 200.0);
67        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppaa", pelaaja);
68        Keyboard.Listen(Key.Up, ButtonState.Pressed, AmmuAseella, "Ammu", pelaaja);
69
70        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
71        Keyboard.Listen(Key.E, ButtonState.Pressed, Pause, "Pysäyttää pelin");
72    }
73    void LuoKentta(string kenttaTiedostonNimi)
74    {
75        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kenttaTiedostonNimi);
76        ruudut.SetTileMethod(Color.BloodRed, LuoPelaaja);
77        ruudut.SetTileMethod(Color.Black, LuoRuoho);
78        ruudut.SetTileMethod(Color.DarkGray, LuoMaa);
79        ruudut.SetTileMethod(Color.Azure, MaanAlainen1);
80        ruudut.SetTileMethod(Color.Rose, Pilvet);
81        ruudut.SetTileMethod(Color.Cyan, Doorali);
82        ruudut.SetTileMethod(Color.DarkCyan, Doorugali);
83        ruudut.SetTileMethod(Color.Orange, Coins);
84        ruudut.SetTileMethod(Color.HanPurple, Portal);
85        ruudut.SetTileMethod(Color.Red, Border);
86        ruudut.SetTileMethod(Color.MidnightBlue, LuoNelio);
87        ruudut.SetTileMethod(Color.SpringGreen, LuoYmpyra);
88        ruudut.SetTileMethod(Color.BrightGreen, Luo);
89        ruudut.Execute();
90    }
91    void Luo(Vector paikka, double leveys, double korkeus)
92    {     PhysicsObject Musta = PhysicsObject.CreateStaticObject(leveys, korkeus);
93        Musta.Position = paikka;
94        Musta.Color = Color.Black;
95        Musta.CollisionIgnoreGroup = 1;
96        Add(Musta);
97        Musta.Tag = "Maa";
98        Musta.Restitution = 0;}
99    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
100    {
101        pelaaja = new PlatformCharacter(10, 10);
102        pelaaja.Shape = Shape.Circle;
103        pelaaja.Color = Color.BloodRed;
104        pelaaja.Position = paikka;
105        pelaaja.CollisionIgnoreGroup = 2;
106        Add(pelaaja, 2);
107        pelaaja.Restitution = 0;
108        pelaaja.Weapon = new LaserGun(0.0, 0.0);
109        //Ammusten määrä aluksi:
110        pelaaja.Weapon.Ammo.Value = 1000000;
111
112        //Mitä tapahtuu kun ammus osuu johonkin?
113        pelaaja.Weapon.ProjectileCollision = AmmusOsui;
114        pelaaja.Weapon.FireRate = 5.0;
115        //pelaaja.Weapon.AttackSound = aseenAani;
116
117
118    }
119    void LuoNelio(Vector paikka, double leveys, double korkeus)
120    {
121        Nelio = new PlatformCharacter(10, 10);
122
123        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
124        tasoAivot.Speed = 100;
125        tasoAivot.FallsOffPlatforms = true;
126        tasoAivot.JumpSpeed = 500;
127        tasoAivot.TriesToJump = true;
128        Nelio.Brain = tasoAivot;
129        Nelio.Tag = "Vihu";
130
131        Nelio.Position = paikka;
132        Nelio.Shape = Shape.Rectangle;
133        Nelio.Color = Color.MidnightBlue;
134        Nelio.CollisionIgnoreGroup = 100;
135        Add(Nelio, 2);
136        Nelio.Restitution = 0;
137
138
139    }
140    void LuoYmpyra(Vector paikka, double leveys, double korkeus)
141    {
142        Pallo = new PlatformCharacter(10, 10);
143
144        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
145        tasoAivot.Speed = 100;
146        tasoAivot.FallsOffPlatforms = true;
147        tasoAivot.JumpSpeed = 500;
148        tasoAivot.TriesToJump = true;
149        Pallo.Brain = tasoAivot;
150
151        Pallo.Position = paikka;
152        Pallo.Shape = Shape.Circle;
153        Pallo.Color = Color.Rose;
154        Pallo.CollisionIgnoreGroup = 10;
155        Add(Pallo, 2);
156        Pallo.Restitution = 1;
157
158
159    }
160
161    void Border(Vector paikka, double leveys, double korkeus)
162    {
163        PhysicsObject border = PhysicsObject.CreateStaticObject(leveys, korkeus);
164        border.Position = paikka;
165        border.Image = borderk;
166        border.CollisionIgnoreGroup = 1;
167        Add(border);
168        border.Restitution = 0;
169    }
170    void LuoRuoho(Vector paikka, double leveys, double korkeus)
171    {
172        PhysicsObject ruoho = PhysicsObject.CreateStaticObject(leveys, korkeus);
173        ruoho.Position = paikka;
174        ruoho.Image = ruohokuva;
175        ruoho.CollisionIgnoreGroup = 1;
176        Add(ruoho);
177        ruoho.Restitution = 0;
178        ruoho.Tag = "Maa";
179
180    }
181    void LuoMaa(Vector paikka, double leveys, double korkeus)
182    {
183        PhysicsObject maa = PhysicsObject.CreateStaticObject(leveys, korkeus);
184        maa.Position = paikka;
185        maa.Image = multa;
186        maa.CollisionIgnoreGroup = 1;
187        Add(maa);
188        maa.Restitution = 0;
189        maa.Tag = "Maa";
190
191    }
192    void MaanAlainen1(Vector paikka, double leveys, double korkeus)
193    {
194        PhysicsObject ma = PhysicsObject.CreateStaticObject(leveys, korkeus);
195        ma.Position = paikka;
196        ma.Image = multat;
197        ma.CollisionIgnoreGroup = 2;
198        Add(ma, -3);
199
200    }
201
202    void Pilvet(Vector paikka, double leveys, double korkeus)
203    {
204        PhysicsObject pilve = PhysicsObject.CreateStaticObject(leveys, korkeus);
205        pilve.Position = paikka;
206        pilve.Image = pilvi;
207        pilve.CollisionIgnoreGroup = 1;
208        Add(pilve);
209        pilve.Restitution = 0;
210        pilve.Tag = "Maa";
211    }
212
213    void LiikutaPelaajaa(PlatformCharacter pelaaja, double nopeus)
214    {
215        pelaaja.Walk(nopeus);
216
217    }
218
219    void Hyppaa(PlatformCharacter pelaaja)
220    {
221        if (Laskuri < 5)
222        { pelaaja.Jump(400); }
223        else {
224            if (Hyppy < 3) { pelaaja.ForceJump(500); Hyppy++; }
225            else { }
226        }
227    }
228    void Doorugali(Vector paikka, double leveys, double korkeus)
229    {
230        PhysicsObject doorug = PhysicsObject.CreateStaticObject(leveys, korkeus);
231        doorug.Position = paikka;
232        doorug.Image = doorugk;
233        doorug.CollisionIgnoreGroup = 2;
234        Add(doorug, -1);
235        doorug.Tag = "Ovi" ;
236
237    }
238    void Doorali(Vector paikka, double leveys, double korkeus)
239    {
240        PhysicsObject door = PhysicsObject.CreateStaticObject(leveys, korkeus);
241        door.Position = paikka;
242        door.Image = doork;
243        door.CollisionIgnoreGroup = 2;
244        Add(door, -1);
245        door.Tag = "Ovi";
246
247    }
248    void Coins(Vector paikka, double leveys, double korkeus)
249    {
250        PhysicsObject Coin = PhysicsObject.CreateStaticObject(leveys, korkeus);
251        Coin.Position = paikka;
252        Coin.Image = coin;
253        Coin.CollisionIgnoreGroup = 1;
254        Coin.Tag = "Kolikko";
255        Add(Coin, -1);
256    }
257
258
259    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
260    {
261        ammus.Destroy();
262        if (kohde.Tag == "Vihu") { kohde.Destroy(); }
263    }
264    void AmmuAseella(PlatformCharacter pelaaja)
265    {
266        PhysicsObject ammus = pelaaja.Weapon.Shoot();
267
268        if (ammus != null)
269        {
270            //ammus.Size *= 3;
271            //ammus.Image = ...
272            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
273        }
274    }
275    void SaaRahaa(PhysicsObject Pelaaja, PhysicsObject Coin)
276    {
277        Laskuri++;
278        Coin.Destroy();
279    }
280    void Portal(Vector paikka, double leveys, double korkeus)
281    {
282        PhysicsObject portal = PhysicsObject.CreateStaticObject(leveys, korkeus);
283        portal.Position = paikka;
284        portal.Image = portalk;
285        portal.CollisionIgnoreGroup = 1;
286        portal.Tag = "Portaali";
287        Add(portal, 3);
288
289
290    }
291    void KaikkiKeratty()
292    {
293        MessageDisplay.Add("Jee.");
294
295    }
296    void LisaaHyppyja(PhysicsObject Pelaaja, PhysicsObject Maa)
297    {
298        if(Hyppy < 3)
299        { }
300        else
301        { Hyppy = 0; }
302    }
303
304    void OsuuPortaaliin(PhysicsObject Pelaaja, PhysicsObject Portaali)
305    {
306        kenttaNro++;
307        ClearAll();
308        SeuraavaKentta();
309    }
310    void Ohno(PhysicsObject Pelaaja, PhysicsObject Nelio)
311    {
312        Nelio.Destroy();
313        elamaLaskuri.Value -= 1;
314
315        }
316    void LuoElamaLaskuri()
317    {
318        elamaLaskuri = new DoubleMeter(3);
319        elamaLaskuri.MaxValue = 3;
320        elamaLaskuri.LowerLimit += ElamaLoppui;
321
322        ProgressBar elamaPalkki = new ProgressBar(300, 100);
323        elamaPalkki.X = Screen.Left + 150;
324        elamaPalkki.Y = Screen.Top - 40;
325        elamaPalkki.BindTo(elamaLaskuri);
326
327        elamaPalkki.Image = LoadImage("Health Bar empty");
328        elamaPalkki.BarImage = LoadImage("Health Bar");
329
330        Add(elamaPalkki);
331    }
332
333    void ElamaLoppui()
334    {
335        MultiSelectWindow alkuValikko = new MultiSelectWindow("GameOver", "Lopeta");
336        Add(alkuValikko);
337
338        alkuValikko.AddItemHandler(0, Exit);
339    }
340    }
341
342
343
Note: See TracBrowser for help on using the repository browser.