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

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