source: 2018/23/MIKAELE/Pixeli mario/Pixeli mario/Pixeli_mario.cs @ 9679

Revision 9679, 9.6 KB checked in by mietula, 20 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Widgets;
7
8public class Pixeli_mario : PhysicsGame
9{
10    //void SeuraavaKentta()
11    //{
12    //    ClearAll();
13    //    if (kenttaNro > 2) //Tähän kolmosen kohdalle tulee kenttien lukumäärä
14    //else LuoKentta("kentta" + kenttaNro);
15    //    //Jotta tämä toimisi, pitää jokaisen kenttätiedoston nimen
16    //    //olla muotoa kentta ja heti perään numero esimerkiksi kentta4.txt
17
18    //    LisaaPelaaja();
19    //}
20
21
22    int elamia = 3;
23    IntMeter pistelaskuri;
24    const double nopeus =200;
25    const double hyppyNopeus = 750;
26    const double RUUDUN_KOKO = 40;
27
28    PlatformCharacter luici;
29
30    PlatformCharacter mario;
31
32    Image marionKuva = LoadImage("mario2");
33    Image tahtiKuva = LoadImage("tahti");
34    Image vihollisenKuva = LoadImage("marioV");
35    Image luigikuva = LoadImage("luigi");
36    Image TiiliKuva = LoadImage("mariotiili");
37    Image TIKuva = LoadImage("valetiili");
38    Image BKuva = LoadImage("B");
39    Image Pkuva = LoadImage("Putkipää");
40    Image PPKuva = LoadImage("putki");
41    bool luiciLuotu =false;
42
43    SoundEffect maaliAani = LoadSoundEffect("maali");
44
45    public override void Begin()
46    {
47       
48
49
50        Gravity = new Vector(0, -1000);
51        luiciLuotu = false;
52
53        LuoKentta();
54        luopistelaskuri();
55        LisaaYleisnappaimet();
56
57        Camera.Follow(mario);
58        Camera.ZoomFactor = 1.0;
59        Camera.StayInLevel = true;
60    }
61
62    void LuoKentta()
63    {
64        TileMap kentta = TileMap.FromLevelAsset("kentta2");
65        kentta.SetTileMethod('#', LisaaTaso);
66        kentta.SetTileMethod('*', LisaaTahti);
67        kentta.SetTileMethod('M', LisaaMario);
68        kentta.SetTileMethod('V', LisaaVihu);
69        //kentta.SetTileMethod('L', LisaaLuici);
70        kentta.SetTileMethod('E', LisaaTiili);
71        kentta.SetTileMethod('T', LisaaTuho);
72        kentta.SetTileMethod('B', LisaaB);
73        kentta.SetTileMethod('P', LisaaP);
74        kentta.SetTileMethod('W', LisaaW);
75
76
77
78        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
79        Timer vihuspawn = new Timer(3, Vihus);
80        vihuspawn.Start();
81        Level.CreateBorders();
82        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
83    }
84
85    void LisaaTaso(Vector paikka, double leveys, double korkeus)
86    {
87        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
88        taso.Position = paikka;
89        taso.Image = TiiliKuva;
90        taso.Tag = "seina";
91        Add(taso);
92    }
93     void LisaaTiili(Vector paikka, double leveys, double korkeus)
94    {
95        PhysicsObject tiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
96        tiili.Position = paikka;
97        tiili.Image = TIKuva;
98        tiili.Tag = "tiili";
99        Add(tiili);
100    }
101
102
103    void LisaaVihu(Vector paikka, double leveys, double korkeus)
104    {
105        PlatformCharacter vihollinen = new PlatformCharacter(leveys, korkeus);
106        vihollinen.Position = paikka;
107        vihollinen.Mass = 4.0;
108        vihollinen.Image = vihollisenKuva;
109        AddCollisionHandler(vihollinen, "pahis", VihuOsuu);
110        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
111        tasoAivot.Speed = 100;
112
113        vihollinen.Brain = tasoAivot;
114        tasoAivot.FallsOffPlatforms = true;
115        vihollinen.Tag = "pahis";
116        AddCollisionHandler(vihollinen, "seina", Takasin);
117        Add(vihollinen);
118
119    }
120
121
122    void LisaaW(Vector paikka, double leveys, double korkeus)
123    {
124        PhysicsObject p = PhysicsObject.CreateStaticObject(leveys *3, korkeus *2);
125        p.Position = paikka;
126        p.Image = Pkuva;
127        p.Tag = "putki";
128        Add(p);
129    }
130
131
132    void LisaaP(Vector paikka, double leveys, double korkeus)
133    {
134        PhysicsObject PP = PhysicsObject.CreateStaticObject(leveys, korkeus);
135        PP.Position = paikka;
136        PP.Image = PPKuva;
137        PP.Tag = "putki";
138       
139        Add(PP);
140    }
141
142
143    void LisaaTahti(Vector paikka, double leveys, double korkeus)
144    {
145        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
146        tahti.IgnoresCollisionResponse = true;
147        tahti.Position = paikka;
148        tahti.Image = tahtiKuva;
149        tahti.Tag = "tahti";
150        Add(tahti);
151    }
152    void LisaaTuho(Vector paikka, double leveys, double korkeus)
153    {
154        PlatformCharacter Tuho = new PlatformCharacter(leveys, korkeus);
155        Tuho.Position = paikka;
156        Tuho.Mass = 4.0;
157        Tuho.Tag = "pahis";
158        Add(Tuho);
159        Tuho.IsVisible = false;
160       
161
162    }
163
164    PlatformCharacter LisaaPelaaja(Vector paikka, double leveys, double korkeus, Image pelaajanKuva, Key ylos, Key vasen, Key oikea)
165    {
166        PlatformCharacter pelaaja1 = new PlatformCharacter(leveys, korkeus);
167        pelaaja1.Position = paikka;
168        pelaaja1.Mass = 4.0;
169        pelaaja1.Image = pelaajanKuva;
170        pelaaja1.Tag = "hyvis";
171        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
172        AddCollisionHandler(pelaaja1, "pahis", PelaajaOsuu);
173        AddCollisionHandler(pelaaja1, "tiili", Tiili2);
174        LisaaPelaajanNappaimet(pelaaja1, ylos, vasen, oikea);
175        Add(pelaaja1);
176        return pelaaja1;
177    }
178
179        void LisaaLuici(Vector paikka, double leveys, double korkeus)
180    {
181        if(luiciLuotu == false)
182        {
183        luici = LisaaPelaaja(mario.AbsolutePosition, leveys, korkeus, luigikuva, Key.Up, Key.Left, Key.Right);
184            Camera.Follow(mario, luici);
185            luiciLuotu = true;
186        }
187    }
188
189
190    void luopistelaskuri()
191    {
192        pistelaskuri = new IntMeter(elamia);
193
194        Label pisteNaytto = new Label();
195        pisteNaytto.X = Screen.Left + 70;
196        pisteNaytto.Y = Screen.Top - 70;
197        pisteNaytto.TextColor = Color.Black;
198
199
200
201        pisteNaytto.BindTo(pistelaskuri);
202        Add(pisteNaytto);
203    }
204
205    void LisaaMario(Vector paikka, double leveys, double korkeus)
206    {
207        mario = LisaaPelaaja(paikka, leveys, korkeus, marionKuva, Key.W, Key.A, Key.D);
208    }
209
210
211   
212    void LisaaB(Vector paikka, double leveys, double korkeus)
213    {
214        PlatformCharacter br = new PlatformCharacter(leveys * 3, korkeus * 3);
215        br.Position = paikka;
216        br.Mass = 4.0;
217        br.Image = BKuva;
218        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
219        tasoAivot.Speed = 700;
220
221        br.Brain = tasoAivot;
222        tasoAivot.FallsOffPlatforms = true;
223        br.Tag = "pahis";
224        AddCollisionHandler(br, "seina", Takasin);
225        Add(br);
226
227    }
228
229    void LisaaYleisnappaimet()
230    {
231        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
232        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
233        Keyboard.Listen(Key.Delete, ButtonState.Pressed,LisaaLuici, "Lisää toinen pelihahmo", new Vector(0, 2*RUUDUN_KOKO), RUUDUN_KOKO, RUUDUN_KOKO );
234
235        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
236    }
237
238    void LisaaPelaajanNappaimet(PlatformCharacter pelaaja, Key ylos, Key vasen, Key oikea)
239    {
240            Keyboard.Listen(ylos, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, hyppyNopeus);
241            Keyboard.Listen(vasen, ButtonState.Down, Liikuta, "Liikkuu vasemmalle",pelaaja, -nopeus);
242            Keyboard.Listen(oikea, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, nopeus);
243
244            ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
245
246            ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", luici, -nopeus);
247            ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", luici, nopeus);
248            ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", luici, hyppyNopeus);
249
250    }
251
252      void Liikuta(PlatformCharacter hahmo, double nopeus)
253      {
254          hahmo.Walk(nopeus);
255      }
256
257      void Hyppaa(PlatformCharacter hahmo, double nopeus)
258      {
259          hahmo.Jump(nopeus);
260      }
261
262      void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
263      {
264          maaliAani.Play();
265          MessageDisplay.Add("Keräsit tähden!");
266          tahti.Destroy();
267      }
268      void PelaajaOsuu(PhysicsObject pelaaja1, PhysicsObject vihollinen)
269      {
270          if (pelaaja1.AbsBottom + 10 > vihollinen.AbsTop)
271          {
272              vihollinen.Destroy();
273          } else
274          {
275              pelaaja1.Destroy();
276            elamia--;
277            if (elamia < 1)
278            {
279                //TODO: Tänne paluu ekaan kenttään.
280                //Tähän viesti: Peli ohi
281
282
283            }
284              ClearAll();
285              Begin();
286                   }
287      }
288
289
290    void VihuOsuu(PhysicsObject vihollinen, PhysicsObject tuho)
291    {
292      vihollinen.Destroy();
293
294    }
295
296
297
298
299
300
301
302
303    void Takasin(PhysicsObject vihollinen, PhysicsObject taso)
304    {
305       
306    }
307
308
309    void Tiili2(PhysicsObject pelihahmo, PhysicsObject tiili)
310    {
311        if (tiili.AbsBottom + 10 > pelihahmo.AbsTop)
312            {
313                 tiili.Destroy();
314            } else
315            {
316               
317               
318                     }
319    }
320
321
322
323    void Vihus()
324    {
325        foreach(var putki in GetObjectsWithTag("putki"))
326        {
327            LisaaVihu(putki.Position, RUUDUN_KOKO, RUUDUN_KOKO);
328        }
329    }
330}
331
332
333
334
335
336
337
338
339           
340
341
342
343
344
345
346
347
348
349
350
351   
352   
353
Note: See TracBrowser for help on using the repository browser.