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

Revision 9347, 6.2 KB checked in by npo17_81, 4 years ago (diff)

Linnan alku

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
25
26
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
53        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
54        Level.CreateBorders();
55        Level.Background.Image = taustakuva;
56    }
57
58
59
60
61
62    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
63    {
64        pelaaja1 = new Pelaaja(leveys, korkeus);
65        pelaaja1.Position = paikka;
66        pelaaja1.Mass = 4.0;
67        pelaaja1.Image = pelaajanKuva;
68
69        AddCollisionHandler(pelaaja1, "vihu", Tormays);
70        AddCollisionHandler(pelaaja1, "piikki", Kuole);
71
72        Add(pelaaja1);
73    }
74    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
75    {
76        PlatformCharacter vihollinen = new PlatformCharacter(leveys, korkeus);
77        vihollinen.Position = paikka;
78        vihollinen.Mass = 4.5;
79        vihollinen.Image = vihollinenkuva;
80        vihollinen.Tag = "vihu";
81        Add(vihollinen);
82
83        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
84        tasoAivot.Speed = 15;
85
86        vihollinen.Brain = tasoAivot;
87
88    }
89
90    void Tormays(PhysicsObject pelaaja, PhysicsObject vihollinen)
91    {
92        int pMaxMaara = 200;
93
94        ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("veri"), pMaxMaara);
95        rajahdys.MinScale = 2.0;
96        rajahdys.MaxScale = 10.0;
97        rajahdys.MinLifetime = 0.3;
98        rajahdys.MaxLifetime = 0.6;
99        rajahdys.MinAcceleration = 0.2;
100        rajahdys.MaxAcceleration = 0.8;
101
102
103        Add(rajahdys);
104
105        double x = pelaaja.X;
106        double y = pelaaja.Y;
107        int pMaara = 50;
108        // "Käynnistetään" räjähdys
109        rajahdys.AddEffect(x, y, pMaara);
110        if (pelaaja.Bottom >= vihollinen.Top) { vihollinen.Destroy(); return; }
111        if (vihollinen.Tag.Equals("piikki"))
112        {
113            pelaaja.Destroy();
114        }
115        (pelaaja as Pelaaja).Elamalaskuri.AddValue(-1);
116
117
118    }
119
120    void Kuole(PhysicsObject pelaaja, PhysicsObject kohde)
121    {
122
123
124        int pMaxMaara = 200;
125
126        ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("veri"), pMaxMaara);
127        rajahdys.MinScale = 2.0;
128        rajahdys.MaxScale = 10.0;
129        rajahdys.MinLifetime = 0.3;
130        rajahdys.MaxLifetime = 0.6;
131        rajahdys.MinAcceleration = 0.2;
132        rajahdys.MaxAcceleration = 0.8;
133
134
135        Add(rajahdys);
136
137        double x = pelaaja.X;
138        double y = pelaaja.Y;
139        int pMaara = 50;
140        // "Käynnistetään" räjähdys
141        rajahdys.AddEffect(x, y, pMaara);
142        if (kohde.Tag.Equals("piikki"))
143        {
144            pelaaja.Destroy();
145        }
146
147
148
149
150    }
151    void LisaaNappaimet()
152    {
153        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
154        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
155
156        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
157        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
158        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
159
160        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
161
162
163
164        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
165        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
166        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
167
168
169    }
170
171    void Liikuta(PlatformCharacter hahmo, double nopeus)
172    {
173        hahmo.Walk(nopeus);
174    }
175
176    void Hyppaa(PlatformCharacter hahmo, double nopeus)
177    {
178        hahmo.Jump(nopeus);
179    }
180
181    void Lisaapalikka1(Vector paikka, double leveys, double korkeus)
182    {
183        PhysicsObject palikka1 = new PhysicsObject(50.0, 50.0);
184        palikka1.Position = paikka;
185        palikka1.Mass = 4.0;
186        palikka1.Image = palikkakuva;
187
188        Add(palikka1);
189    }
190    void Lisaapalikka2(Vector paikka, double leveys, double korkeus)
191    {
192        PhysicsObject palikka2 = PhysicsObject.CreateStaticObject(40.0, 15.0);
193        palikka2.Position = paikka += new Vector(0, 8);
194
195        palikka2.Image = palikkakuva2;
196
197        Add(palikka2);
198    }
199    void Lisaapalikka3(Vector paikka, double leveys, double korkeus)
200    {
201        PhysicsObject palikka3 = PhysicsObject.CreateStaticObject(40.0, 33.0);
202        palikka3.Position = paikka += new Vector(-0, 2);
203
204        palikka3.Image = palikkakuva3;
205        palikka3.Tag = "piikki";
206        Add(palikka3);
207    }
208    void Lisaapalikka4(Vector paikka, double leveys, double korkeus)
209    {
210        PhysicsObject palikka4 = PhysicsObject.CreateStaticObject(50.0, 50.0);
211        palikka4.Position = paikka;
212       
213        palikka4.Image = palikkakuva4;
214
215        Add(palikka4);
216    }
217}
Note: See TracBrowser for help on using the repository browser.