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

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