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

Revision 7336, 8.6 KB checked in by majuvika, 3 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
15    PlatformCharacter Leaf;
16    PlatformCharacter Sombombo;
17    PlatformCharacter Orkki;
18
19    LaserGun LeafinAse;
20
21    Image pelaajanKuva = LoadImage("lintu");
22    Image orkki = LoadImage("orkki");
23    Image GuninKuva = LoadImage("gun");
24    Image BossinKuva = LoadImage("Boss");
25    Image boxinKuva = LoadImage("box");
26    Image piikinKuva = LoadImage("piikki");
27    AssaultRifle pelaajan1Ase;
28    SoundEffect maaliAani = LoadSoundEffect("maali");
29    int ammustenMaara = 60;
30    SoundEffect hyppyAani = LoadSoundEffect("Jump17");
31    public override void Begin()
32    {
33        Gravity = new Vector(0, -1000);
34
35        LuoKentta();
36
37        LisaaNappaimet();
38        LuoAmmusLaskuri();
39
40        Camera.Follow(Leaf);
41        Camera.ZoomFactor = 1.2;
42        Camera.StayInLevel = true;
43    }
44
45    void LuoKentta()
46    {
47
48        TileMap kentta = TileMap.FromLevelAsset("kentta1");
49
50        kentta.SetTileMethod('#', LisaaTaso);
51        kentta.SetTileMethod('G', Lisaagun);
52        kentta.SetTileMethod('O', LisaaOrkki);
53        kentta.SetTileMethod('B', LisaaBoss);
54        kentta.SetTileMethod('b', LisaaBox);
55        kentta.SetTileMethod('N', LisaaPelaaja);
56        kentta.SetTileMethod('P', LisaaPiikki);
57        kentta.SetTileMethod('S', LisaaVihu);
58        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
59        Level.CreateBorders();
60        Level.Background.CreateGradient(Color.Black, Color.Red);
61
62    }
63
64
65    void LisaaTaso(Vector paikka, double leveys, double korkeus)
66    {
67        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
68        taso.Position = paikka;
69        taso.Color = Color.Green;
70        Add(taso);
71    }
72    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
73    {
74        PhysicsObject Piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
75        Piikki.Position = paikka;
76        Piikki.Color = Color.Red;
77        Add(Piikki);
78        Piikki.Image = piikinKuva;
79        Piikki.Tag = "piikki";
80    }
81    void LisaaBoss(Vector paikka, double leveys, double korkeus)
82    {
83        PlatformCharacter Boss = new PlatformCharacter(leveys, korkeus);
84        Boss.Position = paikka;
85        Add(Boss);
86        Boss.Image = BossinKuva;
87        Boss.Tag = "pahis";
88        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
89        tasoAivot.Speed = 50;
90        tasoAivot.Active = true;
91
92        Boss.Brain = tasoAivot;
93    }
94    void LisaaOrkki(Vector paikka, double leveys, double korkeus)
95    {
96        PlatformCharacter Orkki = new PlatformCharacter(200, 200);
97        Orkki.Position = paikka;
98        Add(Orkki);
99        Orkki.Image = orkki;
100        Orkki.Tag = "pahis";
101        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
102        tasoAivot.Speed = 50;
103        tasoAivot.Active = true;
104
105        Orkki.Brain = tasoAivot;
106    }
107    IntMeter ammusLaskuri;
108
109    void LuoAmmusLaskuri()
110    {
111        ammusLaskuri = new IntMeter(ammustenMaara);
112        Label pisteNaytto = new Label();
113        pisteNaytto.X = Screen.Left + 100;
114        pisteNaytto.Y = Screen.Top - 100;
115        pisteNaytto.TextColor = Color.Red;
116        pisteNaytto.Color = Color.Green;
117
118        pisteNaytto.BindTo(ammusLaskuri);
119        Add(pisteNaytto);
120    }
121
122
123
124    void LisaaBox(Vector paikka, double leveys, double korkeus)
125    {
126        PhysicsObject Box = PhysicsObject.CreateStaticObject(leveys, korkeus);
127        Box.IgnoresCollisionResponse = true;
128        Box.Position = paikka;
129        Box.Image = boxinKuva;
130        Box.Tag = "Box";
131        Add(Box);
132    }
133    void LisaaVihu(Vector paikka, double leveys, double korkeus)
134    {
135        Sombombo = new PlatformCharacter(leveys, korkeus);
136        Add(Sombombo);
137        Sombombo.Image = LoadImage("vihu");
138        Sombombo.Tag = "pahis";
139        // Sombombo.X = 140;Sombombo.Y = 180;
140        Sombombo.Position = paikka;
141
142
143
144        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
145        tasoAivot.Speed = 50;
146
147        Sombombo.Brain = tasoAivot;
148    }
149
150    void Lisaagun(Vector paikka, double leveys, double korkeus)
151    {
152        PhysicsObject gun = PhysicsObject.CreateStaticObject(leveys, korkeus);
153        //gun.IgnoresCollisionResponse = true;
154        gun.Position = paikka;
155        gun.Image = GuninKuva;
156        gun.Tag = "gun";
157        Add(gun);
158    }
159
160
161
162    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
163    {
164        Leaf = new PlatformCharacter(leveys, korkeus);
165        Leaf.Position = paikka;
166        Leaf.Mass = 4.0;
167        Leaf.Image = pelaajanKuva;
168        AddCollisionHandler(Leaf, "Box", TormaaTahteen);
169        AddCollisionHandler(Leaf, "gun", TormaaGuniin);
170        AddCollisionHandler(Leaf, "pahis", TormaaVihuun);
171        AddCollisionHandler(Leaf, "piikki", TormaaPiikkiin);
172        Add(Leaf);
173        //pelaaja1 on PlatformCharacter-tyyppinen
174        Leaf.Weapon = new AssaultRifle(30, 10);
175
176        //Ammusten määrä aluksi:
177        Leaf.Weapon.Ammo.Value = ammustenMaara;
178
179        //Mitä tapahtuu kun ammus osuu johonkin?
180        Leaf.Weapon.ProjectileCollision = AmmusOsui;
181        //Leaf.Add(pelaajan1Ase);
182    }
183    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
184    {
185        ammus.Destroy();
186        if (kohde.Tag.Equals("pahis"))
187        {
188            kohde.Destroy();
189        }
190    }
191    void AmmuAseella(PlatformCharacter pelaaja)
192    {
193        PhysicsObject ammus = pelaaja.Weapon.Shoot();
194        ammusLaskuri.Value--;
195        if (ammus != null)
196        {
197
198            //ammus.Size *= 3;
199            //ammus.Image = ...
200            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
201        }
202        Level.Background.Color = Color.Red;
203    }
204
205    void LuotiOsuu(PhysicsObject tormaaja, PlatformCharacter kohde)
206    {
207        Sombombo.Destroy();
208    }
209
210    void LisaaNappaimet()
211    {
212        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
213        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
214
215        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Leaf, -nopeus);
216        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Leaf, nopeus);
217        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Leaf, hyppyNopeus);
218        Keyboard.Listen(Key.Space, ButtonState.Pressed, AmmuAseella, "Ammu", Leaf);
219        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
220
221        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", Leaf, -nopeus);
222        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", Leaf, nopeus);
223        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Leaf, hyppyNopeus);
224
225
226
227    }
228
229    void Liikuta(PlatformCharacter hahmo, double nopeus)
230    {
231        hahmo.Walk(nopeus);
232    }
233
234    void Hyppaa(PlatformCharacter hahmo, double nopeus)
235    {
236        hahmo.Jump(nopeus);
237        hyppyAani.Play();
238    }
239
240    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject Box)
241    {
242        maaliAani.Play();
243        MessageDisplay.Add("Keräsit Boxin!");
244        Box.Destroy();
245    }
246    void TormaaVihuun(PhysicsObject hahmo, PhysicsObject vihu)
247    {
248        maaliAani.Play();
249        MessageDisplay.Add("You died");
250        hahmo.Destroy();
251    }
252    void TormaaOrkkiin(PhysicsObject hahmo, PhysicsObject orkki)
253    {
254        maaliAani.Play();
255        MessageDisplay.Add("You died");
256        hahmo.Destroy();
257    }
258    void TormaaGiantiin(PhysicsObject hahmo, PhysicsObject Giant)
259    {
260        maaliAani.Play();
261        MessageDisplay.Add("You died");
262        Giant.Destroy();
263    }
264    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
265    {
266        maaliAani.Play();
267        MessageDisplay.Add("You died");
268        hahmo.Destroy();
269    }
270    void TormaaGuniin(PhysicsObject hahmo, PhysicsObject gun)
271    {
272        maaliAani.Play();
273        MessageDisplay.Add("Keräsit Aseen!");
274        gun.Destroy();
275
276        Leaf.Weapon = new PlasmaCannon(20, 5);
277        Leaf.Weapon.Ammo.Value = 60;
278        Leaf.Weapon.FireRate = 1;
279        Leaf.Weapon.ProjectileCollision = AmmusOsui;
280    }
281
282}
Note: See TracBrowser for help on using the repository browser.