source: 2015/24/OskariL/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 5996

Revision 5996, 9.8 KB checked in by oslahtin, 5 years ago (diff)
Line 
1    using Jypeli;
2    using Jypeli.Controls;
3    using Jypeli.Widgets;
4    using Jypeli.Effects;
5    using Jypeli.Content;
6    using Jypeli.Assets;
7    using Jypeli.GameObjects;
8    public class Tasohyppelypeli1 : PhysicsGame
9{
10    const double nopeus = 10000;
11    const double hyppyNopeus = 750;
12    const int RUUDUN_KOKO = 40;
13    PlatformCharacter pelaaja1;
14    PlatformCharacter pelaaja2;
15
16    Image pelaajanKuva = LoadImage("Pulla");
17    Image pelaajan2Kuva = LoadImage("putin kännetty");
18    Image tahtiKuva = LoadImage("pacman");
19    Image parsakaaliKuva = LoadImage("parsakaali");
20    Image samppanjaKuva = LoadImage("samppanja");
21
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23    IntMeter pisteLaskuri;
24
25    bool peliKaynnissa = false;
26
27    Timer liikutusajastin;
28
29    EasyHighScore topLista = new EasyHighScore();
30
31
32    public override void Begin()
33    {
34
35        ClearAll();
36
37
38        Gravity = new Vector(0, -1900);
39
40        SetWindowSize((int)(Screen.Width), (int)Screen.Height);
41
42        LuoKentta();
43        LisaaNappaimet();
44        LuoPistelaskuri();
45
46        Camera.Follow(pelaaja1);
47        Camera.ZoomFactor = 2;
48        Camera.StayInLevel = true;
49
50       liikutusajastin = new Timer();
51        liikutusajastin.Interval = 0.01;
52        liikutusajastin.Timeout += delegate
53        {
54            SiirraPelaajaaOikeammalle(pelaaja1);
55            SiirraPelaajaaOikeammalle(pelaaja2);
56        };
57       liikutusajastin.Start();
58
59        peliKaynnissa = true;
60
61
62    }
63    void SiirraPelaajaaVasemmalle(PlatformCharacter hahmo)
64    {
65        hahmo.Push(new Vector(nopeus, 0.0));
66    }
67    void SiirraPelaajaaOikeammalle(PlatformCharacter hahmo)
68    {
69        hahmo.Push(new Vector(nopeus, 0.0));
70
71    }
72    void LuoKentta()
73    {
74        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kartta");
75        ruudut.SetTileMethod(Color.Black, LisaaTaso);
76        //ruudut.SetTileMethod('*', LisaaTahti);
77        ruudut.SetTileMethod(Color.Red, LisaaPelaaja);
78        ruudut.SetTileMethod(Color.Cyan, LisaaVihollinen);
79        ruudut.SetTileMethod(Color.Orange, LisaaPahis);
80        ruudut.SetTileMethod(Color.YellowGreen, LuoParsakaali);
81        ruudut.SetTileMethod(Color.Gold, LisaaPommi);
82        ruudut.SetTileMethod(Color.DarkAzure, LisaaPelaaja2);
83        ruudut.SetTileMethod(Color.Azure, LisaaSamppanja);
84        ruudut.Optimize(Color.Black);
85        ruudut.Execute(20, 20);
86   
87        Level.CreateLeftBorder();
88        Level.CreateTopBorder();
89        Level.CreateBottomBorder();
90        PhysicsObject oikeaReuna = Level.CreateRightBorder();
91        oikeaReuna.Tag = "oikea";
92
93        Level.Background.CreateGradient(Color.Aqua, Color.Azure);
94    }
95
96    void LisaaTaso(Vector paikka, double leveys, double korkeus)
97    {
98        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
99        taso.Position = paikka;
100        taso.Color = new Color(4, 146, 208);
101        taso.Tag = "seina";
102       
103        Add(taso);
104    }
105
106    void LisaaTahti(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
109        tahti.IgnoresCollisionResponse = true;
110        tahti.Position = paikka;
111        tahti.Image = tahtiKuva;
112        tahti.Tag = "tahti";
113        Add(tahti);
114    }
115    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
116    {
117       
118       
119       
120        ammus.Destroy();
121    }
122    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
123    {
124        pelaaja1 = new PlatformCharacter(leveys, korkeus);
125        pelaaja1.Position = paikka;
126        pelaaja1.Mass = 3.25;
127        pelaaja1.Image = pelaajanKuva;
128        AddCollisionHandler(pelaaja1, "seina", TormaaTasoon);
129        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
130        AddCollisionHandler(pelaaja1, "vihu", TormaaTasoon);
131        AddCollisionHandler(pelaaja1, "oikea", TormaaOikeaanReunaan);
132        AddCollisionHandler(pelaaja1, "pommi", Rajahdys);
133        AddCollisionHandler(pelaaja1, "samppanja", TormaaSamppanjaan);
134        pelaaja1.Tag = "pelaaja1";
135        Add(pelaaja1);
136
137    }
138    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
139    {
140       
141        pelaaja2 = new PlatformCharacter(leveys, korkeus);
142        pelaaja2.Position = paikka;
143        pelaaja2.Mass = 3.25;
144        pelaaja2.Image = pelaajan2Kuva;
145        AddCollisionHandler(pelaaja2, "seina", TormaaTasoon);
146        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
147        AddCollisionHandler(pelaaja2, "vihu", TormaaTasoon);
148        AddCollisionHandler(pelaaja2, "oikea", TormaaOikeaanReunaan);
149        AddCollisionHandler(pelaaja2, "pommi", Rajahdys);
150        AddCollisionHandler(pelaaja2, "samppanja", TormaaSamppanjaan);
151
152        Add(pelaaja2);
153
154
155
156
157
158    }
159    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
160    {
161        PhysicsObject vihollinen = new PhysicsObject(leveys, korkeus);
162        vihollinen.Color = Color.Azure;
163        vihollinen.Shape = Shape.Octagon;
164        vihollinen.Position = paikka;
165        vihollinen.IgnoresGravity = true;
166        vihollinen.CanRotate = true;
167
168        Add(vihollinen);
169
170    }
171    void LisaaPommi(Vector paikka, double leveys, double korkeus)
172    {
173        PhysicsObject pommi = new PhysicsObject(leveys, korkeus);
174        pommi.Color = Color.Black;
175        pommi.Shape = Shape.Triangle;
176        pommi.Position = paikka;
177        pommi.IgnoresGravity = true;
178        pommi.CanRotate = true;
179        pommi.Tag = "pommi";
180
181        Add(pommi);
182
183
184    }
185    void LisaaPahis(Vector paikka, double leveys, double korkeus)
186    {
187
188        PhysicsObject pahis = new PhysicsObject(leveys, korkeus);
189        pahis.Color = Color.DarkRed;
190        pahis.Shape = Shape.Diamond;
191        pahis.Position = paikka;
192        pahis.IgnoresGravity = true;
193        pahis.CanRotate = true;
194        pahis.Oscillate(new Vector(0, 1), korkeus * 1.5, 0.3);
195
196        Add(pahis);
197
198    }
199    void LuoParsakaali(Vector paikka, double leveys, double korkeus)
200    {
201        PhysicsObject parsakaali = PhysicsObject.CreateStaticObject(leveys, korkeus);
202        parsakaali.IgnoresCollisionResponse = true;
203        parsakaali.Position = paikka;
204        parsakaali.Image = parsakaaliKuva;
205        parsakaali.Tag = "tahti";
206        Add(parsakaali);
207
208    }
209    void LisaaSamppanja(Vector paikka, double leveys, double korkeus)
210    {
211
212        PhysicsObject samppanja = PhysicsObject.CreateStaticObject(leveys, korkeus);
213        samppanja.IgnoresCollisionResponse = true;
214        samppanja.Position = paikka;
215        samppanja.Image = samppanjaKuva;
216        samppanja.Tag = "samppanja";
217        Add(samppanja);
218
219
220    }
221    void LisaaNappaimet()
222    {
223
224        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
225        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
226        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
227        Keyboard.Listen(Key.Space, ButtonState.Pressed, Begin, "Aloita alusta");
228
229        Keyboard.Listen(Key.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
230        Keyboard.Listen(Key.Space, ButtonState.Pressed, Begin, "Aloita alusta");
231        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
232    }
233    void Liikuta(PlatformCharacter hahmo, double nopeus)
234    {
235        hahmo.Walk(nopeus);
236    }
237    void Hyppaa(PlatformCharacter hahmo, double nopeus)
238    {
239        hahmo.ForceJump(nopeus);
240    }
241    void TormaaParsakaaliin(PhysicsObject hahmo, PhysicsObject tahti)
242    {
243        maaliAani.Play();
244        pisteLaskuri.Value += 3;
245        MessageDisplay.Add("Popping-whirling!!!");
246        tahti.Destroy();
247    }
248
249    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject parsakaali)
250   {
251       maaliAani.Play();
252       pisteLaskuri.Value += 1;
253       MessageDisplay.Add("Jaa.");
254       parsakaali.Destroy();
255    }
256    void LuoPistelaskuri()
257    {
258        pisteLaskuri = new IntMeter(0);
259
260        Label pisteNaytto = new Label();
261        pisteNaytto.X = Screen.Left + 100;
262        pisteNaytto.Y = Screen.Top - 100;
263        pisteNaytto.TextColor = Color.Black;
264        pisteNaytto.Color = Color.Transparent;
265        pisteNaytto.Title = "Pisteet:";
266        pisteNaytto.BindTo(pisteLaskuri);
267        Add(pisteNaytto);
268    }
269
270    void TormaaTasoon(PhysicsObject tormaaja, PhysicsObject kohde)
271   {
272       if (peliKaynnissa)
273       {
274           
275   //       MessageDisplay.Add("Kuolit! :(");
276   //       Keyboard.Disable(Key.Up);
277   //       liikutusajastin.Stop();
278   //       peliKaynnissa = false;
279   //       Begin();
280       }
281 
282     
283   }
284
285    void TormaaOikeaanReunaan(PhysicsObject tormaaja, PhysicsObject kohde)
286    {
287        if (pisteLaskuri.Value > 1500)
288        {
289            topLista.Show();
290            MessageDisplay.Add("Pääsit kentän läpi");
291            liikutusajastin.Stop();
292            pisteLaskuri.Value += 10;
293            Begin();
294        }
295        else if (pisteLaskuri.Value < 1500)
296        {
297            topLista.Show();
298            MessageDisplay.Add("Hävisit! :)");
299            Begin();
300
301        }
302    }
303    void TormaaSamppanjaan(PhysicsObject tormaaja, PhysicsObject samppanja)
304    {
305        MessageDisplay.Add("Samppanjaa!!! =]");
306        pisteLaskuri.Value += 15;
307        samppanja.Destroy();
308    }
309    void Rajahdys(PhysicsObject hahmo, PhysicsObject
310        pommi)
311    {
312        Explosion rajahdys = new Explosion(100);
313        rajahdys.Position = pommi.Position;
314        rajahdys.Speed = 150.0;
315        rajahdys.Force = 32;
316        rajahdys.ShockwaveColor = new Color(4, 140, 228);
317        Add(rajahdys);
318
319    }
320
321
322}
Note: See TracBrowser for help on using the repository browser.