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

Revision 6777, 8.2 KB checked in by lupepura, 8 years ago (diff)

Valmis!

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