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

Revision 8485, 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
74    void LuoKentta(string kenttaTiedostonNimi)
75    {
76        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kenttaTiedostonNimi);
77        ruudut.SetTileMethod(Color.BloodRed, LuoPelaaja);
78        ruudut.SetTileMethod(Color.Black, LuoRuoho);
79        ruudut.SetTileMethod(Color.DarkGray, LuoMaa);
80        ruudut.SetTileMethod(Color.Azure, MaanAlainen1);
81        ruudut.SetTileMethod(Color.Rose, Pilvet);
82        ruudut.SetTileMethod(Color.Cyan, Doorali);
83        ruudut.SetTileMethod(Color.DarkCyan, Doorugali);
84        ruudut.SetTileMethod(Color.Orange, Coins);
85        ruudut.SetTileMethod(Color.HanPurple, Portal);
86        ruudut.SetTileMethod(Color.Red, Border);
87        ruudut.SetTileMethod(Color.MidnightBlue, LuoNelio);
88        ruudut.SetTileMethod(Color.SpringGreen, LuoYmpyra);
89        ruudut.SetTileMethod(Color.BrightGreen, Luo);
90        ruudut.Execute();
91    }
92    void Luo(Vector paikka, double leveys, double korkeus)
93    {     PhysicsObject Musta = PhysicsObject.CreateStaticObject(leveys, korkeus);
94        Musta.Position = paikka;
95        Musta.Color = Color.Black;
96        Musta.CollisionIgnoreGroup = 1;
97        Add(Musta);
98        Musta.Tag = "Maa";
99        Musta.Restitution = 0;}
100    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
101    {
102        pelaaja = new PlatformCharacter(10, 10);
103        pelaaja.Shape = Shape.Circle;
104        pelaaja.Color = Color.BloodRed;
105        pelaaja.Position = paikka;
106        pelaaja.CollisionIgnoreGroup = 2;
107        Add(pelaaja, 2);
108        pelaaja.Restitution = 0;
109        pelaaja.Weapon = new LaserGun(0.0, 0.0);
110        //Ammusten määrä aluksi:
111        pelaaja.Weapon.Ammo.Value = 1000000;
112
113        //Mitä tapahtuu kun ammus osuu johonkin?
114        pelaaja.Weapon.ProjectileCollision = AmmusOsui;
115        pelaaja.Weapon.FireRate = 5.0;
116        //pelaaja.Weapon.AttackSound = aseenAani;
117
118
119    }
120    void LuoNelio(Vector paikka, double leveys, double korkeus)
121    {
122        Nelio = new PlatformCharacter(10, 10);
123
124        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
125        tasoAivot.Speed = 100;
126        tasoAivot.FallsOffPlatforms = true;
127        tasoAivot.JumpSpeed = 500;
128        tasoAivot.TriesToJump = true;
129        Nelio.Brain = tasoAivot;
130        Nelio.Tag = "Vihu";
131
132        Nelio.Position = paikka;
133        Nelio.Shape = Shape.Rectangle;
134        Nelio.Color = Color.MidnightBlue;
135        Nelio.CollisionIgnoreGroup = 100;
136        Add(Nelio, 2);
137        Nelio.Restitution = 0;
138
139
140    }
141    void LuoYmpyra(Vector paikka, double leveys, double korkeus)
142    {
143        Pallo = new PlatformCharacter(10, 10);
144
145        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
146        tasoAivot.Speed = 100;
147        tasoAivot.FallsOffPlatforms = true;
148        tasoAivot.JumpSpeed = 500;
149        tasoAivot.TriesToJump = true;
150        Pallo.Brain = tasoAivot;
151
152        Pallo.Position = paikka;
153        Pallo.Shape = Shape.Circle;
154        Pallo.Color = Color.Rose;
155        Pallo.CollisionIgnoreGroup = 10;
156        Add(Pallo, 2);
157        Pallo.Restitution = 1;
158
159
160    }
161
162    void Border(Vector paikka, double leveys, double korkeus)
163    {
164        PhysicsObject border = PhysicsObject.CreateStaticObject(leveys, korkeus);
165        border.Position = paikka;
166        border.Image = borderk;
167        border.CollisionIgnoreGroup = 1;
168        Add(border);
169        border.Restitution = 0;
170    }
171    void LuoRuoho(Vector paikka, double leveys, double korkeus)
172    {
173        PhysicsObject ruoho = PhysicsObject.CreateStaticObject(leveys, korkeus);
174        ruoho.Position = paikka;
175        ruoho.Image = ruohokuva;
176        ruoho.CollisionIgnoreGroup = 1;
177        Add(ruoho);
178        ruoho.Restitution = 0;
179        ruoho.Tag = "Maa";
180
181    }
182    void LuoMaa(Vector paikka, double leveys, double korkeus)
183    {
184        PhysicsObject maa = PhysicsObject.CreateStaticObject(leveys, korkeus);
185        maa.Position = paikka;
186        maa.Image = multa;
187        maa.CollisionIgnoreGroup = 1;
188        Add(maa);
189        maa.Restitution = 0;
190        maa.Tag = "Maa";
191
192    }
193    void MaanAlainen1(Vector paikka, double leveys, double korkeus)
194    {
195        PhysicsObject ma = PhysicsObject.CreateStaticObject(leveys, korkeus);
196        ma.Position = paikka;
197        ma.Image = multat;
198        ma.CollisionIgnoreGroup = 2;
199        Add(ma, -3);
200
201    }
202
203    void Pilvet(Vector paikka, double leveys, double korkeus)
204    {
205        PhysicsObject pilve = PhysicsObject.CreateStaticObject(leveys, korkeus);
206        pilve.Position = paikka;
207        pilve.Image = pilvi;
208        pilve.CollisionIgnoreGroup = 1;
209        Add(pilve);
210        pilve.Restitution = 0;
211        pilve.Tag = "Maa";
212    }
213
214    void LiikutaPelaajaa(PlatformCharacter pelaaja, double nopeus)
215    {
216        pelaaja.Walk(nopeus);
217
218    }
219
220    void Hyppaa(PlatformCharacter pelaaja)
221    {
222        if (Laskuri < 5)
223        { pelaaja.Jump(400); }
224        else {
225            if (Hyppy < 3) { pelaaja.ForceJump(500); Hyppy++; }
226            else { }
227        }
228    }
229    void Doorugali(Vector paikka, double leveys, double korkeus)
230    {
231        PhysicsObject doorug = PhysicsObject.CreateStaticObject(leveys, korkeus);
232        doorug.Position = paikka;
233        doorug.Image = doorugk;
234        doorug.CollisionIgnoreGroup = 2;
235        Add(doorug, -1);
236        doorug.Tag = "Ovi" ;
237
238    }
239    void Doorali(Vector paikka, double leveys, double korkeus)
240    {
241        PhysicsObject door = PhysicsObject.CreateStaticObject(leveys, korkeus);
242        door.Position = paikka;
243        door.Image = doork;
244        door.CollisionIgnoreGroup = 2;
245        Add(door, -1);
246        door.Tag = "Ovi";
247
248    }
249    void Coins(Vector paikka, double leveys, double korkeus)
250    {
251        PhysicsObject Coin = PhysicsObject.CreateStaticObject(leveys, korkeus);
252        Coin.Position = paikka;
253        Coin.Image = coin;
254        Coin.CollisionIgnoreGroup = 1;
255        Coin.Tag = "Kolikko";
256        Add(Coin, -1);
257    }
258
259
260    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
261    {
262        ammus.Destroy();
263        if (kohde.Tag == "Vihu") { kohde.Destroy(); }
264    }
265    void AmmuAseella(PlatformCharacter pelaaja)
266    {
267        PhysicsObject ammus = pelaaja.Weapon.Shoot();
268
269        if (ammus != null)
270        {
271            //ammus.Size *= 3;
272            //ammus.Image = ...
273            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
274        }
275    }
276    void SaaRahaa(PhysicsObject Pelaaja, PhysicsObject Coin)
277    {
278        Laskuri++;
279        Coin.Destroy();
280    }
281    void Portal(Vector paikka, double leveys, double korkeus)
282    {
283        PhysicsObject portal = PhysicsObject.CreateStaticObject(leveys, korkeus);
284        portal.Position = paikka;
285        portal.Image = portalk;
286        portal.CollisionIgnoreGroup = 1;
287        portal.Tag = "Portaali";
288        Add(portal, 3);
289
290
291    }
292    void KaikkiKeratty()
293    {
294        MessageDisplay.Add("Jee.");
295
296    }
297    void LisaaHyppyja(PhysicsObject Pelaaja, PhysicsObject Maa)
298    {
299        if(Hyppy < 3)
300        { }
301        else
302        { Hyppy = 0; }
303    }
304
305    void OsuuPortaaliin(PhysicsObject Pelaaja, PhysicsObject Portaali)
306    {
307        kenttaNro++;
308        ClearAll();
309        SeuraavaKentta();
310    }
311    void Ohno(PhysicsObject Pelaaja, PhysicsObject Nelio)
312    {
313        Nelio.Destroy();
314        elamaLaskuri.Value -= 1;
315
316        }
317    void LuoElamaLaskuri()
318    {
319        elamaLaskuri = new DoubleMeter(3);
320        elamaLaskuri.MaxValue = 3;
321        elamaLaskuri.LowerLimit += ElamaLoppui;
322
323        ProgressBar elamaPalkki = new ProgressBar(300, 100);
324        elamaPalkki.X = Screen.Left + 150;
325        elamaPalkki.Y = Screen.Top - 40;
326        elamaPalkki.BindTo(elamaLaskuri);
327
328        elamaPalkki.Image = LoadImage("Health Bar empty");
329        elamaPalkki.BarImage = LoadImage("Health Bar");
330
331        Add(elamaPalkki);
332    }
333
334    void ElamaLoppui()
335    {
336        MultiSelectWindow alkuValikko = new MultiSelectWindow("GameOver", "Lopeta");
337        Add(alkuValikko);
338
339        alkuValikko.AddItemHandler(0, Exit);
340    }
341    }
342
343
344
Note: See TracBrowser for help on using the repository browser.