source: 2012/27/JesseK/omapeli/omapeli/omapeli/omapeli.cs @ 3657

Revision 3657, 13.5 KB checked in by jejokiil, 10 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class omapeli : PhysicsGame
10{
11    PhysicsObject kolikko;
12    Image idleOikea = LoadImage("hqkeijo");
13    Image idleVasen;
14    Image myrkkysieni = LoadImage("hqmyrkkysieni");
15    Image alusta = LoadImage("hqalusta");
16    double tasonopeus = 10;
17    const double liikkumisnopeus = 90;
18    // Vector nopeusOikea = new Vector(150, 0);
19    // Vector nopeusVasen = new Vector(-150, 0);
20    // Vector nopeusHyppy = new Vector(0, 300);
21    PlatformCharacter ukko;
22    // PhysicsObject taso;
23    PhysicsObject maaliviiva;
24    SoundEffect hyppyAani = LoadSoundEffect("smb_jumpsmall1");
25    SoundEffect kolikkoAani = LoadSoundEffect("smb_coin1");
26    SoundEffect huutoAani = LoadSoundEffect("scream");
27    PhysicsObject oletViineri;
28
29    public override void Begin()
30    {
31        idleVasen = Image.Mirror(idleOikea);
32        LuoKentta();
33        LuoPelaaja();
34        LuoPisteLaskuri();
35        AsetaKontrollit();
36        Gravity = new Vector(0, -1100);
37
38        MediaPlayer.Play("taustamusa");
39        MediaPlayer.Volume = 0.5;
40        MediaPlayer.IsRepeating = true;
41
42        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
43"Aloita peli", "Lopeta");
44        alkuValikko.ItemSelected += PainettiinValikonNappia;
45        Add(alkuValikko);
46
47        Camera.ZoomFactor = 1.3;
48        Camera.Follow(ukko);
49        AddCollisionHandler<PlatformCharacter, PhysicsObject>(ukko, KolikkoKeratty);
50        AddCollisionHandler<PlatformCharacter, PhysicsObject>(ukko, SieniOsuma);
51        AddCollisionHandler<PlatformCharacter, PhysicsObject>(ukko, UkkoMaaliin);
52    }
53
54    void PainettiinValikonNappia(int valinta)
55    {
56        switch (valinta)
57        {
58            case 0:
59                // AloitaPeli();
60                break;
61            case 1:
62                Exit();
63                break;
64        }
65    } 
66
67    void LuoPelaaja()
68    {
69        ukko = new PlatformCharacter(15, 25);
70        ukko.X = -500;
71        ukko.Y = Level.Bottom;
72        ukko.Shape = Shape.FromImage(idleOikea);
73        ukko.Color = Color.Transparent;
74        ukko.Image = LoadImage("hqkeijo");
75        ukko.CanRotate = false;
76        ukko.MaintainMomentum = false;
77        ukko.LinearDamping = 0.93;
78        ukko.CollisionIgnoreGroup = 1;
79        ukko.LeftIdleAnimation = new Animation(idleVasen);
80        ukko.RightIdleAnimation = new Animation(idleOikea);
81        ukko.LeftWalkingAnimation = new Animation(idleVasen);
82        ukko.RightWalkingAnimation = new Animation(idleOikea);
83        Add(ukko);
84    }
85   
86    void LuoKentta()
87    {
88        Level.BackgroundColor = Color.SkyBlue;
89        PhysicsObject alareuna = Level.CreateBottomBorder();
90        alareuna.IsVisible = true;
91        alareuna.Color = Color.DarkOrange;
92
93        PhysicsObject koro1 = PhysicsObject.CreateStaticObject(300, 100);
94        koro1.X = 200;
95        koro1.Y = Level.Bottom + 50;
96        koro1.Color = Color.DarkOrange;
97        koro1.Shape = Shape.Rectangle;
98        Add(koro1);
99       
100        // Myrkkysienen tekeminen -- Myrkkysienen koko: 25 x 25
101        LuoMyrkkysieni(-150.0, Level.Bottom + 12.5);
102        LuoMyrkkysieni(-100.0, Level.Bottom + 12.5);
103        LuoMyrkkysieni(-50.0, Level.Bottom + 12.5);
104        LuoMyrkkysieni(0.0, Level.Bottom + 12.5);
105        LuoMyrkkysieni(100.0, Level.Bottom + 112.0);
106        LuoMyrkkysieni(Level.Right - 631.5, Level.Bottom + 325.0);
107        LuoMyrkkysieni(Level.Right - 590, Level.Bottom + 285.0);
108        LuoMyrkkysieni(Level.Right - 440, Level.Bottom + 555.0);
109        LuoMyrkkysieni(Level.Right - 380, Level.Bottom + 555.0);
110        LuoMyrkkysieni(Level.Right - 320, Level.Bottom + 555.0);
111        // Tasojen tekeminen -- Tason koko: 23 x 9
112        LuoTaso(-150, Level.Bottom + 40.0);
113        LuoTaso(-100, Level.Bottom + 40.0);
114        LuoTaso(-20, Level.Bottom + 60.0);
115        LuoTaso(20, Level.Bottom + 100.0);
116        LuoTaso(Level.Right - 60, Level.Bottom + 10.0);
117        LuoTaso(Level.Right - 20, Level.Bottom + 50.0);
118        LuoTaso(Level.Right - 60, Level.Bottom + 90.0);
119        LuoTaso(Level.Right - 120, Level.Bottom + 130.0);
120        LuoTaso(Level.Right - 150, Level.Bottom + 170.0);
121        LuoTaso(Level.Right - 173, Level.Bottom + 170.0);
122        LuoTaso(Level.Right - 196, Level.Bottom + 170.0);
123        LuoTaso(Level.Right - 219, Level.Bottom + 220.0);
124        LuoTaso(Level.Right - 262, Level.Bottom + 270.0);
125        LuoTaso(Level.Right - 350, Level.Bottom + 270.0);
126        LuoTaso(Level.Right - 390, Level.Bottom + 310.0);
127        LuoLiikkuvaTaso(Level.Right - 530, Level.Bottom + 310.0);
128        LuoTaso(Level.Right - 560, Level.Bottom + 310.0);
129        LuoTaso(Level.Right - 590, Level.Bottom + 270.0);
130        LuoTaso(Level.Right - 620, Level.Bottom + 310.0);
131        LuoTaso(Level.Right - 643, Level.Bottom + 310.0);
132        LuoTaso(Level.Right - 666, Level.Bottom + 310.0);
133        LuoTaso(Level.Right - 660, Level.Bottom + 240.0);
134        LuoTaso(Level.Right - 608.5, Level.Bottom + 200.0);
135        LuoTaso(Level.Right - 690, Level.Bottom + 270.0);
136        LuoTaso(Level.Right - 750, Level.Bottom + 270.0);
137        LuoTaso(Level.Right - 820, Level.Bottom + 300.0);
138        LuoTaso(Level.Right - 860, Level.Bottom + 330.0);
139        LuoTaso(Level.Right - 883, Level.Bottom + 330.0);
140        LuoTaso(Level.Right - 906, Level.Bottom + 330.0);
141        LuoTaso(Level.Right - 929, Level.Bottom + 330.0);
142        LuoTaso(Level.Right - 952, Level.Bottom + 330.0);
143        LuoTaso(Level.Right - 975, Level.Bottom + 330.0);
144        LuoTaso(Level.Right - 975, Level.Bottom + 390.0);
145        LuoTaso(Level.Right - 952, Level.Bottom + 450.0);
146        LuoTaso(Level.Right - 975, Level.Bottom + 510.0);
147        LuoTaso(Level.Right - 900, Level.Bottom + 550.0);
148        LuoTaso(Level.Right - 850, Level.Bottom + 550.0);
149        LuoTaso(Level.Right - 827, Level.Bottom + 541.0);
150        LuoTaso(Level.Right - 804, Level.Bottom + 532.0);
151        LuoTaso(Level.Right - 782, Level.Bottom + 523.0);
152        LuoTaso(Level.Right - 700, Level.Bottom + 523.0);
153        LuoTaso(Level.Right - 620, Level.Bottom + 523.0);
154        LuoTaso(Level.Right - 550, Level.Bottom + 523.0);
155        LuoTaso(Level.Right - 470, Level.Bottom + 540.0);
156        LuoTaso(Level.Right - 440, Level.Bottom + 540.0);
157        LuoTaso(Level.Right - 410, Level.Bottom + 540.0);
158        LuoTaso(Level.Right - 380, Level.Bottom + 540.0);
159        LuoTaso(Level.Right - 350, Level.Bottom + 540.0);
160        LuoTaso(Level.Right - 320, Level.Bottom + 540.0);
161        LuoTaso(Level.Right - 290, Level.Bottom + 540.0);
162        LuoTaso(Level.Right - 260, Level.Bottom + 540.0);
163        LuoTaso(Level.Right - 237, Level.Bottom + 549.0);
164        LuoTaso(Level.Right - 214, Level.Bottom + 558.0);
165        LuoTaso(Level.Right - 191, Level.Bottom + 567.0);
166        LuoTaso(Level.Right - 168, Level.Bottom + 576.0);
167        LuoTaso(Level.Right - 145, Level.Bottom + 576.0);
168        LuoTaso(Level.Right - 122, Level.Bottom + 576.0);
169        LuoTaso(Level.Right - 99, Level.Bottom + 576.0);
170        LuoTaso(Level.Right - 76, Level.Bottom + 576.0);
171        LuoTaso(Level.Right - 53, Level.Bottom + 576.0);
172        LuoTaso(Level.Right - 30, Level.Bottom + 576.0);
173        LuoTaso(Level.Right - 7, Level.Bottom + 576.0);
174        // Kolikon tekeminen -- Kolikon koko: 12 x 12
175        LuoKolikko(-150.0, Level.Bottom + 53.0, "kolikko");
176        LuoKolikko(-100.0, Level.Bottom + 53.0, "kolikko");
177        LuoKolikko(20.0, Level.Bottom + 115.0, "kolikko");
178        LuoKolikko(Level.Right - 100.0, Level.Bottom + 10.0, "kolikko");
179        LuoKolikko(Level.Right - 115.0, Level.Bottom + 10.0, "kolikko");
180        LuoKolikko(Level.Right - 130.0, Level.Bottom + 10.0, "kolikko");
181        LuoKolikko(Level.Right - 219.0, Level.Bottom + 232.5, "kolikko");
182        LuoKolikko(Level.Right - 262.0, Level.Bottom + 282.5, "kolikko");
183        LuoKolikko(Level.Right - 560.0, Level.Bottom + 322.0, "kolikko");
184        LuoKolikko(Level.Right - 666.0, Level.Bottom + 322.0, "kolikko");
185        LuoKolikko(Level.Right - 608.0, Level.Bottom + 212.0, "kolikko");
186        LuoKolikko(Level.Right - 975, Level.Bottom + 402.0, "kolikko");
187        LuoKolikko(Level.Right - 952, Level.Bottom + 462.0, "kolikko");
188        LuoKolikko(Level.Right - 260, Level.Bottom + 552.0, "kolikko");
189        LuoKolikko(Level.Right - 410, Level.Bottom + 552.0, "kolikko");
190
191        maaliviiva = PhysicsObject.CreateStaticObject(10, 100);
192        maaliviiva.X = Level.Right - 169;
193        maaliviiva.Y = Level.Bottom + 633.0;
194        maaliviiva.Color = Color.DarkOrange;
195        Add(maaliviiva);
196
197        LuoMaali(Level.Right - 80.5, Level.Bottom + 588, "maalialue");
198       
199        Level.CreateBorders();
200       
201        PhysicsObject kyltti = PhysicsObject.CreateStaticObject(100, 50);
202        kyltti.X = -350;
203        kyltti.Y = Level.Bottom + 25.0;
204        kyltti.Color = Color.Transparent;
205        kyltti.Image = LoadImage("hqinfo");
206        kyltti.CollisionIgnoreGroup = 1;
207        Add(kyltti, -1);
208    }
209
210     void LuoMyrkkysieni(double x, double y)
211   {
212        PhysicsObject sieni = PhysicsObject.CreateStaticObject(25, 25);
213        sieni.Color = Color.Transparent;
214        sieni.Image = LoadImage("hqmyrkkysieni");
215        sieni.Shape = Shape.Rectangle;
216        sieni.Tag = "sieni";
217        sieni.X = x;
218        sieni.Y = y;
219        Add(sieni);
220    }
221
222    void LuoKolikko(double x, double y, String tagi)
223    {
224        PhysicsObject kolikko = PhysicsObject.CreateStaticObject(12, 12);
225        kolikko.Color = Color.Transparent;
226        kolikko.Image = LoadImage("hqkolikko");
227        kolikko.Tag = "kolikko";
228        kolikko.X = x;
229        kolikko.Y = y;
230        Add(kolikko);
231    }
232
233   void KolikkoKeratty(PhysicsObject tormaaja, PhysicsObject kohde)
234      {
235          if (kohde.Tag.ToString() == "kolikko")
236          {
237              pistelaskuri.Value += 1;
238              kohde.Destroy();
239              kolikkoAani.Play();
240              if (pistelaskuri.Value == 15)
241              {
242                  maaliviiva.Destroy();
243              }
244          }
245      }
246
247    void UkkoMaaliin(PhysicsObject tormaaja, PhysicsObject kohde)
248        {
249            if (kohde.Tag.ToString() == "maalialue")
250            {
251                tormaaja.Velocity = Vector.Zero;
252                Keyboard.DisableAll();
253                LuoVoittoKuva(Level.Right - 80.5, Level.Bottom + 688);
254                Timer.SingleShot(3.0, ClearAll);
255                Timer.SingleShot(3.0, Begin);
256            }
257        }
258
259    void LuoVoittoKuva(double x, double y)
260    {
261        oletViineri = PhysicsObject.CreateStaticObject(161, 100);
262        oletViineri.X = x;
263        oletViineri.Y = y;
264        oletViineri.Color = Color.Transparent;
265        oletViineri.Image = LoadImage("youwin");
266        Add(oletViineri);
267    }
268
269    void SieniOsuma(PhysicsObject tormaaja, PhysicsObject kohde)
270    {
271        if (kohde.Tag.ToString() == "sieni")
272        {
273            ukko.X = -500;
274            ukko.Y = Level.Bottom;
275            huutoAani.Play();
276        }
277    }
278
279    IntMeter pistelaskuri;
280
281    void LuoPisteLaskuri()
282    {
283        pistelaskuri = new IntMeter(0);
284
285        Label pisteNaytto = new Label();
286        pisteNaytto.Title = "Kolikot";
287        pisteNaytto.X = Screen.Right - 100;
288        pisteNaytto.Y = Screen.Top - 100;
289        pisteNaytto.TextColor = Color.Black;
290        pisteNaytto.Color = Color.Transparent;
291        pisteNaytto.BindTo(pistelaskuri);
292        Add(pisteNaytto);
293    }
294
295    void AsetaNopeus(PlatformCharacter ukko, double liikkumisnopeus)
296    {
297        ukko.Walk(liikkumisnopeus);
298    }
299
300    void Hyppaa(PlatformCharacter ukko, double hyppy)
301    {
302        ukko.Jump(hyppy);
303        hyppyAani.Play();
304    }
305
306    void AsetaKontrollit()
307    {
308        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liikuta hahmoa oikealle", ukko, liikkumisnopeus);
309        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liikuta hahmoa vasemmalle", ukko, -1 * liikkumisnopeus);
310        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Hyppää", ukko, 650.0);
311        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
312        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
313        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
314    }
315
316    void LuoTaso(double x, double y)
317    {
318        PhysicsObject taso = PhysicsObject.CreateStaticObject(23, 9);
319        taso.X = x;
320        taso.Y = y;
321        taso.Image = LoadImage("hqalusta");
322        taso.Shape = Shape.FromImage(alusta);
323        Add(taso);
324    }
325
326    void LuoLiikkuvaTaso(double x, double y)
327    {
328        PhysicsObject taso = new PhysicsObject(23, 9);
329        taso.Collided += VaihdaSuunta;
330        taso.IgnoresGravity = true;
331        taso.Mass = 100000;
332        taso.Velocity = new Vector(tasonopeus, 0);
333        taso.X = x;
334        taso.Y = y;
335        taso.Image = LoadImage("hqalusta");
336        taso.Shape = Shape.FromImage(alusta);
337        Add(taso);
338    }
339
340    void LuoMaali(double x, double y, String tagi)
341    {
342        PhysicsObject maaliAlue = new PhysicsObject(161, 10);
343        maaliAlue.X = x;
344        maaliAlue.Y = y;
345        maaliAlue.Color = Color.Orange;
346        maaliAlue.Tag = "maalialue";
347        Add(maaliAlue);
348    }
349
350
351    void VaihdaSuunta(IPhysicsObject törmääjä, IPhysicsObject kohde)
352    {
353
354        törmääjä.Velocity *= -1;
355    }
356
357}
Note: See TracBrowser for help on using the repository browser.