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

Revision 6732, 7.3 KB checked in by lupepura, 5 years ago (diff)

l

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