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

Revision 4326, 11.9 KB checked in by mitaivas, 7 years ago (diff)

Talletus.

RevLine 
[4251]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{
[4266]11    List<PhysicsObject> tasot = new List<PhysicsObject>();
12   
[4251]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");
[4254]21    Image kyparanKuva = LoadImage("Kypara");
[4255]22    Image vartalonKuva = LoadImage("Paita");
[4266]23    Image maanKuva = LoadImage("Maa");
24    Image maanAllaKuva = LoadImage("Maanalla");
[4326]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   
[4251]31
[4326]32
[4254]33    PhysicsObject mopo = new PhysicsObject(250, 160);
[4251]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);
[4254]38    PhysicsObject Vartalo = new PhysicsObject(30, 80);
39    PhysicsObject Kypara = new PhysicsObject(50, 50);
40    PhysicsObject Palikka = new PhysicsObject(10, 10);
[4300]41    PhysicsObject Palikka2 = new PhysicsObject(10, 10);
42    IntMeter pisteLaskuri;
[4251]43
44    Vector eteen = new Vector(4500, 0);
[4254]45    Vector taakse = new Vector(-5500, 0);
[4251]46    double kaasu2 = -50;
47
[4266]48    Vector oikeaReuna;
49    Vector taustanReuna;
[4251]50   
51   
52    public override void Begin()
53    {
54
[4326]55        //LoadSoundEffect starrt sldwq op
56        //MultiSelectWindow alkuValikko = new MultiSelectWindow("Mopo peli", "Aloita", "Lopeta");
[4266]57
[4326]58        //Aanet();
[4300]59        LuoPistelaskuri();
[4251]60        LuoOhjaimet();
61        LuoKentta();
[4266]62        LuoTausta();
[4300]63        AddCollisionHandler(Eturengas, "taso", NollaaPisteet);
[4326]64        AddCollisionHandler(mopo, "taso", NollaaPisteet);
[4251]65
[4266]66        oikeaReuna = new Vector(Level.Right, -560);
[4300]67        taustanReuna = new Vector(0, 0);
[4266]68
69        Timer ajastin1 = new Timer();
[4300]70        ajastin1.Interval = 0.01;
[4266]71        ajastin1.Timeout += LisaaTasoja;
[4300]72        ajastin1.Timeout += TarkistaNopeus;
[4266]73        ajastin1.Start();
74
75        Timer ajastin2 = new Timer();
[4300]76        ajastin2.Interval = 0.5;
[4266]77        ajastin2.Timeout += LisaaTaustoja;
78        ajastin2.Timeout += PoistaTasoja;
79        ajastin2.Start();
80
[4251]81        Gravity = new Vector(0, -1000);
82        Camera.Follow(mopo);
83
[4266]84
85
[4251]86    }
87
[4326]88    void Aanet(SoundEffect aani)
89    {
90        Sound rpm = rpmAani.CreateSound();
91        rpm.Pitch = -1;
92        §   aani.Play();
93           
94   
95    }
96   
97   
[4300]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);
[4326]114        //pisteLaskuri.
[4300]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    }
[4251]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
[4252]134    void Nojaus(PhysicsObject Helmet, Vector k)
[4251]135    {
[4252]136        Helmet.Push(k);
[4251]137    }
138 
139    void LuoMopo(Vector paikka, double leveys, double korkeus)
140    {
[4254]141       
[4251]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;
[4266]164        Takarengas.AngularDamping = 0.96;
[4251]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);
[4300]175        Takaliitos.Softness = 0.6;
[4251]176        Add(Takaliitos);
177
178        LuoAjaja();
179        //Takarengas.ApplyTorque(200);
180    }
181
[4266]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();
[4300]209        taustanReuna.X += Level.Width;
[4266]210
211    }
212
[4251]213    void LuoAjaja()
214    {
215        Vartalo.CollisionIgnoreGroup = 1;
216        Vartalo.Color = Color.Yellow;
[4254]217        Vartalo.Y = mopo.Top-10;
[4266]218        Vartalo.X = -25;
219        AxleJoint VartaloLiitos = new AxleJoint(mopo, Vartalo, new Vector(-25, Vartalo.Bottom + 10));
[4300]220        //VartaloLiitos.Softness = 0.1;
[4254]221        Vartalo.Mass = 2;
[4255]222        Vartalo.Image = vartalonKuva;
[4251]223
224        Kasi.CollisionIgnoreGroup = 1;
225        Kasi.Color = Color.Gray;
226        Kasi.Y = Vartalo.Top - 22;
227        Kasi.X = Vartalo.Left + 15;
[4254]228        AxleJoint KasiLiitos = new AxleJoint(Vartalo, Kasi, new Vector(Vartalo.Position.X, Kasi.Top));
[4251]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;
[4254]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));
[4251]241        Kypara.CanRotate = false;
[4254]242        Kypara.Image = kyparanKuva;
243        Kypara.Shape = Shape.FromImage(kyparanKuva);
[4251]244
[4254]245        Palikka.Mass = 1;
246        Palikka.Y = Kasi2.Position.Y;
247        Palikka.X = Eturengas.Left;
248        AxleJoint PalikkaLiitos = new AxleJoint(mopo, Palikka);
[4255]249        Palikka.Color = Color.Transparent;
[4254]250
[4300]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);
[4254]260        Add(Palikka);
261        Add(PalikkaLiitos);
262        Add(Kypara, 2);
[4251]263        Add(KyparaLiitos);
[4254]264        Add(Kasi2, 3);
[4251]265        Add(Kasi2Liitos);
266        Add(Ohjaus);
[4254]267        Add(Kasi, 3);
[4251]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);
[4326]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);
[4252]281        Keyboard.Listen(Key.Right, ButtonState.Down, Nojaus, "Nojaa eteen", Vartalo, eteen);
[4300]282        Keyboard.Listen(Key.Right, ButtonState.Down, Nojaus, null , Palikka2, taakse);
[4252]283        Keyboard.Listen(Key.Left, ButtonState.Down, Nojaus, "Nojaa taakse", Vartalo, taakse);
[4300]284        Keyboard.Listen(Key.Left, ButtonState.Down, Nojaus, null , Palikka2, eteen);
[4254]285
[4326]286        Keyboard.Listen(Key.Down, ButtonState.Pressed, Aanet, null, down);
[4254]287        Keyboard.Listen(Key.Down, ButtonState.Pressed, Jarru, "Jarru!", Eturengas, 0.2);
[4300]288        Keyboard.Listen(Key.Down, ButtonState.Released, JarruPois, null, Eturengas, 1.0);
[4254]289        Keyboard.Listen(Key.Down, ButtonState.Pressed, Jarru, "Jarru!", Takarengas, 0.6);
[4300]290        Keyboard.Listen(Key.Down, ButtonState.Released, Jarru, null, Takarengas, 0.7);
[4254]291
[4266]292        Keyboard.Listen(Key.T, ButtonState.Pressed, Jarru, null, mopo, 0.0001);
[4300]293        Keyboard.Listen(Key.T, ButtonState.Released, JarruPois, null, mopo, 1.0);
[4266]294
[4300]295
[4251]296        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Lopeta");
[4300]297       
[4251]298    }
[4300]299   
[4254]300    void Jarru(PhysicsObject rengas, double jarru)
301    {
302        rengas.AngularDamping = jarru;
303    }
[4300]304    void JarruPois(PhysicsObject rengas2, double jarru2)
[4254]305    {
[4300]306       rengas2.AngularDamping = jarru2;
[4254]307    }
308
[4251]309    void LuoTaso(Vector paikka, double leveys, double korkeus)
310    {
311        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
312        taso.Position = paikka;
[4266]313        taso.Image = maanKuva;
[4300]314        GameObject tausta = new GameObject(Screen.Width, Screen.Height);
315        tausta.Image = taustaKuva;
316        //Add(tausta);
317        tausta.Position = paikka;
[4251]318        //taso.CollisionIgnoreGroup = 1;
319        Add(taso);
[4300]320        taso.Restitution = 0;
[4251]321        taso.KineticFriction = 1;
[4266]322        //PhysicsObject maa = Level.CreateBottomBorder(0.2, true);
323        //maa.KineticFriction = 1;
[4300]324        taso.Tag = "taso";
[4266]325       
326        tasot.Add(taso);
[4251]327    }
328
329    void LuoKentta()
330    {
331        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Kentta");
332
333        ruudut.SetTileMethod("FFD800", LuoMopo);
334        ruudut.SetTileMethod(Color.Black, LuoTaso);
[4255]335        //ruudut.SetTileMethod("FF0000", LuoHyppy);
[4251]336
337        ruudut.Execute(140, 140);
338    }
339
[4266]340    void LuoTausta()
341    {
[4300]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        }
[4266]360    }
361
[4251]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.