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

Revision 4442, 8.0 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 = 835;
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
25    Image Maalikuva= LoadImage("star");
26    Image taustaKuva = LoadImage("taustakuva");
27    Image pelaajanKuva = LoadImage("mario");
28    Image tolkkikuva = LoadImage("es");
29    Image kilpikonnakuva = LoadImage("kilpikonna");
30    Animation pedoanimaatio = new Animation(LoadImages("pedobear", "pedobear2"));
31
32    SoundEffect maaliAani = LoadSoundEffect("maali");
33    SoundEffect hyppyAani = LoadSoundEffect("supermarioääni");
34    SoundEffect Tormaatolkkiin = LoadSoundEffect("bling");
35
36
37    public override void Begin()
38    {
39        MediaPlayer.IsRepeating = true;
40        Gravity = new Vector(0, -1000);
41        MediaPlayer.Play("mariolaulu");
42
43
44        LuoKentta();
45        LisaaNappaimet();
46        luoPistelaskuri();
47        Level.Background.Image = taustaKuva;
48
49        Camera.Follow(pelaaja1);
50        Camera.ZoomFactor = 1.2;
51        Camera.StayInLevel = true;
52    }
53
54    void LuoKentta()
55    {
56        TileMap kentta = TileMap.FromLevelAsset("kentta1");
57        kentta.SetTileMethod('#', LisaaTaso);
58        kentta.SetTileMethod('*', LisaaTolkki);
59        kentta.SetTileMethod('N', LisaaPelaaja);
60        kentta.SetTileMethod('L', Lisaalaatikko1);
61        kentta.SetTileMethod('P', LisaaPedo);
62        kentta.SetTileMethod('O', Lisaalaatikko2);
63        kentta.SetTileMethod('k', Lisaakilpikonna);
64        kentta.SetTileMethod('h', LisaaMaali);
65        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
66       
67        Level.CreateBorders();
68        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
69    }
70
71    void LisaaTaso(Vector paikka, double leveys, double korkeus)
72    {
73        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
74        taso.Position = paikka;
75        taso.Color = Color.White;
76        Add(taso, -2);
77    }
78
79
80    void LisaaTolkki(Vector paikka, double leveys, double korkeus)
81    {
82        PhysicsObject tolkki = PhysicsObject.CreateStaticObject(leveys, korkeus);
83        tolkki.IgnoresCollisionResponse = true;
84        tolkki.Position = paikka;
85        tolkki.Image = tolkkikuva;
86        tolkki.Tag = "tolkki";
87        Add(tolkki);
88    }
89
90    void LisaaPedo(Vector paikka, double leveys, double korkeus)
91    {
92        pedo = new PlatformCharacter(80.0, 140.0);
93        pedo.Position = paikka;
94        pedo.Tag = "pedo";
95        pedo.Animation = pedoanimaatio;
96        pedo.Animation.Start();
97        pedo.Animation.FPS = 3;
98        Add(pedo);
99        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
100        tasoAivot.Speed = 150;
101
102        pedo.Brain = tasoAivot;
103    }
104
105
106    void luoPistelaskuri()
107    {
108        pisteLaskuri = new IntMeter(0);
109
110        Label pisteNaytto = new Label();
111        pisteNaytto.X = Screen.Left + 100;
112        pisteNaytto.Y = Screen.Top - 100;
113        pisteNaytto.TextColor = Color.Black;
114        pisteNaytto.Color = Color.White;
115        pisteNaytto.Title = "Tölkit";
116
117        pisteNaytto.BindTo(pisteLaskuri);
118        Add(pisteNaytto);
119    }
120
121    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
122    {
123        pelaaja1 = new PlatformCharacter(40.0, 70.0);
124        pelaaja1.Position = paikka;
125        pelaaja1.Mass = 4.0;
126        pelaaja1.Image = pelaajanKuva;
127        AddCollisionHandler(pelaaja1, "tolkki", TormaaTolkkiin);
128        AddCollisionHandler(pelaaja1, "pedo", Tormasipedoon);
129        AddCollisionHandler(pelaaja1, "kilpikonna", Tormasikilpikonnaan);
130        Add(pelaaja1);
131        //pelaaja1 on PlatformCharacter-tyyppinen
132        pelaaja1.Weapon = new AssaultRifle(150, 110);
133        pelaaja1.Weapon.IsVisible = false;
134        //Ammusten määrä aluksi:
135        pelaaja1.Weapon.Ammo.Value = 2000;
136
137        //Mitä tapahtuu kun ammus osuu johonkin?
138        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
139
140       
141       
142
143
144
145
146    }
147
148    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
149    {
150        ammus.Destroy();
151        if (kohde.Tag.ToString() == "laatikko")
152        {
153            kohde.Destroy();
154        }
155
156        if (kohde.Tag.ToString() == "kilpikonna")
157        {
158            kohde.Destroy();
159        }
160    }
161
162
163    void LisaaNappaimet()
164    {
165        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
166        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
167
168        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
169        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
170        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
171
172        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
173
174        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
175        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
176        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
177
178        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
179
180
181        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
182    }
183
184    void Liikuta(PlatformCharacter hahmo, double nopeus)
185    {
186        hahmo.Walk(nopeus);
187    }
188
189    void Hyppaa(PlatformCharacter hahmo, double nopeus)
190    {
191        hahmo.Jump(nopeus);
192        hyppyAani.Play();
193    }
194
195    void Tormasipedoon(PhysicsObject hahmo, PhysicsObject pedo)
196    {
197        MessageDisplay.Add("Kuolit");
198        ClearAll();
199        Begin();
200
201    }
202
203    void TormaaTolkkiin(PhysicsObject hahmo, PhysicsObject tolkki)
204    {
205        MessageDisplay.Add("Sait tölkin!");
206        tolkki.Destroy();
207        pisteLaskuri.Value++;
208        PlaySound ("bling");
209    }
210
211    void Lisaalaatikko1(Vector paikka, double leveys, double korkeus)
212    {
213        laatikko = new PhysicsObject(48.0, 48.0);
214        laatikko.Position = paikka;
215        laatikko.Tag = "laatikko";
216        laatikko.Color = Color.Brown;
217        Add(laatikko);
218     
219    }
220    void Lisaalaatikko2(Vector paikka, double leveys, double korkeus)
221    {
222        laatikko2 = new PhysicsObject(70.0, 70.0);
223        laatikko2.Position = paikka;
224        laatikko2.Tag = "laatikko";
225        laatikko2.Color = Color.Brown;
226        Add(laatikko2);
227       
228    }
229
230    void AmmuAseella(PlatformCharacter pelaaja)
231    {
232        PhysicsObject ammus = pelaaja.Weapon.Shoot();
233
234        if (ammus != null)
235        {
236            //ammus.Size *= 3;
237            //ammus.Image = ...
238            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
239        }
240    }
241
242    void Lisaakilpikonna(Vector paikka, double leveys, double korkeus)
243    {
244        kilpikonna = new PlatformCharacter(70.0, 70.0);
245        kilpikonna.Image = kilpikonnakuva;
246        kilpikonna.Position = paikka;
247        kilpikonna.Tag = "kilpikonna";
248        Add(kilpikonna);
249        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
250        tasoAivot.Speed = 150;
251
252        kilpikonna.Brain = tasoAivot;
253    }
254    void Tormasikilpikonnaan(PhysicsObject hahmo, PhysicsObject kilpikonna)
255    {
256        MessageDisplay.Add("Kuolit");
257        ClearAll();
258        Begin();
259   
260       
261       
262    }
263
264    void LisaaMaali(Vector paikka, double leveys, double korkeus)
265    {
266        Maali = new PlatformCharacter(70.0, 70.0);
267        Maali.Image = Maalikuva;
268        Maali.Position = paikka;
269        Maali.Tag = "star";
270        Add(Maali);
271
272    }
273}
Note: See TracBrowser for help on using the repository browser.