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

Revision 9644, 8.1 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    int elamia = 3;
11    IntMeter pistelaskuri;
12    const double nopeus =200;
13    const double hyppyNopeus = 750;
14    const double RUUDUN_KOKO = 40;
15
16    PlatformCharacter luici;
17
18    PlatformCharacter mario;
19
20    Image marionKuva = LoadImage("mario2");
21    Image tahtiKuva = LoadImage("tahti");
22    Image vihollisenKuva = LoadImage("marioV");
23    Image luigikuva = LoadImage("luigi");
24    Image TiiliKuva = LoadImage("mariotiili");
25    Image TIKuva = LoadImage("valetiili");
26    Image BKuva = LoadImage("B");
27    bool luiciLuotu =false;
28
29    SoundEffect maaliAani = LoadSoundEffect("maali");
30
31    public override void Begin()
32    {
33        Gravity = new Vector(0, -1000);
34        luiciLuotu = false;
35
36        LuoKentta();
37        luopistelaskuri();
38        LisaaYleisnappaimet();
39
40        Camera.Follow(mario);
41        Camera.ZoomFactor = 1.0;
42        Camera.StayInLevel = true;
43    }
44
45    void LuoKentta()
46    {
47        TileMap kentta = TileMap.FromLevelAsset("kentta1");
48        kentta.SetTileMethod('#', LisaaTaso);
49        kentta.SetTileMethod('*', LisaaTahti);
50        kentta.SetTileMethod('M', LisaaMario);
51        kentta.SetTileMethod('V', LisaaVihu);
52        //kentta.SetTileMethod('L', LisaaLuici);
53        kentta.SetTileMethod('E', LisaaTiili);
54        kentta.SetTileMethod('T', LisaaTuho);
55        kentta.SetTileMethod('B', LisaaB);
56
57
58        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
59        Level.CreateBorders();
60        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
61    }
62
63    void LisaaTaso(Vector paikka, double leveys, double korkeus)
64    {
65        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
66        taso.Position = paikka;
67        taso.Image = TiiliKuva;
68        taso.Tag = "seina";
69        Add(taso);
70    }
71     void LisaaTiili(Vector paikka, double leveys, double korkeus)
72    {
73        PhysicsObject tiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
74        tiili.Position = paikka;
75        tiili.Image = TIKuva;
76        tiili.Tag = "tiili";
77        Add(tiili);
78    }
79
80    void LisaaTahti(Vector paikka, double leveys, double korkeus)
81    {
82        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
83        tahti.IgnoresCollisionResponse = true;
84        tahti.Position = paikka;
85        tahti.Image = tahtiKuva;
86        tahti.Tag = "tahti";
87        Add(tahti);
88    }
89    void LisaaTuho(Vector paikka, double leveys, double korkeus)
90    {
91        PlatformCharacter Tuho = new PlatformCharacter(leveys, korkeus);
92        Tuho.Position = paikka;
93        Tuho.Mass = 4.0;
94        Tuho.Tag = "pahis";
95        Add(Tuho);
96        Tuho.IsVisible = false;
97       
98
99    }
100
101    PlatformCharacter LisaaPelaaja(Vector paikka, double leveys, double korkeus, Image pelaajanKuva, Key ylos, Key vasen, Key oikea)
102    {
103        PlatformCharacter pelaaja1 = new PlatformCharacter(leveys, korkeus);
104        pelaaja1.Position = paikka;
105        pelaaja1.Mass = 4.0;
106        pelaaja1.Image = pelaajanKuva;
107        pelaaja1.Tag = "hyvis";
108        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
109        AddCollisionHandler(pelaaja1, "pahis", PelaajaOsuu);
110        AddCollisionHandler(pelaaja1, "tiili", Tiili2);
111        LisaaPelaajanNappaimet(pelaaja1, ylos, vasen, oikea);
112        Add(pelaaja1);
113        return pelaaja1;
114    }
115
116        void LisaaLuici(Vector paikka, double leveys, double korkeus)
117    {
118        if(luiciLuotu == false)
119        {
120        luici = LisaaPelaaja(mario.AbsolutePosition, leveys, korkeus, luigikuva, Key.Up, Key.Left, Key.Right);
121            Camera.Follow(mario, luici);
122            luiciLuotu = true;
123        }
124    }
125
126
127    void luopistelaskuri()
128    {
129        pistelaskuri = new IntMeter(elamia);
130
131        Label pisteNaytto = new Label();
132        pisteNaytto.X = Screen.Left + 70;
133        pisteNaytto.Y = Screen.Top - 70;
134        pisteNaytto.TextColor = Color.Black;
135
136
137
138        pisteNaytto.BindTo(pistelaskuri);
139        Add(pisteNaytto);
140    }
141
142    void LisaaMario(Vector paikka, double leveys, double korkeus)
143    {
144        mario = LisaaPelaaja(paikka, leveys, korkeus, marionKuva, Key.W, Key.A, Key.D);
145    }
146
147
148    void LisaaVihu(Vector paikka, double leveys, double korkeus)
149    {
150        PlatformCharacter vihollinen = new PlatformCharacter(leveys, korkeus);
151        vihollinen.Position = paikka;
152        vihollinen.Mass = 4.0;
153        vihollinen.Image = vihollisenKuva;
154        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
155        tasoAivot.Speed = 100;
156
157        vihollinen.Brain = tasoAivot;
158        tasoAivot.FallsOffPlatforms = true;
159        vihollinen.Tag = "pahis";
160        AddCollisionHandler(vihollinen, "seina", Takasin);
161        Add(vihollinen);
162       
163    }
164    void LisaaB(Vector paikka, double leveys, double korkeus)
165    {
166        PlatformCharacter br = new PlatformCharacter(leveys * 3, korkeus * 3);
167        br.Position = paikka;
168        br.Mass = 4.0;
169        br.Image = BKuva;
170        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
171        tasoAivot.Speed = 700;
172
173        br.Brain = tasoAivot;
174        tasoAivot.FallsOffPlatforms = true;
175        br.Tag = "pahis";
176        AddCollisionHandler(br, "seina", Takasin);
177        Add(br);
178
179    }
180
181    void LisaaYleisnappaimet()
182    {
183        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
184        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
185        Keyboard.Listen(Key.Delete, ButtonState.Pressed,LisaaLuici, "Lisää toinen pelihahmo", new Vector(0, 2*RUUDUN_KOKO), RUUDUN_KOKO, RUUDUN_KOKO );
186
187        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
188    }
189
190    void LisaaPelaajanNappaimet(PlatformCharacter pelaaja, Key ylos, Key vasen, Key oikea)
191    {
192            Keyboard.Listen(ylos, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, hyppyNopeus);
193            Keyboard.Listen(vasen, ButtonState.Down, Liikuta, "Liikkuu vasemmalle",pelaaja, -nopeus);
194            Keyboard.Listen(oikea, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, nopeus);
195
196            ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
197
198            ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", luici, -nopeus);
199            ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", luici, nopeus);
200            ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", luici, hyppyNopeus);
201
202    }
203
204      void Liikuta(PlatformCharacter hahmo, double nopeus)
205      {
206          hahmo.Walk(nopeus);
207      }
208
209      void Hyppaa(PlatformCharacter hahmo, double nopeus)
210      {
211          hahmo.Jump(nopeus);
212      }
213
214      void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
215      {
216          maaliAani.Play();
217          MessageDisplay.Add("Keräsit tähden!");
218          tahti.Destroy();
219      }
220      void PelaajaOsuu(PhysicsObject pelaaja1, PhysicsObject vihollinen)
221      {
222          if (pelaaja1.AbsBottom + 10 > vihollinen.AbsTop)
223          {
224              vihollinen.Destroy();
225          } else
226          {
227              pelaaja1.Destroy();
228            elamia--;
229            if (elamia < 1)
230            {
231                //TODO: Tänne paluu ekaan kenttään.
232                //Tähän viesti: Peli ohi
233
234
235            }
236              ClearAll();
237              Begin();
238                   }
239      }
240
241
242   
243
244
245
246
247
248    void Takasin(PhysicsObject vihollinen, PhysicsObject taso)
249    {
250       
251    }
252
253
254    void Tiili2(PhysicsObject pelihahmo, PhysicsObject tiili)
255    {
256        if (tiili.AbsBottom + 10 > pelihahmo.AbsTop)
257            {
258                 tiili.Destroy();
259            } else
260            {
261               
262               
263                     }
264    }
265
266
267}
268
269
270
271
272
273
274
275
276           
277
278
279
280
281
282
283
284
285
286
287
288   
289   
290
Note: See TracBrowser for help on using the repository browser.