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

Revision 6680, 6.7 KB checked in by lupepura, 5 years ago (diff)

Edistyy...

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