source: 2013/26/MaxL/Keulaa2/Keulaa/Keulaa/Keulaa.cs @ 4326

Revision 4326, 11.9 KB checked in by mitaivas, 7 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 Keulaa : PhysicsGame
10{
11    List<PhysicsObject> tasot = new List<PhysicsObject>();
12   
13    Image moponKuva = LoadImage("RM125");
14    Image rengaskuva = LoadImage("rengas");
15    Image trengaskuva = LoadImage("trengas");
16    Image moponMuoto = LoadImage("Frame");
17    Image moponRunko = LoadImage("Frame2");
18    Image hypynKuva = LoadImage("Hyppy");
19    Image pilvenKuva = LoadImage("KeulaPilvet");
20    Image taustaKuva = LoadImage("KeulaTausta");
21    Image kyparanKuva = LoadImage("Kypara");
22    Image vartalonKuva = LoadImage("Paita");
23    Image maanKuva = LoadImage("Maa");
24    Image maanAllaKuva = LoadImage("Maanalla");
25    SoundEffect rpmAani = LoadSoundEffect("rm125_rpm2");
26    SoundEffect rev = LoadSoundEffect("rm125_rev");
27    SoundEffect idle = LoadSoundEffect("rm125_idle");
28    SoundEffect start = LoadSoundEffect("rm125_start");
29    SoundEffect down = LoadSoundEffect("rm125_downshift");
30   
31
32
33    PhysicsObject mopo = new PhysicsObject(250, 160);
34    PhysicsObject Takarengas = new PhysicsObject(77, 77, Shape.Circle);
35    PhysicsObject Eturengas = new PhysicsObject(80, 80, Shape.Circle);
36    PhysicsObject Kasi = new PhysicsObject(10, 42);
37    PhysicsObject Kasi2 = new PhysicsObject(44, 10);
38    PhysicsObject Vartalo = new PhysicsObject(30, 80);
39    PhysicsObject Kypara = new PhysicsObject(50, 50);
40    PhysicsObject Palikka = new PhysicsObject(10, 10);
41    PhysicsObject Palikka2 = new PhysicsObject(10, 10);
42    IntMeter pisteLaskuri;
43
44    Vector eteen = new Vector(4500, 0);
45    Vector taakse = new Vector(-5500, 0);
46    double kaasu2 = -50;
47
48    Vector oikeaReuna;
49    Vector taustanReuna;
50   
51   
52    public override void Begin()
53    {
54
55        //LoadSoundEffect starrt sldwq op
56        //MultiSelectWindow alkuValikko = new MultiSelectWindow("Mopo peli", "Aloita", "Lopeta");
57
58        //Aanet();
59        LuoPistelaskuri();
60        LuoOhjaimet();
61        LuoKentta();
62        LuoTausta();
63        AddCollisionHandler(Eturengas, "taso", NollaaPisteet);
64        AddCollisionHandler(mopo, "taso", NollaaPisteet);
65
66        oikeaReuna = new Vector(Level.Right, -560);
67        taustanReuna = new Vector(0, 0);
68
69        Timer ajastin1 = new Timer();
70        ajastin1.Interval = 0.01;
71        ajastin1.Timeout += LisaaTasoja;
72        ajastin1.Timeout += TarkistaNopeus;
73        ajastin1.Start();
74
75        Timer ajastin2 = new Timer();
76        ajastin2.Interval = 0.5;
77        ajastin2.Timeout += LisaaTaustoja;
78        ajastin2.Timeout += PoistaTasoja;
79        ajastin2.Start();
80
81        Gravity = new Vector(0, -1000);
82        Camera.Follow(mopo);
83
84
85
86    }
87
88    void Aanet(SoundEffect aani)
89    {
90        Sound rpm = rpmAani.CreateSound();
91        rpm.Pitch = -1;
92        §   aani.Play();
93           
94   
95    }
96   
97   
98    void TarkistaNopeus()
99    { 
100    if (mopo.Velocity.X < 0.01)
101    { pisteLaskuri.Reset(); }
102    }
103
104
105    void NollaaPisteet(PhysicsObject tormaaja, PhysicsObject kohde)
106    {
107        pisteLaskuri.Reset();
108    }
109   
110    void LuoPistelaskuri()
111    {
112        pisteLaskuri = new IntMeter(0);
113        pisteLaskuri.AddOverTime(1000, 1000);
114        //pisteLaskuri.
115
116        Label pisteNaytto = new Label();
117        pisteNaytto.X = Screen.Left + 100;
118        pisteNaytto.Y = Screen.Top - 100;
119        pisteNaytto.TextColor = Color.Black;
120        pisteNaytto.Color = Color.White;
121        pisteNaytto.BindTo(pisteLaskuri);
122        Add(pisteNaytto);
123    }
124    void Kiihdyta(double kiihtyvyys)
125    {
126        double kulmakiiht = kiihtyvyys * Takarengas.Width / 2;
127        double hitaus = 0.6*Takarengas.MomentOfInertia;
128        double vaanto = kulmakiiht * hitaus;
129        double vaantoPerPyora = vaanto / 2;
130
131        Takarengas.ApplyTorque(vaantoPerPyora);
132    }
133
134    void Nojaus(PhysicsObject Helmet, Vector k)
135    {
136        Helmet.Push(k);
137    }
138 
139    void LuoMopo(Vector paikka, double leveys, double korkeus)
140    {
141       
142        mopo.Shape = Shape.FromImage(moponRunko);
143        //mopo.MomentOfInertia = 500;
144        mopo.Mass = 8;
145        mopo.CollisionIgnoreGroup = 1;
146        //mopo.CollisionIgnoreGroup = 2;
147        //mopo.AngularDamping = 0.9;
148        mopo.Image = moponMuoto;
149        Add(mopo, 0);
150       
151        Eturengas.CollisionIgnoreGroup = 1;
152        Eturengas.Image = rengaskuva;
153        Eturengas.X = mopo.X + 75;
154        Eturengas.Y = mopo.Y - 30;
155        Eturengas.Color = Color.Transparent;
156        Eturengas.Mass = 3;
157        Eturengas.Restitution = 0.0;
158        Add(Eturengas, -1);
159        AxleJoint Etuliitos = new AxleJoint(mopo, Eturengas);
160        Add(Etuliitos);
161        Etuliitos.Softness = 1;
162        //PhysicsObject Takarengas = new PhysicsObject(75, 75, Shape.Circle);
163        Takarengas.CollisionIgnoreGroup = 1;
164        Takarengas.AngularDamping = 0.96;
165        Takarengas.KineticFriction = 1;
166        Takarengas.Image = trengaskuva;
167        Takarengas.X = mopo.X - 80;
168        Takarengas.Y = mopo.Y - 30;
169        Takarengas.Color = Color.Transparent;
170        Takarengas.Mass = 5;
171        Takarengas.Restitution = 0.0;
172        //Takarengas.KineticFriction = 1;
173        Add(Takarengas, -1);
174        AxleJoint Takaliitos = new AxleJoint(mopo, Takarengas);
175        Takaliitos.Softness = 0.6;
176        Add(Takaliitos);
177
178        LuoAjaja();
179        //Takarengas.ApplyTorque(200);
180    }
181
182    void LisaaTasoja()
183    {
184        if (Vector.Distance(mopo.Position, oikeaReuna) < 1500)
185        {
186            LuoTaso(oikeaReuna, 140, 140);
187            oikeaReuna.X += 140;
188        }
189
190
191    }
192
193    void PoistaTasoja()
194    {
195        for (int i = 0; i < tasot.Count; i++)
196        {
197            if (tasot[i].Right < mopo.X - Screen.Width)
198            {
199                tasot[i].Destroy();
200                tasot.Remove(tasot[i]);
201            }
202
203        }
204   
205    }
206    void LisaaTaustoja()
207    {
208        LuoTausta();
209        taustanReuna.X += Level.Width;
210
211    }
212
213    void LuoAjaja()
214    {
215        Vartalo.CollisionIgnoreGroup = 1;
216        Vartalo.Color = Color.Yellow;
217        Vartalo.Y = mopo.Top-10;
218        Vartalo.X = -25;
219        AxleJoint VartaloLiitos = new AxleJoint(mopo, Vartalo, new Vector(-25, Vartalo.Bottom + 10));
220        //VartaloLiitos.Softness = 0.1;
221        Vartalo.Mass = 2;
222        Vartalo.Image = vartalonKuva;
223
224        Kasi.CollisionIgnoreGroup = 1;
225        Kasi.Color = Color.Gray;
226        Kasi.Y = Vartalo.Top - 22;
227        Kasi.X = Vartalo.Left + 15;
228        AxleJoint KasiLiitos = new AxleJoint(Vartalo, Kasi, new Vector(Vartalo.Position.X, Kasi.Top));
229
230        Kasi2.CollisionIgnoreGroup = 1;
231        Kasi2.Color = Color.DarkGray;
232        Kasi2.Y = Kasi.Bottom + 1;
233        Kasi2.X = Kasi.Left + 22;
234        AxleJoint Kasi2Liitos = new AxleJoint(Kasi, Kasi2, new Vector(Kasi2.Left - 1, Kasi2.Top - 5));
235        AxleJoint Ohjaus = new AxleJoint(mopo, Kasi2, new Vector(Kasi2.Right, Kasi2.Top - 5));
236
237        Kypara.CollisionIgnoreGroup = 1;
238        Kypara.Y = Vartalo.Top+10;
239        Kypara.X = Vartalo.Position.X;
240        AxleJoint KyparaLiitos = new AxleJoint(Vartalo, Kypara, new Vector(Vartalo.Position.X, Kypara.Bottom));
241        Kypara.CanRotate = false;
242        Kypara.Image = kyparanKuva;
243        Kypara.Shape = Shape.FromImage(kyparanKuva);
244
245        Palikka.Mass = 1;
246        Palikka.Y = Kasi2.Position.Y;
247        Palikka.X = Eturengas.Left;
248        AxleJoint PalikkaLiitos = new AxleJoint(mopo, Palikka);
249        Palikka.Color = Color.Transparent;
250
251        Palikka2.Mass = 1;
252        Palikka2.Y = mopo.X-30;
253        Palikka2.X = Vartalo.X;
254        Palikka2.CollisionIgnoreGroup = 1;
255        AxleJoint PalikkaLiitos2 = new AxleJoint(mopo, Palikka2);
256        Palikka2.Color = Color.Transparent;
257
258        Add(Palikka2, 3);
259        Add(PalikkaLiitos2);
260        Add(Palikka);
261        Add(PalikkaLiitos);
262        Add(Kypara, 2);
263        Add(KyparaLiitos);
264        Add(Kasi2, 3);
265        Add(Kasi2Liitos);
266        Add(Ohjaus);
267        Add(Kasi, 3);
268        Add(KasiLiitos);
269        Add(Vartalo, 1);
270        Add(VartaloLiitos);
271
272    }
273
274    void LuoOhjaimet()
275    {
276        //Keyboard.Listen(Key.Up, ButtonState.Down, Kaasu, "Braapp!", mopo, kaasu);
277        Keyboard.Listen(Key.Up, ButtonState.Down, Kiihdyta, "Kaasu!", kaasu2);
278        Keyboard.Listen(Key.Up, ButtonState.Down, Aanet, null, rpmAani);
279        Keyboard.Listen(Key.Up, ButtonState.Pressed, Aanet, null, rev);
280        //Keyboard.Listen(Key.Up, ButtonState.Up, Aanet, null, idle);
281        Keyboard.Listen(Key.Right, ButtonState.Down, Nojaus, "Nojaa eteen", Vartalo, eteen);
282        Keyboard.Listen(Key.Right, ButtonState.Down, Nojaus, null , Palikka2, taakse);
283        Keyboard.Listen(Key.Left, ButtonState.Down, Nojaus, "Nojaa taakse", Vartalo, taakse);
284        Keyboard.Listen(Key.Left, ButtonState.Down, Nojaus, null , Palikka2, eteen);
285
286        Keyboard.Listen(Key.Down, ButtonState.Pressed, Aanet, null, down);
287        Keyboard.Listen(Key.Down, ButtonState.Pressed, Jarru, "Jarru!", Eturengas, 0.2);
288        Keyboard.Listen(Key.Down, ButtonState.Released, JarruPois, null, Eturengas, 1.0);
289        Keyboard.Listen(Key.Down, ButtonState.Pressed, Jarru, "Jarru!", Takarengas, 0.6);
290        Keyboard.Listen(Key.Down, ButtonState.Released, Jarru, null, Takarengas, 0.7);
291
292        Keyboard.Listen(Key.T, ButtonState.Pressed, Jarru, null, mopo, 0.0001);
293        Keyboard.Listen(Key.T, ButtonState.Released, JarruPois, null, mopo, 1.0);
294
295
296        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Lopeta");
297       
298    }
299   
300    void Jarru(PhysicsObject rengas, double jarru)
301    {
302        rengas.AngularDamping = jarru;
303    }
304    void JarruPois(PhysicsObject rengas2, double jarru2)
305    {
306       rengas2.AngularDamping = jarru2;
307    }
308
309    void LuoTaso(Vector paikka, double leveys, double korkeus)
310    {
311        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
312        taso.Position = paikka;
313        taso.Image = maanKuva;
314        GameObject tausta = new GameObject(Screen.Width, Screen.Height);
315        tausta.Image = taustaKuva;
316        //Add(tausta);
317        tausta.Position = paikka;
318        //taso.CollisionIgnoreGroup = 1;
319        Add(taso);
320        taso.Restitution = 0;
321        taso.KineticFriction = 1;
322        //PhysicsObject maa = Level.CreateBottomBorder(0.2, true);
323        //maa.KineticFriction = 1;
324        taso.Tag = "taso";
325       
326        tasot.Add(taso);
327    }
328
329    void LuoKentta()
330    {
331        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Kentta");
332
333        ruudut.SetTileMethod("FFD800", LuoMopo);
334        ruudut.SetTileMethod(Color.Black, LuoTaso);
335        //ruudut.SetTileMethod("FF0000", LuoHyppy);
336
337        ruudut.Execute(140, 140);
338    }
339
340    void LuoTausta()
341    {
342        if (Vector.Distance(mopo.Position, taustanReuna) < Level.Width * 2)
343        {
344
345
346            GameObject tausta = new GameObject(Level.Width, Level.Height);
347            tausta.Image = taustaKuva;
348            tausta.Position = taustanReuna;
349            Add(tausta, -3);
350
351            //Level.Background.Image = taustaKuva;
352            //Level.Background.TileToLevel();
353            //Layers[-3].RelativeTransition = new Vector(0.5, 0.5);
354            GameObject pilvet = new GameObject(Level.Width, Screen.Height);
355            pilvet.Image = pilvenKuva;
356            pilvet.Position = taustanReuna;
357            Add(pilvet, -2);
358            Layers[-2].RelativeTransition = new Vector(0.5, 0.4);
359        }
360    }
361
362    void LuoHyppy(Vector paikka, double leveys, double korkeus)
363    {
364        PhysicsObject Hyppy = PhysicsObject.CreateStaticObject(leveys*10, korkeus);
365        Hyppy.Position = paikka;
366        Hyppy.Shape = Shape.FromImage (hypynKuva);
367        Hyppy.Image = hypynKuva;
368        //Hyppy.Tag = "asdasd";
369        Hyppy.Restitution = 0;
370        Add(Hyppy, 1);
371    }
372}
Note: See TracBrowser for help on using the repository browser.