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

Revision 3550, 7.6 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    public override void Begin()
24    {
25        idleVasen = Image.Mirror(idleOikea);
26
27        LuoKentta();
28        LuoPelaaja();
29        LuoPisteLaskuri();
30        AsetaKontrollit();
31        Gravity = new Vector(0, -1100);
32
33        Camera.ZoomFactor = 1.3;
34        Camera.Follow(ukko);
35        AddCollisionHandler<PlatformCharacter, PhysicsObject>(ukko, KolikkoKeratty);
36        AddCollisionHandler<PlatformCharacter, PhysicsObject>(ukko, SieniOsuma);
37    }
38   
39    void LuoPelaaja()
40    {
41        ukko = new PlatformCharacter(15, 25);
42        ukko.X = -500;
43        ukko.Y = Level.Bottom;
44        ukko.Shape = Shape.FromImage(idleOikea);
45        ukko.Color = Color.Transparent;
46        ukko.Image = LoadImage("hqkeijo");
47        ukko.CanRotate = false;
48        ukko.MaintainMomentum = false;
49        ukko.LinearDamping = 0.93;
50        ukko.CollisionIgnoreGroup = 1;
51        ukko.LeftIdleAnimation = new Animation(idleVasen);
52        ukko.RightIdleAnimation = new Animation(idleOikea);
53        ukko.LeftWalkingAnimation = new Animation(idleVasen);
54        ukko.RightWalkingAnimation = new Animation(idleOikea);
55        Add(ukko);
56    }
57   
58    void LuoKentta()
59    {
60        Level.BackgroundColor = Color.SkyBlue;
61        PhysicsObject alareuna = Level.CreateBottomBorder();
62        alareuna.IsVisible = true;
63        alareuna.Color = Color.DarkOrange;
64
65        PhysicsObject koro1 = PhysicsObject.CreateStaticObject(300, 100);
66        koro1.X = 200;
67        koro1.Y = Level.Bottom + 50;
68        koro1.Color = Color.DarkOrange;
69        koro1.Shape = Shape.Rectangle;
70        Add(koro1);
71        // Myrkkysienen tekeminen -- Myrkkysienen koko: 25 x 25
72        LuoMyrkkysieni(-150.0, Level.Bottom + 12.5);
73        LuoMyrkkysieni(-100.0, Level.Bottom + 12.5);
74        LuoMyrkkysieni(-50.0, Level.Bottom + 12.5);
75        LuoMyrkkysieni(0.0, Level.Bottom + 12.5);
76        LuoMyrkkysieni(100.0, Level.Bottom + 112.0);
77        // Tasojen tekeminen -- Tason koko: 23 x 9
78        LuoTaso(-150, Level.Bottom + 40.0);
79        LuoTaso(-100, Level.Bottom + 40.0);
80        LuoTaso(-20, Level.Bottom + 60.0);
81        LuoTaso(20, Level.Bottom + 100.0);
82        LuoTaso(Level.Right - 60, Level.Bottom + 10.0);
83        LuoTaso(Level.Right - 20, Level.Bottom + 50.0);
84        LuoTaso(Level.Right - 60, Level.Bottom + 90.0);
85        LuoTaso(Level.Right - 120, Level.Bottom + 130.0);
86        LuoTaso(Level.Right - 150, Level.Bottom + 170.0);
87        LuoTaso(Level.Right - 173, Level.Bottom + 170.0);
88        LuoTaso(Level.Right - 196, Level.Bottom + 170.0);
89        LuoTaso(Level.Right - 219, Level.Bottom + 220.0);
90        LuoTaso(Level.Right - 262, Level.Bottom + 270.0);
91        LuoTaso(Level.Right - 350, Level.Bottom + 270.0);
92        LuoTaso(Level.Right - 390, Level.Bottom + 310.0);
93        LuoLiikkuvaTaso(Level.Right - 530, Level.Bottom + 310.0);
94        LuoTaso(Level.Right - 560, Level.Bottom + 310.0);
95        // Kolikon tekeminen -- Kolikon koko: 12 x 12
96        LuoKolikko(-150.0, Level.Bottom + 53.0, "kolikko");
97        LuoKolikko(-100.0, Level.Bottom + 53.0, "kolikko");
98        LuoKolikko(20.0, Level.Bottom + 115.0, "kolikko");
99        LuoKolikko(Level.Right - 100.0, Level.Bottom + 10.0, "kolikko");
100        LuoKolikko(Level.Right - 115.0, Level.Bottom + 10.0, "kolikko");
101        LuoKolikko(Level.Right - 130.0, Level.Bottom + 10.0, "kolikko");
102        LuoKolikko(Level.Right - 219.0, Level.Bottom + 232.5, "kolikko");
103        LuoKolikko(Level.Right - 262.0, Level.Bottom + 282.5, "kolikko");
104        Level.CreateBorders();
105       
106
107        PhysicsObject kyltti = PhysicsObject.CreateStaticObject(100, 50);
108        kyltti.X = -350;
109        kyltti.Y = Level.Bottom + 25.0;
110        kyltti.Color = Color.Transparent;
111        kyltti.Image = LoadImage("hqinfo");
112        kyltti.CollisionIgnoreGroup = 1;
113        Add(kyltti);
114    }
115
116     void LuoMyrkkysieni(double x, double y)
117   {
118        PhysicsObject sieni = PhysicsObject.CreateStaticObject(25, 25);
119        sieni.Color = Color.Transparent;
120        sieni.Image = LoadImage("hqmyrkkysieni");
121        sieni.Shape = Shape.Rectangle;
122        sieni.Tag = "sieni";
123        sieni.X = x;
124        sieni.Y = y;
125        Add(sieni);
126    }
127
128    void LuoKolikko(double x, double y, String tagi)
129    {
130        PhysicsObject kolikko = PhysicsObject.CreateStaticObject(12, 12);
131        kolikko.Color = Color.Transparent;
132        kolikko.Image = LoadImage("hqkolikko");
133        kolikko.Tag = "kolikko";
134        kolikko.X = x;
135        kolikko.Y = y;
136        Add(kolikko);
137    }
138
139   void KolikkoKeratty(PhysicsObject tormaaja, PhysicsObject kohde)
140      {
141          if (kohde.Tag.ToString() == "kolikko")
142          {
143              pistelaskuri.Value += 1;
144              kohde.Destroy();
145          }
146      }
147
148    void SieniOsuma(PhysicsObject tormaaja, PhysicsObject kohde)
149    {
150        if (kohde.Tag.ToString() == "sieni")
151        {
152            ukko.X = -500;
153            ukko.Y = Level.Bottom;
154        }
155    }
156
157
158    IntMeter pistelaskuri;
159
160    void LuoPisteLaskuri()
161    {
162        pistelaskuri = new IntMeter(0);
163
164        Label pisteNaytto = new Label();
165        pisteNaytto.Title = "Kolikot";
166        pisteNaytto.X = Screen.Left + 100;
167        pisteNaytto.Y = Screen.Top - 100;
168        pisteNaytto.TextColor = Color.Black;
169        pisteNaytto.Color = Color.Transparent;
170        pisteNaytto.BindTo(pistelaskuri);
171        Add(pisteNaytto);
172    }
173
174    void AsetaNopeus(PlatformCharacter ukko, double liikkumisnopeus)
175    {
176        ukko.Walk(liikkumisnopeus);
177    }
178
179    void Hyppaa(PlatformCharacter ukko, double hyppy)
180    {
181        ukko.Jump(hyppy);
182    }
183
184    void AsetaKontrollit()
185    {
186        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liikuta hahmoa oikealle", ukko, liikkumisnopeus);
187        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liikuta hahmoa vasemmalle", ukko, -1 * liikkumisnopeus);
188        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Hyppää", ukko, 650.0);
189        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
190        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
191    }
192
193    void LuoTaso(double x, double y)
194    {
195        PhysicsObject taso = PhysicsObject.CreateStaticObject(23, 9);
196        taso.X = x;
197        taso.Y = y;
198        taso.Image = LoadImage("hqalusta");
199        taso.Shape = Shape.FromImage(alusta);
200        Add(taso);
201    }
202
203    void LuoLiikkuvaTaso(double x, double y)
204    {
205        PhysicsObject taso = new PhysicsObject(23, 9);
206        taso.Collided += VaihdaSuunta;
207        taso.IgnoresGravity = true;
208        taso.Mass = 100000;
209        taso.Velocity = new Vector(tasonopeus, 0);
210        taso.X = x;
211        taso.Y = y;
212        taso.Image = LoadImage("hqalusta");
213        taso.Shape = Shape.FromImage(alusta);
214        Add(taso);
215    }
216
217    void VaihdaSuunta(IPhysicsObject törmääjä, IPhysicsObject kohde)
218    {
219
220        törmääjä.Velocity *= -1;
221    }
222
223}
Note: See TracBrowser for help on using the repository browser.