source: 2016/24/MattiK/ZlandZ/ZlandZ/ZlandZ/ZlandZ.cs @ 7436

Revision 7436, 11.3 KB checked in by majuvika, 4 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 ZlandZ : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    private int bossinElamat = 500;
15    EasyHighScore topLista = new EasyHighScore();
16
17    PlatformCharacter Leaf;
18    PlatformCharacter Sombombo;
19    PlatformCharacter Orkki;
20
21    LaserGun LeafinAse;
22    IntMeter pisteLaskuri;
23    Image pelaajanKuva = LoadImage("lintu");
24    Image gene = LoadImage("gene");
25    Image nuke = LoadImage("nuke");
26    Image orkki = LoadImage("orkki");
27    Image GuninKuva = LoadImage("gun");
28    Image BossinKuva = LoadImage("Boss");
29    Image boxinKuva = LoadImage("box");
30    Image piikinKuva = LoadImage("piikki");
31    AssaultRifle pelaajan1Ase;
32    SoundEffect maaliAani = LoadSoundEffect("maali");
33    int ammustenMaara = 60;
34    SoundEffect hyppyAani = LoadSoundEffect("Jump17");
35    SoundEffect mixdown = LoadSoundEffect("mixdown");
36    public override void Begin()
37    {
38        MultiSelectWindow alkuValikko = new MultiSelectWindow("ZlandZ",
39"Aloita peli",  "Lopeta");
40        Add(alkuValikko);
41        alkuValikko.AddItemHandler(0, AloitaPeli);
42        alkuValikko.AddItemHandler(1, ParhaatPisteet);
43        alkuValikko.AddItemHandler(2, Exit);
44        Level.Background.Image = LoadImage("niga");
45        Level.Background.FitToLevel();
46        alkuValikko.Color = Color.Red;
47        Level.Background.Color = Color.Black;
48
49        MediaPlayer.Play("mixdown");
50        MediaPlayer.IsRepeating = true;
51       
52
53    }
54
55
56
57    void AloitaPeli()
58    {
59        ClearAll();
60        Gravity = new Vector(0, -1000);
61
62        LuoKentta();
63
64        LisaaNappaimet();
65        LuoAmmusLaskuri();
66
67        Camera.Follow(Leaf);
68        Camera.ZoomFactor = 1.2;
69        Camera.StayInLevel = true;
70    }
71
72    void ParhaatPisteet()
73    {
74    }
75
76    void LuoKentta()
77    {
78
79        TileMap kentta = TileMap.FromLevelAsset("kentta1");
80
81        kentta.SetTileMethod('#', LisaaTaso);
82        kentta.SetTileMethod('d', LisaaGene);
83        kentta.SetTileMethod('G', Lisaagun);
84        kentta.SetTileMethod('O', LisaaOrkki);
85        kentta.SetTileMethod('B', LisaaBoss);
86        kentta.SetTileMethod('b', LisaaBox);
87        kentta.SetTileMethod('N', LisaaPelaaja);
88        kentta.SetTileMethod('L', LisaaNuke);
89        kentta.SetTileMethod('P', LisaaPiikki);
90        kentta.SetTileMethod('S', LisaaVihu);
91        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
92        Level.CreateBorders();
93        Level.Background.CreateGradient(Color.Black, Color.Red);
94
95
96    }
97
98
99    void LisaaTaso(Vector paikka, double leveys, double korkeus)
100    {
101        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
102        taso.Position = paikka;
103        taso.Color = Color.Green;
104        Add(taso);
105    }
106    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject Piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
109        Piikki.Position = paikka;
110        Piikki.Color = Color.Red;
111        Add(Piikki);
112        Piikki.Image = piikinKuva;
113        Piikki.Tag = "piikki";
114    }
115    void LisaaBoss(Vector paikka, double leveys, double korkeus)
116    {
117        PlatformCharacter Boss = new PlatformCharacter(leveys, korkeus);
118        Boss.Position = paikka;
119        Add(Boss);
120        Boss.Image = BossinKuva;
121        Boss.Tag = "pahis";
122        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
123        tasoAivot.Speed = 50;
124        tasoAivot.Active = true;
125
126        Boss.Brain = tasoAivot;
127    }
128    void LisaaOrkki(Vector paikka, double leveys, double korkeus)
129    {
130        PlatformCharacter Orkki = new PlatformCharacter(200, 200);
131        Orkki.Position = paikka;
132        Add(Orkki);
133        Orkki.Image = orkki;
134        Orkki.Tag = "orkki";
135        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
136        tasoAivot.Speed = 50;
137        tasoAivot.Active = true;
138
139        Orkki.Brain = tasoAivot;
140    }
141    IntMeter ammusLaskuri;
142
143    void LuoAmmusLaskuri()
144    {
145        ammusLaskuri = new IntMeter(ammustenMaara);
146        Label pisteNaytto = new Label();
147        pisteNaytto.X = Screen.Left + 100;
148        pisteNaytto.Y = Screen.Top - 100;
149        pisteNaytto.TextColor = Color.Red;
150        pisteNaytto.Color = Color.Green;
151
152        pisteNaytto.BindTo(ammusLaskuri);
153        Add(pisteNaytto);
154    }
155
156
157
158    void LisaaBox(Vector paikka, double leveys, double korkeus)
159    {
160        PhysicsObject Box = PhysicsObject.CreateStaticObject(leveys, korkeus);
161        Box.IgnoresCollisionResponse = true;
162        Box.Position = paikka;
163        Box.Image = boxinKuva;
164        Box.Tag = "Box";
165        Add(Box);
166    }
167    void LisaaNuke(Vector paikka, double leveys, double korkeus)
168    {
169        PhysicsObject nuke = PhysicsObject.CreateStaticObject(leveys, korkeus);
170        nuke.IgnoresCollisionResponse = true;
171        nuke.Position = paikka;
172        nuke.Image = this.nuke;
173        nuke.Tag = "nuke";
174        Add(nuke);
175
176    }
177
178    void LisaaGene(Vector paikka, double leveys, double korkeus)
179    {
180        PhysicsObject gene = PhysicsObject.CreateStaticObject(leveys, korkeus);
181        gene.IgnoresCollisionResponse = true;
182        gene.Position = paikka;
183        gene.Image = this.gene;
184        gene.Tag = "gene";
185        Add(gene);
186
187    }
188
189
190    void LisaaVihu(Vector paikka, double leveys, double korkeus)
191    {
192        Sombombo = new PlatformCharacter(leveys, korkeus);
193        Add(Sombombo);
194        Sombombo.Image = LoadImage("vihu");
195        Sombombo.Tag = "pahis";
196        // Sombombo.X = 140;Sombombo.Y = 180;
197        Sombombo.Position = paikka;
198
199
200
201        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
202        tasoAivot.Speed = 50;
203
204        Sombombo.Brain = tasoAivot;
205    }
206
207    void Lisaagun(Vector paikka, double leveys, double korkeus)
208    {
209        PhysicsObject gun = PhysicsObject.CreateStaticObject(leveys, korkeus);
210        //gun.IgnoresCollisionResponse = true;
211        gun.Position = paikka;
212        gun.Image = GuninKuva;
213        gun.Tag = "gun";
214        Add(gun);
215    }
216
217
218
219    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
220    {
221        Leaf = new PlatformCharacter(leveys, korkeus);
222        Leaf.Position = paikka;
223        Leaf.Mass = 4.0;
224        Leaf.Image = pelaajanKuva;
225        AddCollisionHandler(Leaf, "Box", TormaaTahteen);
226        AddCollisionHandler(Leaf, "gun", TormaaGuniin);
227        AddCollisionHandler(Leaf, "pahis", TormaaVihuun);
228        AddCollisionHandler(Leaf, "piikki", TormaaPiikkiin);
229        AddCollisionHandler(Leaf, "gene", TormaaGeneen);
230        AddCollisionHandler(Leaf, "orkki", TormaaOrkkiin);
231        Add(Leaf);
232        //pelaaja1 on PlatformCharacter-tyyppinen
233        Leaf.Weapon = new AssaultRifle(30, 10);
234
235        //Ammusten määrä aluksi:
236        Leaf.Weapon.Ammo.Value = ammustenMaara;
237
238        //Mitä tapahtuu kun ammus osuu johonkin?
239        Leaf.Weapon.ProjectileCollision = AmmusOsui;
240        //Leaf.Add(pelaajan1Ase);
241    }
242    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
243    {
244        ammus.Destroy();
245        if (kohde.Tag.Equals("pahis"))
246        {
247            kohde.Destroy();
248        }
249        if (kohde.Tag.Equals("orkki"))
250        {
251            bossinElamat -= 10;
252            if (bossinElamat <= 0) kohde.Destroy();
253        }
254    }
255    void AmmuAseella(PlatformCharacter pelaaja)
256    {
257        PhysicsObject ammus = pelaaja.Weapon.Shoot();
258        ammusLaskuri.Value--;
259        if (ammus != null)
260        {
261
262            //ammus.Size *= 3;
263            //ammus.Image = ...
264            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
265        }
266        Level.Background.Color = Color.Red;
267    }
268
269    void LuotiOsuu(PhysicsObject tormaaja, PlatformCharacter kohde)
270    {
271        Sombombo.Destroy();
272        pisteLaskuri.Value += 2;
273    }
274
275
276    void LuoPistelaskuri()
277    {
278        pisteLaskuri = new IntMeter(0);
279
280        Label pisteNaytto = new Label();
281        pisteNaytto.X = Screen.Left + 100;
282        pisteNaytto.Y = Screen.Top - 100;
283        pisteNaytto.TextColor = Color.Black;
284        pisteNaytto.Color = Color.White;
285
286        pisteNaytto.BindTo(pisteLaskuri);
287        Add(pisteNaytto);
288    }
289
290    void LisaaNappaimet()
291    {
292        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
293        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
294
295        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Leaf, -nopeus);
296        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Leaf, nopeus);
297        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Leaf, hyppyNopeus);
298        Keyboard.Listen(Key.Space, ButtonState.Pressed, AmmuAseella, "Ammu", Leaf);
299        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
300
301        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", Leaf, -nopeus);
302        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", Leaf, nopeus);
303        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Leaf, hyppyNopeus);
304        IntMeter pisteLaskuri;
305    }
306
307
308
309
310    void Liikuta(PlatformCharacter hahmo, double nopeus)
311    {
312        hahmo.Walk(nopeus);
313    }
314
315    void Hyppaa(PlatformCharacter hahmo, double nopeus)
316    {
317        hahmo.Jump(nopeus);
318        hyppyAani.Play();
319    }
320
321    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject Box)
322    {
323        maaliAani.Play();
324        MessageDisplay.Add("Keräsit Boxin!");
325        Box.Destroy();
326       
327    }
328    void TormaaVihuun(PhysicsObject hahmo, PhysicsObject vihu)
329    {
330        maaliAani.Play();
331        MessageDisplay.Add("You died");
332        hahmo.Destroy();
333    }
334    void TormaaOrkkiin(PhysicsObject hahmo, PhysicsObject orkki)
335    {
336        maaliAani.Play();
337        MessageDisplay.Add("You died");
338        hahmo.Destroy();
339    }
340    void TormaaGiantiin(PhysicsObject hahmo, PhysicsObject Giant)
341    {
342        maaliAani.Play();
343        MessageDisplay.Add("You died");
344        hahmo.Destroy();
345
346    }
347    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
348    {
349        maaliAani.Play();
350        MessageDisplay.Add("You died");
351        hahmo.Destroy();
352    }
353    void TormaaGuniin(PhysicsObject hahmo, PhysicsObject gun)
354    {
355        maaliAani.Play();
356        MessageDisplay.Add("Keräsit Aseen!");
357        gun.Destroy();
358
359        Leaf.Weapon = new PlasmaCannon(20, 5);
360        Leaf.Weapon.Ammo.Value = 60;
361        Leaf.Weapon.FireRate = 1;
362        Leaf.Weapon.ProjectileCollision = AmmusOsui;
363    }
364    void TormaaGeneen(PhysicsObject pelaaja, PhysicsObject gene)
365    {
366        StopAll();
367        PelaajaKuoli();
368
369
370
371    }
372
373    void PelaajaKuoli()
374    {
375
376        //topLista.EnterAndShow(pisteLaskuri.Value);
377        //topLista.HighScoreWindow.Closed +=
378        PeliLoppui(null);
379    }
380
381    void PeliLoppui(Window sender)
382    {
383        ClearAll();
384        Begin();
385    }
386}
Note: See TracBrowser for help on using the repository browser.