source: 2015/27/LukaP/LukanPeli/LukanPeli/LukanPeli/LukanPeli.cs @ 6754

Revision 6754, 7.6 KB checked in by lupepura, 8 years ago (diff)

K V

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class LukanPeli : PhysicsGame
10{
11   
12    const double nopeus = 250;
13    const double hyppyNopeus = 850;
14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter pelaaja1;
17
18    Image pelaajanKuva = LoadImage("Ukko");
19    Image tahtiKuva = LoadImage("Kolikko");
20    Image Vihunkuva = LoadImage("Vihu");
21    Image Maalinkuva = LoadImage("Maali");
22    Image taustaKuva = LoadImage("Background 3");
23
24   
25
26
27
28    PhysicsObject Vihu;
29    IntMeter pistelaskuri;
30    int kenttaNro = 1;
31   
32
33   
34
35
36
37
38
39
40
41    SoundEffect maaliAani = LoadSoundEffect("maaliAani");
42
43    public override void Begin()
44    {
45
46
47        LuoAlkuValikko();
48       
49    }
50
51    void LuoKentta(string kentannimi)
52    {
53        TileMap kentta = TileMap.FromLevelAsset(kentannimi);
54        kentta.SetTileMethod('#', LisaaTaso);
55        kentta.SetTileMethod('*', LisaaTahti);
56        kentta.SetTileMethod('N', LisaaPelaaja);
57        kentta.SetTileMethod('1', LisaaKolo);
58        kentta.SetTileMethod('V', LisaaVihu);
59        kentta.SetTileMethod('M', LisaaMaali);
60        IsFullScreen = true;
61       
62       
63        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
64       // Level.Background.CreateGradient(Color.White, Color.SkyBlue);
65          Level.Background.Image = taustaKuva;
66          Level.Background.TileToLevel();
67
68    }
69
70    void LisaaTaso(Vector paikka, double leveys, double korkeus)
71    {
72        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
73        taso.Position = paikka;
74        taso.Color = Color.Green;
75        Add(taso);
76    }
77    void LisaaKolo(Vector paikka, double leveys, double korkeus)
78    {
79        PhysicsObject kolo = PhysicsObject.CreateStaticObject(leveys, korkeus);
80        kolo.Position = paikka;
81        kolo.Tag = "kolo";
82        kolo.IgnoresCollisionResponse = true;
83        kolo.Color = Color.Transparent;
84        Add(kolo);
85    }
86
87    void LisaaTahti(Vector paikka, double leveys, double korkeus)
88    {
89        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
90        tahti.IgnoresCollisionResponse = true;
91        tahti.Position = paikka;
92        tahti.Image = tahtiKuva;
93        tahti.Tag = "tahti";
94        Add(tahti);
95    }
96
97    void LisaaMaali(Vector paikka, double leveys, double korkeus)
98    {
99        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
100        maali.Tag = "maali";
101        maali.Position = paikka;
102        Add(maali);
103        maali.Image = Maalinkuva;
104    }
105
106    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
107    {
108        pelaaja1 = new PlatformCharacter(leveys, korkeus);
109        pelaaja1.Position = paikka;
110        pelaaja1.Mass = 4.0;
111        pelaaja1.Image = pelaajanKuva;
112        AddCollisionHandler(pelaaja1, "tahti", TormaaKolikkoon);
113        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
114        AddCollisionHandler(pelaaja1, "kolo", delegate(PhysicsObject a, PhysicsObject b)
115        {
116
117            a.Destroy();
118            MessageDisplay.Add("FAIL!");
119            Timer.SingleShot(1.0, SeuraavaKentta);
120            //ClearControls();
121        });
122        AddCollisionHandler(pelaaja1, "Pahis", PelaajaTormaaPahikseen);
123        Add(pelaaja1);
124    }
125
126    void LisaaNappaimet()
127    {
128        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
129        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
130
131
132        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
133        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
134        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
135
136        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
137
138        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
139        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
140        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
141
142        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
143    }
144
145    void Liikuta(PlatformCharacter hahmo, double nopeus)
146    {
147        hahmo.Walk(nopeus);
148    }
149
150    void Hyppaa(PlatformCharacter hahmo, double nopeus)
151    {
152        hahmo.Jump(nopeus);
153    }
154
155    void TormaaKolikkoon(PhysicsObject hahmo, PhysicsObject tahti)
156    {
157        maaliAani.Play();
158        MessageDisplay.Add("1X Kolikko Kerätty!");
159        tahti.Destroy();
160        pistelaskuri.Value += 1;
161
162
163
164    }
165
166    void PelaajaTormaaPahikseen(PhysicsObject pelaaja, PhysicsObject pahis)
167    {
168       
169        if (pahis.Top - 0.2 * pahis.Height< pelaaja.Bottom)
170        {
171            pahis.Destroy();
172            (pelaaja as PlatformCharacter).ForceJump(nopeus * 4);
173        }
174        else
175        {
176            pelaaja.Destroy();
177            MessageDisplay.Add("FAIL!");
178            Timer.SingleShot(1.0, SeuraavaKentta);
179        }
180    }
181
182
183    void LisaaVihu(Vector paikka, double leveys, double korkeus)
184    {
185        PlatformCharacter Vihu = new PlatformCharacter(40, 30);
186        Vihu.Shape = Shape.Rectangle;
187        Vihu.Mass = 10.0;
188        Add(Vihu);
189        Vihu.Position = paikka;
190        Vihu.Tag = "Pahis";
191        Vihu.Image = Vihunkuva;
192
193
194        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
195        tasoAivot.Speed = 250;
196        Vihu.Brain = tasoAivot;
197
198
199
200
201
202    }
203
204
205
206   void Luopistelaskuri()
207    {
208         pistelaskuri = new IntMeter(0);
209
210        Label pisteNaytto = new Label();
211        pisteNaytto.X = Screen.Left + 10;
212        pisteNaytto.Y = Screen.Top - 10;
213        pisteNaytto.TextColor = Color.Black;
214        pisteNaytto.Color = Color.White;
215        pisteNaytto.Title = "kolikot";
216
217        pisteNaytto.BindTo(pistelaskuri);
218        Add(pisteNaytto);
219    }
220
221
222
223
224    public void SeuraavaKentta()
225    {
226        ClearAll();
227
228        if (kenttaNro == 1) LuoKentta("kentta1");
229        else if (kenttaNro == 2) LuoKentta("kentta2");
230        else if (kenttaNro == 3) LuoKentta("kentta3");
231        else if (kenttaNro > 3) Exit();
232
233        LisaaNappaimet();
234        Luopistelaskuri();
235
236
237
238        Camera.Follow(pelaaja1);
239        Camera.ZoomFactor = 1.2;
240        Camera.StayInLevel = true;
241        Gravity = new Vector(0, -1000);
242
243    }
244
245   
246
247    void TormaaMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
248    {
249        //Kasvatetaan kenttänumeroa yhdellä ja siirrytään seuraavaan kenttään:
250        kenttaNro++;
251        SeuraavaKentta();
252    }
253
254    void TormasiPiikkiin(PhysicsObject pelaaja, PhysicsObject piikki)
255    {
256        //Sama kenttä ladataan alusta jos kenttänumeroa ei kasvateta:
257        SeuraavaKentta();
258    }
259
260   
261   void LuoAlkuValikko()
262   {
263    MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita Peli", "Lopeta");
264
265     Add(alkuValikko);
266
267
268     alkuValikko.AddItemHandler(0, AloitaPeli);
269     alkuValikko.AddItemHandler(1, Exit);
270     alkuValikko.DefaultCancel = 1;
271     alkuValikko.Color = Color.Red;
272   
273
274
275   }
276   void AloitaPeli()
277   {
278       SeuraavaKentta();
279   }
280
281   
282   
283
284
285
286
287   
288
289   void luotausta()
290   {
291       Level.Background.Image = taustaKuva;
292   }
293
294
295
296
297
298   
299   }
300
301
302
303
304
305
306
307
308
309
310
Note: See TracBrowser for help on using the repository browser.