source: 2014/26/UkkoK/TasoHyppelyUkkoK/TasoHyppelyUkkoK/TasoHyppelyUkkoK/TasoHyppelyUkkoK.cs @ 5103

Revision 5103, 8.7 KB checked in by ukviveka, 7 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class TasoHyppelyUkkoK : PhysicsGame
10{
11    const double nopeus = 500;
12    const double hyppyNopeus = 1200;
13    const int RUUDUN_KOKO = 100;
14
15    PlatformCharacter pelaaja1;
16    IntMeter kranuLaskuri;
17
18    //Image pelaajanKuva = LoadImage("sankari");
19   // Image tahtiKuva = LoadImage("tahti");
20    // Image aseenKuva = LoadImage("AK-47");
21    //Image moronKuva = LoadImage("Mörkö");
22    // Image ammuksenKuva = LoadImage("Luoti");
23    Image taustaKuva = LoadImage("Taustakuva3");
24    //Image Tie = LoadImage("Tie");
25    Image Pilvi = LoadImage("Pilvi");
26    Image Zeus = LoadImage("Zeus");
27    Image Salama = LoadImage("Salama");
28    Image Tyhjä = LoadImage("Tyhjä");
29    Image Pilvipullo = LoadImage("Pilvipullo");
30    Image rajahtavaPilvi = LoadImage("RäjähtäväPilvi");
31    Image Devil = LoadImage("Devil");
32    Image Kolikko = LoadImage("Kolikko");
33   // Image Dragon = LoadImage("Lohikäärme");
34    Image AmmoCrate = LoadImage("AmmoCrate");
35   
36
37    DoubleMeter elamaLaskuri;
38
39
40
41
42
43    SoundEffect maaliAani = LoadSoundEffect("maali");
44
45    PlasmaCannon pelaajan1Ase;
46
47    public override void Begin()
48    {
49        AloitaPeli();
50    }
51
52    void AloitaPeli()
53    {
54        ClearAll();
55        Gravity = new Vector(0, -1000);
56
57        LuoKentta();
58        LisaaNappaimet();
59        LuoElamaLaskuri();
60        LuoKranuLaskuri();
61
62        Camera.Follow(pelaaja1);
63        Camera.ZoomFactor = 1.0;
64        Camera.StayInLevel = true;
65    }
66
67    void LuoKentta()
68    {
69        TileMap kentta = TileMap.FromLevelAsset("kentta1");
70        kentta.SetTileMethod('#', LisaaTaso);
71        kentta.SetTileMethod('*', LisaaTahti);
72        kentta.SetTileMethod('P', LisaaPelaaja);
73        kentta.SetTileMethod('V', LisaaVihollinen);
74        //kentta.SetTileMethod('S', LisaaSeina);
75        kentta.SetTileMethod('L', LisaaLaatikko);
76        //LISÄÄ AMMUSLAATIKOT!!!
77        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
78        Level.CreateBorders();
79        Level.Background.CreateGradient(Color.Black, Color.Green);
80        Level.Background.Image = taustaKuva;
81    }
82
83    void LisaaTaso(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
86        taso.Position = paikka;
87        taso.Color = Color.DarkBlue;
88        taso.Image = Pilvi;
89        Add(taso);
90    }
91
92    void LisaaTahti(Vector paikka, double leveys, double korkeus)
93    {
94        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
95        tahti.IgnoresCollisionResponse = true;
96        tahti.Position = paikka;
97        tahti.Image = Kolikko;
98        tahti.Tag = "tahti";
99        Add(tahti);
100    }
101
102    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
103    {
104        pelaaja1 = new PlatformCharacter(leveys, korkeus);
105        pelaaja1.Position = paikka;
106        pelaaja1.Mass = 4.0;
107        pelaaja1.Image = Zeus;
108        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
109        AddCollisionHandler(pelaaja1, "vihollinen", TormaaViholliseen);
110        AddCollisionHandler(pelaaja1, "laatikko", TormaaLaatikkoon);
111
112        Add(pelaaja1);
113
114        pelaajan1Ase = new PlasmaCannon(90, 30);
115        pelaajan1Ase.Image = Tyhjä;
116
117        //Ammusten määrä aluksi:
118        pelaajan1Ase.Ammo.Value = 10;
119        pelaajan1Ase.Ammo.LowerLimit += AmmuksetLoppuu;
120       
121
122
123        //Mitä tapahtuu kun ammus osuu johonkin?
124        pelaajan1Ase.ProjectileCollision = AmmusOsui;
125
126        pelaaja1.Add(pelaajan1Ase);
127
128    }
129
130    void AmmuksetLoppuu()
131    {
132        MessageDisplay.Add("Ammukset loppuivat!");
133    }
134
135    void LisaaNappaimet()
136    {
137        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
138        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
139
140        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, -nopeus);
141        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
142        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
143        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
144        Keyboard.Listen(Key.G, ButtonState.Pressed, HeitaKranaatti, "Heitä kranaatti", pelaaja1);
145
146
147    }
148
149    void Liikuta(PlatformCharacter hahmo, double nopeus)
150    {
151        hahmo.Walk(nopeus);
152        pelaajan1Ase.AbsoluteAngle = hahmo.FacingDirection.Angle;
153    }
154
155    void Hyppaa(PlatformCharacter hahmo, double nopeus)
156    {
157        hahmo.Jump(nopeus);
158    }
159
160    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
161    {
162        maaliAani.Play();
163        MessageDisplay.Add("Sait kolikon!");
164        tahti.Destroy();
165    }
166    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
167    {
168        ammus.Destroy();
169
170        if (kohde.Tag == "vihollinen")
171        {
172            kohde.Destroy();
173            MessageDisplay.Add("Ammuit vihollisen!");
174        }
175
176       
177    }
178
179
180    void AmmuAseella(PlasmaCannon ase)
181    {
182        PhysicsObject ammus = ase.Shoot();
183
184
185        if (ammus != null)
186        {
187            ammus.Size *= 7;
188            ammus.Image = Salama;
189            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
190        }
191
192    }
193
194    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
195    {
196        PlatformCharacter Vihollinen = new PlatformCharacter(leveys, korkeus);
197        Vihollinen.Position = paikka;
198        Vihollinen.Mass = 4.0;
199        Vihollinen.Image = Devil;
200        Vihollinen.Tag = "vihollinen";
201       
202        Add(Vihollinen);
203
204        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
205        tasoAivot.Speed = 100;
206
207        Vihollinen.Brain = tasoAivot;
208
209
210    }
211    void HeitaKranaatti(PlatformCharacter pelaaja)
212    {
213        if (kranuLaskuri.Value > 0)
214        {
215            Grenade kranu = new Grenade(30.0);
216            kranu.FuseTime = TimeSpan.FromSeconds(1);
217            kranu.Explosion.AddShockwaveHandler("vihollinen", KranaattiOsui);
218            kranu.Image = Pilvipullo;
219            kranu.Explosion.Image = rajahtavaPilvi;
220            kranuLaskuri.Value--;
221
222            pelaaja.Throw(kranu, Angle.FromDegrees(30), 10000);
223        }
224    }
225
226    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
227    {
228        rajahdyksenKohde.Destroy();
229        MessageDisplay.Add("Tuhosit vihollisen kranaatilla!");
230    }
231    void VihuTormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
232    {
233        MessageDisplay.Add("Vihollinen tuhosi tähden!");
234        tahti.Destroy();
235       
236    }
237    void LisaaSeina(Vector paikka, double leveys, double korkeus)
238    {
239        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
240        taso.Position = paikka;
241        // taso.Color = Color.DarkBlue;
242
243        Add(taso);
244    }
245
246    void LuoElamaLaskuri()
247    {
248        elamaLaskuri = new DoubleMeter(10);
249        elamaLaskuri.MaxValue = 5;
250        elamaLaskuri.LowerLimit += ElamaLoppui;
251
252        ProgressBar elamaPalkki = new ProgressBar(150, 20);
253        elamaPalkki.X =  0;
254        elamaPalkki.Y = Screen.Top - 20;
255        elamaPalkki.BindTo(elamaLaskuri);
256        Add(elamaPalkki);
257    }
258
259    void ElamaLoppui()
260    {
261        MessageDisplay.Add("Kuolit.");
262        pelaaja1.Destroy();
263
264        Timer.SingleShot(3, AloitaPeli);
265
266    }
267
268    void TormaaViholliseen(PhysicsObject hahmo, PhysicsObject vihollinen)
269    {
270        elamaLaskuri.Value--;
271        MessageDisplay.Add("Vihollinen vahingoitti sinua!");
272     
273    }
274   
275
276    void LuoKranuLaskuri()
277    {
278        kranuLaskuri = new IntMeter(5);               
279 
280        Label pisteNaytto = new Label(); 
281        pisteNaytto.X = 0;
282        pisteNaytto.Y = Screen.Top -50;
283        pisteNaytto.TextColor = Color.LightBlue;
284        pisteNaytto.Color = Color.DarkBlue;
285
286        pisteNaytto.BindTo(kranuLaskuri);
287        Add(pisteNaytto);
288    }
289
290    void LisaaLaatikko(Vector paikka, double leveys, double korkeus)
291    {
292        PhysicsObject laatikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
293        laatikko.IgnoresCollisionResponse = true;
294        laatikko.Position = paikka;
295        laatikko.Image = AmmoCrate;
296        laatikko.Tag = "laatikko";
297        Add(laatikko);
298    }
299
300    void TormaaLaatikkoon(PhysicsObject hahmo, PhysicsObject laatikko)
301    {
302       
303        MessageDisplay.Add("Sait tarvikelaatikon!");
304        laatikko.Destroy();
305        kranuLaskuri.Value += 2;
306        pelaajan1Ase.Ammo.Value += 15;
307    }
308
309   
310
311
312}
Note: See TracBrowser for help on using the repository browser.