source: sami_h/RallyCars/Peli.cs @ 165

Revision 165, 6.7 KB checked in by samakrha, 10 years ago (diff)
Line 
1#region Usings
2using System;
3using System.Collections.Generic;
4using System.Linq;
5using Microsoft.Xna.Framework;
6using Microsoft.Xna.Framework.Audio;
7using Microsoft.Xna.Framework.Content;
8using Microsoft.Xna.Framework.Graphics;
9using Microsoft.Xna.Framework.Input;
10using Microsoft.Xna.Framework.Media;
11using Jypeli;
12using Jypeli.ScreenObjects;
13using Jypeli.Assets;
14using AdvanceMath;
15using Physics2DDotNet;
16using Physics2DDotNet.Shapes;
17#endregion
18
19namespace RallyCars
20{
21    public class Peli : PhysicsGame
22    {
23        List<Checkpoint> checkpoints = new List<Checkpoint>();
24
25        protected override void LoadContent()
26        {
27
28
29           
30
31            AlustaMaasto();
32            PhysicsObject rata = LataaRata("Rallirata");
33            Level.Width = rata.Width;
34            Level.Height = rata.Height;
35
36
37            // Luodaan useita renkaita   x-koordinaatti, y-koordinaatti
38            LuoRengas(10, -250);
39            LuoRengas(30, -250);
40            LuoRengas(-0, 0);
41            LuoRengas(-0, 0);
42            LuoRengas(-0, 0);
43            LuoRengas(-0, 0);
44            LuoRengas(-0, 0);
45            LuoRengas(-0, 0);
46            LuoRengas(-0, 0);
47            LuoRengas(-0, 0);
48            LuoRengas(-0, 0);
49            LuoRengas(-0, 0);
50            LuoRengas(-0, 0);
51            LuoRengas(-0, 0);
52            LuoRengas(-0, 0);
53            LuoRengas(-0, 0);
54            LuoRengas(-0, 0);
55            LuoRengas(-0, 0);
56            LuoRengas(-0, 0);
57            LuoRengas(-0, 0);
58            LuoRengas(-0, 0);
59            LuoRengas(-0, 0);
60            LuoRengas(-0, 0);
61            LuoRengas(-0, 0);
62            LuoRengas(-0, 0);
63            LuoRengas(-0, 0);
64            LuoRengas(-0, 0);
65            LuoRengas(-0, 0);
66            LuoRengas(-0, 0);
67            LuoRengas(-0, 0);
68            LuoRengas(-0, 0);
69            LuoRengas(-0, 0);
70            LuoRengas(-0, 0);
71            LuoRengas(-0, 0);
72            LuoRengas(-0, 0);
73            LuoRengas(-0, 0);
74            LuoRengas(-0, 0);
75            LuoRengas(-0, 0);
76            LuoRengas(-0, 0);
77            LuoRengas(-0, 0);
78            LuoRengas(130, -250);
79            LuoRengas(110, -250);
80            LuoRengas(90, -250);
81            LuoRengas(70, -250);
82            LuoRengas(50, -250);
83
84            for (int i = 0; i < 10; i++)
85            {
86                Checkpoint cp = new Checkpoint();
87                checkpoints.Add(cp);
88                Level.Objects.Add(cp);
89            }
90           
91
92            // Asetetaan kitka
93            KineticFriction = 10.8;
94
95            // Luodaan auto
96            Automobile auto = new Automobile("auto", 25, 15, 150);
97            auto.Color = Color.Silver;
98            Level.Objects.Add(auto);
99            auto.X = -150;
100            auto.Y = -295;
101            auto.Maneuverability = Angle.Degrees(120);
102            auto.KineticFriction = 10.5;
103            auto.Body.AngularDamping = 0.5;
104
105           
106
107            // Luodaan auto2
108            Automobile auto2 = new Automobile("auto2", 25, 15, 150);
109            auto.Color = Color.Blue;
110            Level.Objects.Add(auto2);
111            auto2.X = -150;
112            auto2.Y = -315;
113            auto2.Maneuverability = Angle.Degrees(120);
114            auto2.KineticFriction = 0.5;
115            auto2.Body.AngularDamping = 0.5;
116
117
118            // Kuunnellaan kontrolleja
119            Controls.Listen(Keys.Up, ButtonPosition.Down, kiihdyta, "Kiihdytä", auto);
120            Controls.Listen(Keys.Down, ButtonPosition.Down, jarruta, "Jarruta", auto);
121            Controls.Listen(Keys.Left, ButtonPosition.Down, kaanny, "Käänny vasemmalle", auto, Angle.Degrees(90));
122            Controls.Listen(Keys.Right, ButtonPosition.Down, kaanny, "Käänny oikealle", auto, Angle.Degrees(-90));
123
124
125            // Kuunnellaan kontrolleja
126            Controls.Listen(Keys.W, ButtonPosition.Down, kiihdyta, "Kiihdytä", auto2);
127            Controls.Listen(Keys.S, ButtonPosition.Down, jarruta, "Jarruta", auto2);
128            Controls.Listen(Keys.A, ButtonPosition.Down, kaanny, "Käänny vasemmalle", auto2, Angle.Degrees(90));
129            Controls.Listen(Keys.D, ButtonPosition.Down, kaanny, "Käänny oikealle", auto2, Angle.Degrees(-90));
130
131
132            // Näytetään kontrolliohje
133            ShowControlHelp(MessageDisplay);
134        }
135
136        bool kiihdyta(ControlEvent e)
137        {
138            Automobile auto = e.Parameter0 as Automobile;
139
140            auto.Accelerate(e.Time.ElapsedGameTime.TotalSeconds);
141
142            return false;
143        }
144
145
146
147
148
149        bool jarruta(ControlEvent e)
150        {
151            Automobile auto = e.Parameter0 as Automobile;
152
153            auto.Brake(e.Time.ElapsedGameTime.TotalSeconds);
154
155            return false;
156        }
157
158        bool kaanny(ControlEvent e)
159        {
160            Automobile auto = e.Parameter0 as Automobile;
161            Angle kaannos = e.Parameter1.ToAngle();
162
163            auto.Turn(kaannos, e.Time.ElapsedGameTime.TotalSeconds);
164
165            return false;
166        }
167
168
169        void AlustaMaasto()
170        {
171            Texture2D maastotex = Content.Load<Texture2D>("maasto");
172            PhysicsObject maasto = PhysicsObject.CreateStaticObject("maasto", Shapes.CreateFromTexture(maastotex, new Vector2D(Level.Width, Level.Height), 1));
173
174            maasto.Texture = maastotex;
175            maasto.Body.IgnoresCollisionResponse = true;
176            maasto.KineticFriction = 0.6;
177
178            Level.Objects.Add(maasto);
179
180           
181            Level.CreateBorder(1.0, false);
182        }
183
184        PhysicsObject LataaRata(String ratanimi)
185        {
186            Texture2D ratatex = Content.Load<Texture2D>(ratanimi);
187            PhysicsObject rata = PhysicsObject.CreateStaticObject("rata", Shapes.CreateFromTexture(ratatex, new Vector2D(ratatex.Width, ratatex.Height), 1));
188
189            rata.Texture = ratatex;
190            rata.Body.IgnoresCollisionResponse = true;
191            rata.KineticFriction = 0.4;
192
193            Level.Objects.Add(rata);
194
195            return rata;
196
197
198        }
199
200        PhysicsObject LuoRengas(Double x,Double y)
201        {
202            IShape ympyra = Shapes.CreateCircle(10.0);
203            PhysicsObject rengas = new PhysicsObject(5.0, ympyra );
204               
205            rengas.X = x;
206            rengas.Y = y;
207            Level.Objects.Add(rengas);
208            rengas.Texture = Content.Load<Texture2D>("rengas");
209            return rengas;
210
211 
212        }
213
214        Checkpoint LuoCheckpoint(double x, double y)
215        {
216            Checkpoint c = new Checkpoint();
217
218            c.X = x;
219            c.Y = y;
220            Level.Objects.Add(c);
221            return c;
222        }
223    }
224}
Note: See TracBrowser for help on using the repository browser.