source: 2013/27/OttoR/Adventure/Adventure/Adventure/spurdomario.cs @ 4500

Revision 4500, 9.7 KB checked in by otrolig, 6 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class spurdomario : PhysicsGame
10{
11
12    const double nopeus = 200;
13    const double hyppyNopeus = 899;
14    const int RUUDUN_KOKO = 73;
15
16    IntMeter pisteLaskuri;
17
18    PlatformCharacter pelaaja1;
19    PlatformCharacter pedo;
20    PhysicsObject laatikko;
21    PhysicsObject laatikko2;
22    PlatformCharacter kilpikonna;
23    PhysicsObject Maali;
24    PlatformCharacter Luoti;
25
26    Image Luotikuva = LoadImage("Luoti");
27    Image Maalikuva = LoadImage("star");
28    Image taustaKuva = LoadImage("taustakuva");
29    Image pelaajanKuva = LoadImage("mario");
30    Image tolkkikuva = LoadImage("es");
31    Image kilpikonnakuva = LoadImage("kilpikonna");
32    Animation pedoanimaatio = new Animation(LoadImages("pedobear", "pedobear2"));
33
34    SoundEffect maaliAani = LoadSoundEffect("maali");
35    SoundEffect hyppyAani = LoadSoundEffect("supermarioääni");
36    SoundEffect Tormaatolkkiin = LoadSoundEffect("bling");
37
38
39    public override void Begin()
40    {
41        MediaPlayer.IsRepeating = true;
42        Gravity = new Vector(0, -1000);
43        MediaPlayer.Play("mariolaulu");
44
45
46        LuoKentta();
47        LisaaNappaimet();
48        luoPistelaskuri();
49        Level.Background.Image = taustaKuva;
50
51        Camera.Follow(pelaaja1);
52        Camera.ZoomFactor = 1.2;
53        Camera.StayInLevel = true;
54    }
55
56    void LuoKentta()
57    {
58        TileMap kentta = TileMap.FromLevelAsset("kentta1");
59        kentta.SetTileMethod('#', LisaaTaso);
60        kentta.SetTileMethod('*', LisaaTolkki);
61        kentta.SetTileMethod('N', LisaaPelaaja);
62        kentta.SetTileMethod('L', Lisaalaatikko1);
63        kentta.SetTileMethod('P', LisaaPedo);
64        kentta.SetTileMethod('O', Lisaalaatikko2);
65        kentta.SetTileMethod('k', Lisaakilpikonna);
66        kentta.SetTileMethod('h', LisaaMaali);
67        kentta.SetTileMethod('B', LisaaLuoti);
68        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
69
70        Level.CreateBorders();
71        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
72    }
73
74    void LisaaTaso(Vector paikka, double leveys, double korkeus)
75    {
76        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
77        taso.Position = paikka;
78        taso.Color = Color.White;
79        Add(taso, -2);
80    }
81
82
83    void LisaaTolkki(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject tolkki = PhysicsObject.CreateStaticObject(leveys, korkeus);
86        tolkki.IgnoresCollisionResponse = true;
87        tolkki.Position = paikka;
88        tolkki.Image = tolkkikuva;
89        tolkki.Tag = "tolkki";
90        Add(tolkki);
91    }
92
93    void LisaaPedo(Vector paikka, double leveys, double korkeus)
94    {
95        pedo = new PlatformCharacter(80.0, 140.0);
96        pedo.Position = paikka;
97        pedo.Tag = "pedo";
98        pedo.Animation = pedoanimaatio;
99        pedo.Animation.Start();
100        pedo.Animation.FPS = 3;
101        Add(pedo);
102        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
103        tasoAivot.Speed = 150;
104
105        pedo.Brain = tasoAivot;
106    }
107
108
109    void luoPistelaskuri()
110    {
111        pisteLaskuri = new IntMeter(0);
112
113        Label pisteNaytto = new Label();
114        pisteNaytto.X = Screen.Left + 100;
115        pisteNaytto.Y = Screen.Top - 100;
116        pisteNaytto.TextColor = Color.Black;
117        pisteNaytto.Color = Color.White;
118        pisteNaytto.Title = "Tölkit";
119
120        pisteNaytto.BindTo(pisteLaskuri);
121        Add(pisteNaytto);
122    }
123
124    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
125    {
126        pelaaja1 = new PlatformCharacter(40.0, 70.0);
127        pelaaja1.Position = paikka;
128        pelaaja1.Mass = 4.0;
129        pelaaja1.Image = pelaajanKuva;
130        AddCollisionHandler(pelaaja1, "tolkki", TormaaTolkkiin);
131        AddCollisionHandler(pelaaja1, "pedo", Tormasipedoon);
132        AddCollisionHandler(pelaaja1, "kilpikonna", Tormasikilpikonnaan);
133        AddCollisionHandler(pelaaja1, "Luoti", TormasiLuotiin);
134        AddCollisionHandler(pelaaja1, "maali", TormasiMaaliin);
135        Add(pelaaja1);
136        //pelaaja1 on PlatformCharacter-tyyppinen
137        pelaaja1.Weapon = new AssaultRifle(150, 110);
138        pelaaja1.Weapon.IsVisible = false;
139        //Ammusten määrä aluksi:
140        pelaaja1.Weapon.Ammo.Value = 3000;
141
142        //Mitä tapahtuu kun ammus osuu johonkin?
143        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
144       
145
146
147
148
149
150
151
152    }
153
154    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
155    {
156        ammus.Destroy();
157        if (kohde.Tag.ToString() == "laatikko")
158        {
159            kohde.Destroy();
160            Label viesti = new Label("Box Destroyed! :D");
161            viesti.Color = Color.Red;
162            Add(viesti);
163            viesti.LifetimeLeft = TimeSpan.FromSeconds(1.5);
164            viesti.Y = (147.0);
165
166        }
167
168        if (kohde.Tag.ToString() == "kilpikonna")
169        {
170            kohde.Destroy();
171            Label viesti = new Label("Enemy Spotted! LOL!");
172            viesti.Color = Color.Red;
173            Add(viesti);
174            viesti.LifetimeLeft = TimeSpan.FromSeconds(1.5);
175            viesti.Y = (177.0);
176        }
177    }
178
179
180    void LisaaNappaimet()
181    {
182        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
183        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
184
185        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
186        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
187        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
188
189        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
190
191        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
192        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
193        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
194
195        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
196
197
198        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
199    }
200
201    void Liikuta(PlatformCharacter hahmo, double nopeus)
202    {
203        hahmo.Walk(nopeus);
204    }
205
206    void Hyppaa(PlatformCharacter hahmo, double nopeus)
207    {
208        hahmo.Jump(nopeus);
209        hyppyAani.Play();
210    }
211
212    void Tormasipedoon(PhysicsObject hahmo, PhysicsObject pedo)
213    {
214        MessageDisplay.Add("Kuolit");
215        ClearAll();
216        Begin();
217
218    }
219
220    void TormaaTolkkiin(PhysicsObject hahmo, PhysicsObject tolkki)
221    {
222       
223        tolkki.Destroy();
224        pisteLaskuri.Value++;
225        PlaySound("bling");
226        Label viesti = new Label("Sait tölkin! XD");
227        viesti.Color = Color.Red;
228        Add(viesti);
229        viesti.LifetimeLeft = TimeSpan.FromSeconds(1.5);
230        viesti.Y = (120.0);
231    }
232
233    void Lisaalaatikko1(Vector paikka, double leveys, double korkeus)
234    {
235        laatikko = new PhysicsObject(48.0, 48.0);
236        laatikko.Position = paikka;
237        laatikko.Tag = "laatikko";
238        laatikko.Color = Color.Brown;
239        Add(laatikko);
240
241    }
242    void Lisaalaatikko2(Vector paikka, double leveys, double korkeus)
243    {
244        laatikko2 = new PhysicsObject(70.0, 70.0);
245        laatikko2.Position = paikka;
246        laatikko2.Tag = "laatikko";
247        laatikko2.Color = Color.Brown;
248        Add(laatikko2);
249
250    }
251
252    void AmmuAseella(PlatformCharacter pelaaja)
253    {
254        PhysicsObject ammus = pelaaja.Weapon.Shoot();
255
256        if (ammus != null)
257        {
258            //ammus.Size *= 3;
259            //ammus.Image = ...
260            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
261        }
262    }
263
264    void Lisaakilpikonna(Vector paikka, double leveys, double korkeus)
265    {
266        kilpikonna = new PlatformCharacter(70.0, 70.0);
267        kilpikonna.Image = kilpikonnakuva;
268        kilpikonna.Position = paikka;
269        kilpikonna.Tag = "kilpikonna";
270        Add(kilpikonna);
271        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
272        tasoAivot.Speed = 150;
273
274        kilpikonna.Brain = tasoAivot;
275    }
276    void Tormasikilpikonnaan(PhysicsObject hahmo, PhysicsObject kilpikonna)
277    {
278        MessageDisplay.Add("Kuolit");
279        ClearAll();
280        Begin();
281
282
283
284    }
285
286    void LisaaLuoti(Vector paikka, double leveys, double korkeus)
287    {
288        Luoti = new PlatformCharacter(70.0, 70.0);
289        Luoti.Image = Luotikuva;
290        Luoti.Position = paikka;
291        Luoti.Tag = "Luoti";
292        Add(Luoti);
293        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
294        tasoAivot.Speed = 150;
295
296        Luoti.Brain = tasoAivot;
297    }
298
299    void LisaaMaali(Vector paikka, double leveys, double korkeus)
300    {
301        Maali = new PhysicsObject(70.0, 70.0);
302        Maali.Image = Maalikuva;
303        Maali.Position = paikka;
304        Maali.Tag = "maali";
305        Add(Maali);
306
307    }
308    void TormasiLuotiin(PhysicsObject hahmo, PhysicsObject Luoti)
309    {
310        MessageDisplay.Add("Kuolit");
311        ClearAll();
312        Begin();
313    }
314    void TormasiMaaliin(PhysicsObject hahmo, PhysicsObject Maali)
315    {
316
317        Label viesti = new Label("VOITIT PELIN! :D ");
318        Add(viesti);
319        viesti.LifetimeLeft = TimeSpan.FromSeconds(10.0);
320        viesti.Color = Color.Aqua;
321        viesti.TextColor = Color.Red;
322        viesti.BorderColor = Color.Black;
323   
324    }
325
326}
327
Note: See TracBrowser for help on using the repository browser.