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

Revision 8470, 10.3 KB checked in by nupeohje, 4 years ago (diff)

Loppu, Kuolema

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