source: 2017/23/OskariP/Chase/Chase/Chase/Chase.cs @ 8473

Revision 8473, 11.0 KB checked in by nupeohje, 3 years ago (diff)

Valmiina 1.0

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Chase : PhysicsGame
10{
11    int KENTTA = 1;
12    PlatformCharacter pelaaja;
13     Image pelaajahahmo;
14    public override void Begin()
15    {
16
17        LuoMaailma();
18       
19    }
20    void LuoMaailma()
21    {
22       
23        Level.Background.Image = LoadImage("wewqd");
24        Level.Background.FitToLevel();
25        Level.CreateBorders(0.4, true, Color.Gray);
26        TileMap ruudut = TileMap.FromLevelAsset("KENTTA" + KENTTA);
27        ruudut.SetTileMethod('#', LuoPalikka);
28        ruudut.SetTileMethod('P', LuoPelaaja);
29        ruudut.SetTileMethod('E', LuoLepakko);
30        ruudut.SetTileMethod('O', LuoOvi);
31        ruudut.SetTileMethod('o', LuoExit);
32        ruudut.SetTileMethod('A', LuoHaamu);
33        ruudut.SetTileMethod('H', LuoBoss);
34        ruudut.SetTileMethod('C', LuoBox);
35        ruudut.SetTileMethod('M', LuoLiiku);
36        ruudut.SetTileMethod('S', LuoLuuranko);
37        ruudut.SetTileMethod('K', LuoPiikki);
38        ruudut.SetTileMethod('T', LuoKumma);
39        ruudut.SetTileMethod('Z', LuoKeem);
40        ruudut.SetTileMethod('D', LuoSpiker);
41        ruudut.Execute();
42        Gravity = new Vector(0.0, -800.0);
43        Ohjaimet(true);
44    }
45    void LuoKeem(Vector paikka, double leveys, double korkeus)
46    {
47        PhysicsObject keem = new PhysicsObject(leveys + 60, korkeus + 60);
48        keem.Position = paikka;
49        Image KeemKuva = LoadImage("Keem");
50        keem.Image = KeemKuva;
51        Add(keem);
52    }
53    void LuoPalikka(Vector paikka, double leveys, double korkeus)
54    {
55        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
56        palikka.Position = paikka;
57        palikka.Shape = Shape.Rectangle;
58        palikka.Tag = "palikka";
59        palikka.Color = Color.Gray;
60        palikka.CollisionIgnoreGroup = 1;
61        Add(palikka);
62    }
63    void LuoOvi(Vector paikka, double leveys, double korkeus)
64    {
65        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys +40, korkeus + 70);
66        ovi.Position = paikka;
67        ovi.CollisionIgnoreGroup = 1;
68        ovi.Tag = "ovieteenpain";
69        Image ovikuva = LoadImage("door");
70        ovi.Image = ovikuva;
71        Add(ovi);
72    }
73    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
74    {
75        pelaaja = new PlatformCharacter(50, 60);
76        pelaaja.Restitution = 0.4;
77        pelaajahahmo = LoadImage("MAAAN");
78        pelaaja.Position = paikka;
79        Add(pelaaja);
80        AddCollisionHandler(pelaaja, "lepakko", tormaaLepakkoon);
81        AddCollisionHandler(pelaaja, "ovieteenpain", tormaaEtuOveen);
82        AddCollisionHandler(pelaaja, "boss", tormaaBossiin);
83        AddCollisionHandler(pelaaja, "skele", tormaaSkeleen);
84        AddCollisionHandler(pelaaja, "spike", tormaaSpikeen);
85        AddCollisionHandler(pelaaja, "kumma", tormaaKummaan);
86        AddCollisionHandler(pelaaja, "spiker", tormaaSpikeriin);
87        pelaaja.Image = pelaajahahmo;
88    }
89    void tormaaSpikeriin(PhysicsObject pelaaja, PhysicsObject spiker)
90    {
91        pelaaja.Destroy();
92    }
93    void tormaaSpikeen(PhysicsObject pelaaja, PhysicsObject spike)
94    {
95        pelaaja.Destroy();
96    }
97    void tormaaBossiin(PhysicsObject pelaaja, PhysicsObject boss)
98    {
99        pelaaja.Destroy();
100    }
101    void tormaaEtuOveen(PhysicsObject pelaaja, PhysicsObject ovi)
102
103    {
104        if (KENTTA < 25)
105        {
106            KENTTA++;
107        ClearAll();
108        LuoMaailma();
109    }
110    }
111    void tormaaLepakkoon(PhysicsObject pelaaja, PhysicsObject lepakko)
112    {
113        pelaaja.Destroy();
114
115    }
116    void tormaaSkeleen(PhysicsObject pelaaja, PhysicsObject skele)
117    {
118        pelaaja.Destroy();
119    }
120    void tormaaKummaan(PhysicsObject pelaaja, PhysicsObject kumma)
121    {
122        pelaaja.Destroy();
123    }
124    void LiikutaPelaajaa(Vector vektori)
125    {
126        pelaaja.Push(vektori);
127    }
128    void Ohjaimet(bool tasoloikkahahmo)
129    {
130        if (tasoloikkahahmo == true)
131        {
132            Keyboard.Listen(Key.A, ButtonState.Down, Kavele, null, -300.0);
133            Keyboard.Listen(Key.D, ButtonState.Down, Kavele, null, 300.0);
134            Keyboard.Listen(Key.W, ButtonState.Down, Hyppaa, null);
135            Keyboard.Listen(Key.E, ButtonState.Down, HeitaKranaatti, null, pelaaja);
136        } 
137        else
138        {
139            Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-30000, 0));
140            Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(30000, 0));
141            Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 1000));
142            Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
143            Keyboard.Listen(Key.E, ButtonState.Down, HeitaKranaatti, null, pelaaja);
144        }
145        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
146       
147    }
148    void Kavele(double suunta)
149    {
150        pelaaja.Walk(suunta);
151    }
152    void Hyppaa()
153    {
154        pelaaja.Jump(600);
155    }
156    void LuoLepakko(Vector paikka, double leveys, double korkeus)
157    {
158        PhysicsObject lepakko = new PhysicsObject(leveys *5.0, korkeus);
159        lepakko.Position = paikka;
160        lepakko.Tag = "lepakko";
161        Image lepakkonKuva = LoadImage("BATT");
162        lepakko.Image = lepakkonKuva;
163        Add(lepakko);
164
165        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(leveys);
166        labyrinttiAivot.Speed = 100.0;
167        labyrinttiAivot.LabyrinthWallTag = "palikka";
168
169        lepakko.Brain = labyrinttiAivot;
170
171    }
172    void HeitaKranaatti(PlatformCharacter pelaaja)
173    {
174        Grenade kranu = new Grenade(4.0);
175        pelaaja.Throw(kranu, Angle.FromDegrees(30), 10000);
176        kranu.Explosion.AddShockwaveHandler("lepakko", KranaattiOsui);
177        kranu.Explosion.AddShockwaveHandler("skele", KranaattiOsui);
178    }
179    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
180    {
181        rajahdyksenKohde.Destroy();
182    }
183    void LuoExit(Vector paikka, double leveys, double korkeus)
184    {
185        PhysicsObject exit = PhysicsObject.CreateStaticObject(leveys+ 40, korkeus+60);
186        exit.Position = paikka;
187        exit.CollisionIgnoreGroup = 1;
188        exit.Tag = "exit";
189        exit.Color = Color.Brown;
190        Image exitkuva = LoadImage("door");
191        exit.Image = exitkuva;
192        exit.IgnoresCollisionResponse = true;
193        Add(exit);
194    }
195    void LuoHaamu(Vector paikka, double leveys, double korkeus)
196    {
197        PhysicsObject haamu = new PhysicsObject(leveys +40.0, korkeus +50.0);
198        haamu.Position = paikka;
199        Image haamunKuva = LoadImage("gost");
200        haamu.Image = haamunKuva;
201        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
202        seuraajanAivot.Speed = 200;                 
203        seuraajanAivot.DistanceFar = 1300;           
204        seuraajanAivot.DistanceClose = 10;         
205        //seuraajanAivot.StopWhenTargetClose = true; 
206        haamu.Brain = seuraajanAivot;
207        haamu.CollisionIgnoreGroup = 1;
208
209        Add(haamu);
210
211    }
212    void LuoBoss(Vector paikka, double leveys, double korkeus)
213    {
214        PhysicsObject boss = new PhysicsObject(leveys + 60.0, korkeus + 70.0);
215        boss.Position = paikka;
216        boss.Tag = "boss";
217        Image bossKuva = LoadImage("ghost");
218        boss.Image = bossKuva;
219        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
220        seuraajanAivot.Speed = 52;
221        seuraajanAivot.DistanceFar = 1300;
222        seuraajanAivot.DistanceClose = 10;
223        boss.Brain = seuraajanAivot;
224        boss.CollisionIgnoreGroup = 1;
225       
226       
227
228        Add(boss);
229    }
230    void LuoBox(Vector paikka, double leveys, double korkeus)
231    {
232        PhysicsObject box = new PhysicsObject(leveys +30.0, korkeus +18.0);
233        box.Position = paikka;
234        box.Tag = "box";
235        Image boxKuva = LoadImage("crate");
236        box.Image = boxKuva;
237        Add(box);
238    }
239    void LuoLiiku(Vector paikka, double leveys, double korkeus)
240    {
241        PhysicsObject move = new PhysicsObject(leveys +60, korkeus +15);
242        move.Position = paikka;
243        move.CollisionIgnoreGroup = 1;
244        move.CanRotate = false;
245        move.Tag = "move";
246        Image moveKuva = LoadImage("movebox");
247        move.Image = moveKuva;
248        PathFollowerBrain polkuaivo = new PathFollowerBrain();
249        List<Vector> polku = new List<Vector>();
250       
251        polku.Add(paikka + new Vector(-300, 0));
252        polku.Add(paikka + new Vector(350, 0));
253       
254        polkuaivo.Path = polku;
255        polkuaivo.Active = true;
256        move.Brain = polkuaivo;
257        polkuaivo.Loop = true;
258        move.IgnoresGravity = true;
259        Add(move);
260    }
261    void LuoLuuranko(Vector paikka, double leveys, double korkeus)
262    {
263        PlatformCharacter skele = new PlatformCharacter(60.0, 70.0);
264        skele.Position = paikka;
265        skele.CanRotate = false;
266        skele.Tag = "skele";
267        Image skelekuva = LoadImage("skele");
268        skele.Image = skelekuva;
269        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
270        skele.Brain = tasoAivot;
271        tasoAivot.Speed = 150;
272
273        tasoAivot.FallsOffPlatforms = true;
274        tasoAivot.JumpSpeed = 700;
275        tasoAivot.TriesToJump = true;
276        Add(skele);
277    }
278    void LuoPiikki(Vector paikka, double leveys, double korkeus)
279    {
280        PhysicsObject spike = PhysicsObject.CreateStaticObject(leveys + 100, korkeus + 80);
281        spike.Position = paikka;
282        spike.Tag = "spike";
283        Image spikekuva = LoadImage("spike");
284        spike.Image = spikekuva;
285        Add(spike);
286    }
287    void LuoKumma(Vector paikka, double leveys, double korkeus)
288    {
289        PhysicsObject kumma = new PhysicsObject(leveys + 60.0, korkeus + 70.0);
290        kumma.Position = paikka;
291        kumma.Tag = "kumma";
292        Image kummaKuva = LoadImage("ghost");
293        kumma.Image = kummaKuva;
294        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
295        seuraajanAivot.Speed = 52;
296        seuraajanAivot.DistanceFar = 1300;
297        seuraajanAivot.DistanceClose = 10;
298        kumma.Brain = seuraajanAivot;
299        kumma.CollisionIgnoreGroup = 1;
300        Add(kumma);
301       
302    }
303    void LuoSpiker(Vector paikka, double leveys, double korkeus)
304    {
305        PlatformCharacter spiker = new PlatformCharacter(leveys + 100, korkeus + 80);
306        spiker.Position = paikka;
307        spiker.CanRotate = false;
308        spiker.Tag = "spiker";
309        Image spikerKuva = LoadImage("spike");
310        spiker.Image = spikerKuva;
311        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
312        spiker.Brain = tasoAivot;
313        tasoAivot.Speed = 120;
314        tasoAivot.FallsOffPlatforms = false;
315        Add(spiker);
316
317    }
318}
319
Note: See TracBrowser for help on using the repository browser.