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

Revision 8447, 7.5 KB checked in by nupeohje, 2 years ago (diff)

Tasot pelaaja, vihollisia,

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.Execute();
37        Gravity = new Vector(0.0, -800.0);
38        Ohjaimet(true);
39    }
40    void LuoPalikka(Vector paikka, double leveys, double korkeus)
41    {
42        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
43        palikka.Position = paikka;
44        palikka.Shape = Shape.Rectangle;
45        palikka.Tag = "palikka";
46        palikka.Color = Color.Gray;
47        palikka.CollisionIgnoreGroup = 1;
48        Add(palikka);
49    }
50    void LuoOvi(Vector paikka, double leveys, double korkeus)
51    {
52        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys +40, korkeus + 70);
53        ovi.Position = paikka;
54        ovi.Tag = "ovieteenpain";
55        Image ovikuva = LoadImage("door");
56        ovi.Image = ovikuva;
57        Add(ovi);
58    }
59    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
60    {
61        pelaaja = new PlatformCharacter(50, 60);
62        pelaaja.Restitution = 0.4;
63        pelaajahahmo = LoadImage("MAAAN");
64        pelaaja.Position = paikka;
65        Add(pelaaja);
66        AddCollisionHandler(pelaaja, "lepakko", tormaaLepakkoon);
67        AddCollisionHandler(pelaaja, "ovieteenpain", tormaaEtuOveen);
68        AddCollisionHandler(pelaaja, "boss", tormaaBossiin);
69        pelaaja.Image = pelaajahahmo;
70    }
71    void tormaaBossiin(PhysicsObject pelaaja, PhysicsObject boss)
72    {
73        pelaaja.Destroy();
74    }
75    void tormaaEtuOveen(PhysicsObject pelaaja, PhysicsObject ovi)
76
77    {
78        if (KENTTA < 11)
79        {
80            KENTTA++;
81        ClearAll();
82        LuoMaailma();
83    }
84    }
85    void tormaaLepakkoon(PhysicsObject pelaaja, PhysicsObject lepakko)
86    {
87        pelaaja.Destroy();
88
89    }
90    void LiikutaPelaajaa(Vector vektori)
91    {
92        pelaaja.Push(vektori);
93    }
94    void Ohjaimet(bool tasoloikkahahmo)
95    {
96        if (tasoloikkahahmo == true)
97        {
98            Keyboard.Listen(Key.A, ButtonState.Down, Kavele, null, -300.0);
99            Keyboard.Listen(Key.D, ButtonState.Down, Kavele, null, 300.0);
100            Keyboard.Listen(Key.W, ButtonState.Down, Hyppaa, null);
101            Keyboard.Listen(Key.E, ButtonState.Down, HeitaKranaatti, null, pelaaja);
102        } 
103        else
104        {
105            Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-30000, 0));
106            Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(30000, 0));
107            Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 1000));
108            Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
109            Keyboard.Listen(Key.E, ButtonState.Down, HeitaKranaatti, null, pelaaja);
110        }
111        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
112       
113    }
114    void Kavele(double suunta)
115    {
116        pelaaja.Walk(suunta);
117    }
118    void Hyppaa()
119    {
120        pelaaja.Jump(600);
121    }
122    void LuoLepakko(Vector paikka, double leveys, double korkeus)
123    {
124        PhysicsObject lepakko = new PhysicsObject(leveys *5.0, korkeus);
125        lepakko.Position = paikka;
126        lepakko.Tag = "lepakko";
127        Image lepakkonKuva = LoadImage("BATT");
128        lepakko.Image = lepakkonKuva;
129        Add(lepakko);
130
131        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(leveys);
132        labyrinttiAivot.Speed = 100.0;
133        labyrinttiAivot.LabyrinthWallTag = "palikka";
134
135        lepakko.Brain = labyrinttiAivot;
136
137    }
138    void HeitaKranaatti(PlatformCharacter pelaaja)
139    {
140        Grenade kranu = new Grenade(4.0);
141        pelaaja.Throw(kranu, Angle.FromDegrees(30), 10000);
142        kranu.Explosion.AddShockwaveHandler("lepakko", KranaattiOsui);
143       
144    }
145    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
146    {
147        rajahdyksenKohde.Destroy();
148    }
149    void LuoExit(Vector paikka, double leveys, double korkeus)
150    {
151        PhysicsObject exit = PhysicsObject.CreateStaticObject(leveys+ 40, korkeus+60);
152        exit.Position = paikka;
153
154        exit.Tag = "exit";
155        exit.Color = Color.Brown;
156        Image exitkuva = LoadImage("door");
157        exit.Image = exitkuva;
158       
159        Add(exit);
160    }
161    void LuoHaamu(Vector paikka, double leveys, double korkeus)
162    {
163        PhysicsObject haamu = new PhysicsObject(leveys +40.0, korkeus +50.0);
164        haamu.Position = paikka;
165        Image haamunKuva = LoadImage("gost");
166        haamu.Image = haamunKuva;
167        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
168        seuraajanAivot.Speed = 200;                 
169        seuraajanAivot.DistanceFar = 1300;           
170        seuraajanAivot.DistanceClose = 10;         
171        //seuraajanAivot.StopWhenTargetClose = true; 
172        haamu.Brain = seuraajanAivot;
173        haamu.CollisionIgnoreGroup = 1;
174
175        Add(haamu);
176
177    }
178    void LuoBoss(Vector paikka, double leveys, double korkeus)
179    {
180        PhysicsObject boss = new PhysicsObject(leveys + 60.0, korkeus + 70.0);
181        boss.Position = paikka;
182        boss.Tag = "boss";
183        Image bossKuva = LoadImage("ghost");
184        boss.Image = bossKuva;
185        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
186        seuraajanAivot.Speed = 60;
187        seuraajanAivot.DistanceFar = 1300;
188        seuraajanAivot.DistanceClose = 10;
189        boss.Brain = seuraajanAivot;
190        boss.CollisionIgnoreGroup = 1;
191       
192       
193
194        Add(boss);
195    }
196    void LuoBox(Vector paikka, double leveys, double korkeus)
197    {
198        PhysicsObject box = new PhysicsObject(leveys +30.0, korkeus +18.0);
199        box.Position = paikka;
200        box.Tag = "box";
201        Image boxKuva = LoadImage("crate");
202        box.Image = boxKuva;
203        Add(box);
204    }
205    void LuoLiiku(Vector paikka, double leveys, double korkeus)
206    {
207        PhysicsObject move = new PhysicsObject(leveys +20, korkeus +20);
208        move.Position = paikka;
209        move.CanRotate = false;
210        move.Tag = "move";
211        Image moveKuva = LoadImage("movebox");
212        move.Image = moveKuva;
213        PathFollowerBrain polkuaivo = new PathFollowerBrain();
214        List<Vector> polku = new List<Vector>();
215       
216        polku.Add(paikka + new Vector(-100, 0));
217        polku.Add(paikka + new Vector(500, 0));
218       
219        polkuaivo.Path = polku;
220        polkuaivo.Active = true;
221        move.Brain = polkuaivo;
222        polkuaivo.Loop = true;
223        move.IgnoresGravity = true;
224        Add(move);
225    }
226}
227
Note: See TracBrowser for help on using the repository browser.