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

Revision 3600, 11.4 KB checked in by jejokiil, 8 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    SoundEffect hyppyAani = LoadSoundEffect("smb_jumpsmall1");
24    SoundEffect kolikkoAani = LoadSoundEffect("smb_coin1");
25    SoundEffect huutoAani = LoadSoundEffect("scream");
26
27    public override void Begin()
28    {
29        idleVasen = Image.Mirror(idleOikea);
30        LuoKentta();
31        LuoPelaaja();
32        LuoPisteLaskuri();
33        AsetaKontrollit();
34        Gravity = new Vector(0, -1100);
35
36        MediaPlayer.Play("taustamusa");
37        MediaPlayer.Volume = 0.2;
38        MediaPlayer.IsRepeating = true;
39
40
41        Camera.ZoomFactor = 1;
42        Camera.Follow(ukko);
43        AddCollisionHandler<PlatformCharacter, PhysicsObject>(ukko, KolikkoKeratty);
44        AddCollisionHandler<PlatformCharacter, PhysicsObject>(ukko, SieniOsuma);
45    }
46
47    void LuoPelaaja()
48    {
49        ukko = new PlatformCharacter(15, 25);
50        ukko.X = -500;
51        ukko.Y = Level.Bottom;
52        ukko.Shape = Shape.FromImage(idleOikea);
53        ukko.Color = Color.Transparent;
54        ukko.Image = LoadImage("hqkeijo");
55        ukko.CanRotate = false;
56        ukko.MaintainMomentum = false;
57        ukko.LinearDamping = 0.93;
58        ukko.CollisionIgnoreGroup = 1;
59        ukko.LeftIdleAnimation = new Animation(idleVasen);
60        ukko.RightIdleAnimation = new Animation(idleOikea);
61        ukko.LeftWalkingAnimation = new Animation(idleVasen);
62        ukko.RightWalkingAnimation = new Animation(idleOikea);
63        Add(ukko);
64    }
65   
66    void LuoKentta()
67    {
68        Level.BackgroundColor = Color.SkyBlue;
69        PhysicsObject alareuna = Level.CreateBottomBorder();
70        alareuna.IsVisible = true;
71        alareuna.Color = Color.DarkOrange;
72
73        PhysicsObject koro1 = PhysicsObject.CreateStaticObject(300, 100);
74        koro1.X = 200;
75        koro1.Y = Level.Bottom + 50;
76        koro1.Color = Color.DarkOrange;
77        koro1.Shape = Shape.Rectangle;
78        Add(koro1);
79       
80        // Myrkkysienen tekeminen -- Myrkkysienen koko: 25 x 25
81        LuoMyrkkysieni(-150.0, Level.Bottom + 12.5);
82        LuoMyrkkysieni(-100.0, Level.Bottom + 12.5);
83        LuoMyrkkysieni(-50.0, Level.Bottom + 12.5);
84        LuoMyrkkysieni(0.0, Level.Bottom + 12.5);
85        LuoMyrkkysieni(100.0, Level.Bottom + 112.0);
86        LuoMyrkkysieni(Level.Right - 631.5, Level.Bottom + 325.0);
87        LuoMyrkkysieni(Level.Right - 590, Level.Bottom + 285.0);
88        LuoMyrkkysieni(Level.Right - 440, Level.Bottom + 555.0);
89        LuoMyrkkysieni(Level.Right - 380, Level.Bottom + 555.0);
90        LuoMyrkkysieni(Level.Right - 320, Level.Bottom + 555.0);
91        // Tasojen tekeminen -- Tason koko: 23 x 9
92        LuoTaso(-150, Level.Bottom + 40.0);
93        LuoTaso(-100, Level.Bottom + 40.0);
94        LuoTaso(-20, Level.Bottom + 60.0);
95        LuoTaso(20, Level.Bottom + 100.0);
96        LuoTaso(Level.Right - 60, Level.Bottom + 10.0);
97        LuoTaso(Level.Right - 20, Level.Bottom + 50.0);
98        LuoTaso(Level.Right - 60, Level.Bottom + 90.0);
99        LuoTaso(Level.Right - 120, Level.Bottom + 130.0);
100        LuoTaso(Level.Right - 150, Level.Bottom + 170.0);
101        LuoTaso(Level.Right - 173, Level.Bottom + 170.0);
102        LuoTaso(Level.Right - 196, Level.Bottom + 170.0);
103        LuoTaso(Level.Right - 219, Level.Bottom + 220.0);
104        LuoTaso(Level.Right - 262, Level.Bottom + 270.0);
105        LuoTaso(Level.Right - 350, Level.Bottom + 270.0);
106        LuoTaso(Level.Right - 390, Level.Bottom + 310.0);
107        LuoLiikkuvaTaso(Level.Right - 530, Level.Bottom + 310.0);
108        LuoTaso(Level.Right - 560, Level.Bottom + 310.0);
109        LuoTaso(Level.Right - 590, Level.Bottom + 270.0);
110        LuoTaso(Level.Right - 620, Level.Bottom + 310.0);
111        LuoTaso(Level.Right - 643, Level.Bottom + 310.0);
112        LuoTaso(Level.Right - 666, Level.Bottom + 310.0);
113        LuoTaso(Level.Right - 660, Level.Bottom + 240.0);
114        LuoTaso(Level.Right - 608.5, Level.Bottom + 200.0);
115        LuoTaso(Level.Right - 690, Level.Bottom + 270.0);
116        LuoTaso(Level.Right - 750, Level.Bottom + 270.0);
117        LuoTaso(Level.Right - 820, Level.Bottom + 300.0);
118        LuoTaso(Level.Right - 860, Level.Bottom + 330.0);
119        LuoTaso(Level.Right - 883, Level.Bottom + 330.0);
120        LuoTaso(Level.Right - 906, Level.Bottom + 330.0);
121        LuoTaso(Level.Right - 929, Level.Bottom + 330.0);
122        LuoTaso(Level.Right - 952, Level.Bottom + 330.0);
123        LuoTaso(Level.Right - 975, Level.Bottom + 330.0);
124        LuoTaso(Level.Right - 975, Level.Bottom + 390.0);
125        LuoTaso(Level.Right - 952, Level.Bottom + 450.0);
126        LuoTaso(Level.Right - 975, Level.Bottom + 510.0);
127        LuoTaso(Level.Right - 900, Level.Bottom + 550.0);
128        LuoTaso(Level.Right - 850, Level.Bottom + 550.0);
129        LuoTaso(Level.Right - 827, Level.Bottom + 541.0);
130        LuoTaso(Level.Right - 804, Level.Bottom + 532.0);
131        LuoTaso(Level.Right - 782, Level.Bottom + 523.0);
132        LuoTaso(Level.Right - 700, Level.Bottom + 523.0);
133        LuoTaso(Level.Right - 620, Level.Bottom + 523.0);
134        LuoTaso(Level.Right - 550, Level.Bottom + 523.0);
135        LuoTaso(Level.Right - 470, Level.Bottom + 540.0);
136        LuoTaso(Level.Right - 440, Level.Bottom + 540.0);
137        LuoTaso(Level.Right - 410, Level.Bottom + 540.0);
138        LuoTaso(Level.Right - 380, Level.Bottom + 540.0);
139        LuoTaso(Level.Right - 350, Level.Bottom + 540.0);
140        LuoTaso(Level.Right - 320, Level.Bottom + 540.0);
141        LuoTaso(Level.Right - 290, Level.Bottom + 540.0);
142        LuoTaso(Level.Right - 260, Level.Bottom + 540.0);
143        LuoTaso(Level.Right - 237, Level.Bottom + 549.0);
144        LuoTaso(Level.Right - 214, Level.Bottom + 558.0);
145        LuoTaso(Level.Right - 191, Level.Bottom + 567.0);
146        LuoTaso(Level.Right - 168, Level.Bottom + 576.0);
147        LuoTaso(Level.Right - 145, Level.Bottom + 576.0);
148        LuoTaso(Level.Right - 122, Level.Bottom + 576.0);
149        LuoTaso(Level.Right - 99, Level.Bottom + 576.0);
150        LuoTaso(Level.Right - 76, Level.Bottom + 576.0);
151        LuoTaso(Level.Right - 53, Level.Bottom + 576.0);
152        LuoTaso(Level.Right - 30, Level.Bottom + 576.0);
153        LuoTaso(Level.Right - 7, Level.Bottom + 576.0);
154        // Kolikon tekeminen -- Kolikon koko: 12 x 12
155        LuoKolikko(-150.0, Level.Bottom + 53.0, "kolikko");
156        LuoKolikko(-100.0, Level.Bottom + 53.0, "kolikko");
157        LuoKolikko(20.0, Level.Bottom + 115.0, "kolikko");
158        LuoKolikko(Level.Right - 100.0, Level.Bottom + 10.0, "kolikko");
159        LuoKolikko(Level.Right - 115.0, Level.Bottom + 10.0, "kolikko");
160        LuoKolikko(Level.Right - 130.0, Level.Bottom + 10.0, "kolikko");
161        LuoKolikko(Level.Right - 219.0, Level.Bottom + 232.5, "kolikko");
162        LuoKolikko(Level.Right - 262.0, Level.Bottom + 282.5, "kolikko");
163        LuoKolikko(Level.Right - 560.0, Level.Bottom + 322.0, "kolikko");
164        LuoKolikko(Level.Right - 666.0, Level.Bottom + 322.0, "kolikko");
165        LuoKolikko(Level.Right - 608.0, Level.Bottom + 212.0, "kolikko");
166        LuoKolikko(Level.Right - 975, Level.Bottom + 402.0, "kolikko");
167        LuoKolikko(Level.Right - 952, Level.Bottom + 462.0, "kolikko");
168       
169        Level.CreateBorders();
170       
171        PhysicsObject kyltti = PhysicsObject.CreateStaticObject(100, 50);
172        kyltti.X = -350;
173        kyltti.Y = Level.Bottom + 25.0;
174        kyltti.Color = Color.Transparent;
175        kyltti.Image = LoadImage("hqinfo");
176        kyltti.CollisionIgnoreGroup = 1;
177        Add(kyltti, -1);
178    }
179
180     void LuoMyrkkysieni(double x, double y)
181   {
182        PhysicsObject sieni = PhysicsObject.CreateStaticObject(25, 25);
183        sieni.Color = Color.Transparent;
184        sieni.Image = LoadImage("hqmyrkkysieni");
185        sieni.Shape = Shape.Rectangle;
186        sieni.Tag = "sieni";
187        sieni.X = x;
188        sieni.Y = y;
189        Add(sieni);
190    }
191
192    void LuoKolikko(double x, double y, String tagi)
193    {
194        PhysicsObject kolikko = PhysicsObject.CreateStaticObject(12, 12);
195        kolikko.Color = Color.Transparent;
196        kolikko.Image = LoadImage("hqkolikko");
197        kolikko.Tag = "kolikko";
198        kolikko.X = x;
199        kolikko.Y = y;
200        Add(kolikko);
201    }
202
203   void KolikkoKeratty(PhysicsObject tormaaja, PhysicsObject kohde)
204      {
205          if (kohde.Tag.ToString() == "kolikko")
206          {
207              pistelaskuri.Value += 1;
208              kohde.Destroy();
209              kolikkoAani.Play();
210          }
211      }
212
213    void SieniOsuma(PhysicsObject tormaaja, PhysicsObject kohde)
214    {
215        if (kohde.Tag.ToString() == "sieni")
216        {
217            ukko.X = -500;
218            ukko.Y = Level.Bottom;
219            huutoAani.Play();
220        }
221    }
222
223
224    IntMeter pistelaskuri;
225
226    void LuoPisteLaskuri()
227    {
228        pistelaskuri = new IntMeter(0);
229
230        Label pisteNaytto = new Label();
231        pisteNaytto.Title = "Kolikot";
232        pisteNaytto.X = Screen.Right - 100;
233        pisteNaytto.Y = Screen.Top - 100;
234        pisteNaytto.TextColor = Color.Black;
235        pisteNaytto.Color = Color.Transparent;
236        pisteNaytto.BindTo(pistelaskuri);
237        Add(pisteNaytto);
238    }
239
240    void AsetaNopeus(PlatformCharacter ukko, double liikkumisnopeus)
241    {
242        ukko.Walk(liikkumisnopeus);
243    }
244
245    void Hyppaa(PlatformCharacter ukko, double hyppy)
246    {
247        ukko.Jump(hyppy);
248        hyppyAani.Play();
249    }
250
251    void AsetaKontrollit()
252    {
253        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liikuta hahmoa oikealle", ukko, liikkumisnopeus);
254        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liikuta hahmoa vasemmalle", ukko, -1 * liikkumisnopeus);
255        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Hyppää", ukko, 650.0);
256        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
257        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
258        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
259    }
260
261    void LuoTaso(double x, double y)
262    {
263        PhysicsObject taso = PhysicsObject.CreateStaticObject(23, 9);
264        taso.X = x;
265        taso.Y = y;
266        taso.Image = LoadImage("hqalusta");
267        taso.Shape = Shape.FromImage(alusta);
268        Add(taso);
269    }
270
271    void LuoLiikkuvaTaso(double x, double y)
272    {
273        PhysicsObject taso = new PhysicsObject(23, 9);
274        taso.Collided += VaihdaSuunta;
275        taso.IgnoresGravity = true;
276        taso.Mass = 100000;
277        taso.Velocity = new Vector(tasonopeus, 0);
278        taso.X = x;
279        taso.Y = y;
280        taso.Image = LoadImage("hqalusta");
281        taso.Shape = Shape.FromImage(alusta);
282        Add(taso);
283    }
284
285    void VaihdaSuunta(IPhysicsObject törmääjä, IPhysicsObject kohde)
286    {
287
288        törmääjä.Velocity *= -1;
289    }
290
291}
Note: See TracBrowser for help on using the repository browser.