source: 2017/31/JuuseH/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 9389

Revision 9389, 9.0 KB checked in by npo17_81, 23 months ago (diff)

Linna ohi, bossi edessä

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 425;
13    const int RUUDUN_KOKO = 40;
14
15    Pelaaja pelaaja1;
16
17    Image pelaajanKuva = LoadImage("viikinki");
18    Image palikkakuva = LoadImage("maa");
19    Image palikkakuva2 = LoadImage("puu");
20    Image taustakuva = LoadImage("tausta");
21    Image palikkakuva3 = LoadImage("piikit");
22    Image vihollinenkuva = LoadImage("pahis");
23    Image palikkakuva4 = LoadImage("kivi");
24    Image palikkakuva6 = LoadImage("kivipiikit");
25    Image vihollinenkuva2 = LoadImage("jousi");
26    Image nuolikuva = LoadImage("Arrow");
27    public override void Begin()
28    {
29        Gravity = new Vector(0, -1000);
30
31        LuoKentta();
32        LisaaNappaimet();
33
34
35        Camera.StayInLevel = true;
36        Camera.Follow(pelaaja1);
37
38        Level.Background.TileToLevel();
39
40    }
41
42    void LuoKentta()
43    {
44        TileMap kentta = TileMap.FromLevelAsset("kentta1");
45
46        kentta.SetTileMethod('#', Lisaapalikka1);
47        kentta.SetTileMethod('N', LisaaPelaaja);
48        kentta.SetTileMethod('M', Lisaapalikka2);
49        kentta.SetTileMethod('A', Lisaapalikka3);
50        kentta.SetTileMethod('V', LisaaVihollinen);
51        kentta.SetTileMethod('K', Lisaapalikka4);
52        kentta.SetTileMethod('P', Lisaapalikka5);
53        kentta.SetTileMethod('R', Lisaapalikka6);
54        kentta.SetTileMethod('J', LisaaVihollinen2);
55
56
57        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
58        Level.CreateBorders();
59        Level.Background.Image = taustakuva;
60    }
61
62
63
64
65
66    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
67    {
68        pelaaja1 = new Pelaaja(leveys, korkeus);
69        pelaaja1.Position = paikka;
70        pelaaja1.Mass = 4.0;
71        pelaaja1.Image = pelaajanKuva;
72        pelaaja1.Tag = "pelaaja1"; 
73
74        AddCollisionHandler(pelaaja1, "vihu", Tormays);
75        AddCollisionHandler(pelaaja1, "piikki", Kuole);
76
77        Add(pelaaja1);
78    }
79    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
80    {
81        Vihu vihollinen = new Vihu(leveys, korkeus);
82        vihollinen.Position = paikka;
83        vihollinen.Mass = 4.5;
84        vihollinen.Image = vihollinenkuva;
85        vihollinen.Tag = "vihu";
86        Add(vihollinen);
87
88        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
89        tasoAivot.Speed = 15;
90
91        vihollinen.Brain = tasoAivot;
92
93    }
94    void LisaaVihollinen2(Vector paikka, double leveys, double korkeus)
95    {
96        Vihu vihollinen2 = new Vihu(leveys, korkeus);
97        vihollinen2.Position = paikka;
98        vihollinen2.Mass = 4.5;
99        vihollinen2.Image = vihollinenkuva2;
100
101       
102        vihollinen2.Tag = "vihu";
103
104        AssaultRifle vihollinen2Ase = new AssaultRifle(10, 10);
105        vihollinen2Ase.ProjectileCollision = AmmusOsui;
106
107        vihollinen2.Weapon = vihollinen2Ase; 
108       
109        Timer aika = new Timer();
110        aika.Interval = 2.0;
111        aika.Timeout += delegate {
112            vihollinen2.Weapon.Power.SetValue(30.0);
113            vihollinen2.Turn(Direction.Left);
114            PhysicsObject ammus = vihollinen2Ase.Shoot();
115            ammus.Image = nuolikuva; 
116        };
117        vihollinen2.Weapon.IsVisible = false;
118        aika.Start();
119
120        vihollinen2.Elamalaskuri.LowerLimit += delegate
121        {
122            aika.Stop();
123
124        };
125
126       
127        Add(vihollinen2);
128    }
129    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
130    {
131        ammus.Destroy();
132        if ((kohde.Tag.Equals("pelaaja1"))){
133            int pMaxMaara = 200;
134            ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("veri"), pMaxMaara);
135            rajahdys.MinScale = 2.0;
136            rajahdys.MaxScale = 10.0;
137            rajahdys.MinLifetime = 0.3;
138            rajahdys.MaxLifetime = 0.6;
139            rajahdys.MinAcceleration = 0.2;
140            rajahdys.MaxAcceleration = 0.8;
141
142
143            Add(rajahdys);
144
145            double x = kohde.X;
146            double y = kohde.Y;
147            int pMaara = 50;
148            // "Käynnistetään" räjähdys
149            rajahdys.AddEffect(x, y, pMaara);
150
151            (kohde as Pelaaja).Elamalaskuri.AddValue(-1);
152        }
153    }
154    void Tormays(PhysicsObject pelaaja, PhysicsObject vihollinen)
155    {
156        int pMaxMaara = 200;
157
158        ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("veri"), pMaxMaara);
159        rajahdys.MinScale = 2.0;
160        rajahdys.MaxScale = 10.0;
161        rajahdys.MinLifetime = 0.3;
162        rajahdys.MaxLifetime = 0.6;
163        rajahdys.MinAcceleration = 0.2;
164        rajahdys.MaxAcceleration = 0.8;
165
166
167
168        Add(rajahdys);
169
170        double x = pelaaja.X;
171        double y = pelaaja.Y;
172        int pMaara = 50;
173        // "Käynnistetään" räjähdys
174        rajahdys.AddEffect(x, y, pMaara);
175        if (pelaaja.Bottom >= vihollinen.Top)
176        {
177
178            (vihollinen as Vihu).Elamalaskuri.AddValue(-1);
179            return;
180        }
181        if (vihollinen.Tag.Equals("piikki"))
182        {
183            pelaaja.Destroy();
184        }
185        (pelaaja as Pelaaja).Elamalaskuri.AddValue(-1);
186
187
188    }
189
190    void Kuole(PhysicsObject pelaaja, PhysicsObject kohde)
191    {
192
193
194        int pMaxMaara = 200;
195
196        ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("veri"), pMaxMaara);
197        rajahdys.MinScale = 2.0;
198        rajahdys.MaxScale = 10.0;
199        rajahdys.MinLifetime = 0.3;
200        rajahdys.MaxLifetime = 0.6;
201        rajahdys.MinAcceleration = 0.2;
202        rajahdys.MaxAcceleration = 0.8;
203
204
205        Add(rajahdys);
206
207        double x = pelaaja.X;
208        double y = pelaaja.Y;
209        int pMaara = 50;
210        // "Käynnistetään" räjähdys
211        rajahdys.AddEffect(x, y, pMaara);
212        if (kohde.Tag.Equals("piikki"))
213        {
214            pelaaja.Destroy();
215        }
216
217
218
219
220    }
221    void LisaaNappaimet()
222    {
223        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
224        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
225
226        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
227        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
228        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
229
230        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
231
232
233
234        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
235        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
236        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
237
238
239    }
240
241    void Liikuta(PlatformCharacter hahmo, double nopeus)
242    {
243        hahmo.Walk(nopeus);
244    }
245
246    void Hyppaa(PlatformCharacter hahmo, double nopeus)
247    {
248        hahmo.Jump(nopeus);
249    }
250
251    void Lisaapalikka1(Vector paikka, double leveys, double korkeus)
252    {
253        PhysicsObject palikka1 = new PhysicsObject(50.0, 50.0);
254        palikka1.Position = paikka;
255        palikka1.Mass = 4.0;
256        palikka1.Image = palikkakuva;
257
258        Add(palikka1);
259    }
260    void Lisaapalikka2(Vector paikka, double leveys, double korkeus)
261    {
262        PhysicsObject palikka2 = PhysicsObject.CreateStaticObject(40.0, 15.0);
263        palikka2.Position = paikka += new Vector(0, 8);
264
265        palikka2.Image = palikkakuva2;
266
267        Add(palikka2);
268    }
269    void Lisaapalikka3(Vector paikka, double leveys, double korkeus)
270    {
271        PhysicsObject palikka3 = PhysicsObject.CreateStaticObject(40.0, 33.0);
272        palikka3.Position = paikka += new Vector(-0, 2);
273
274        palikka3.Image = palikkakuva3;
275        palikka3.Tag = "piikki";
276        Add(palikka3);
277    }
278    void Lisaapalikka4(Vector paikka, double leveys, double korkeus)
279    {
280        PhysicsObject palikka4 = PhysicsObject.CreateStaticObject(50.0, 50.0);
281        palikka4.Position = paikka;
282
283        palikka4.Image = palikkakuva4;
284
285        Add(palikka4);
286    }
287    void Lisaapalikka5(Vector paikka, double leveys, double korkeus)
288    {
289        PhysicsObject palikka5 = PhysicsObject.CreateStaticObject(50.0, 20.0);
290        palikka5.Position = paikka;
291        palikka5.Position = paikka += new Vector(5, 2);
292        palikka5.Y = palikka5.Y + 20;
293        palikka5.Image = palikkakuva4;
294       
295        Add(palikka5);
296    }
297    void Lisaapalikka6(Vector paikka, double leveys, double korkeus)
298    {
299        PhysicsObject palikka6 = PhysicsObject.CreateStaticObject(40.0, 30.0);
300        palikka6.Position = paikka;
301        palikka6.Position = paikka += new Vector(0, 0);
302        palikka6.Tag = "piikki";
303        palikka6.Image = palikkakuva6;
304
305        Add(palikka6);
306    }
307}
Note: See TracBrowser for help on using the repository browser.