source: sami_h/RallyCars/Peli.cs @ 182

Revision 182, 5.9 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(-140, -510 );
41            LuoRengas(-140, -490);
42
43            for (int y=-230; y <=250; y+=20) // vasen reuna alhaalta ylös
44                LuoRengas(-330, y);
45
46            LuoRengas(-0, 0);
47
48            for (int y = -470; y <= -350; y += 20) // keskellä alhaalta ylös
49                LuoRengas(-140, y);
50
51            for (int y = -280; y <= -270; y += 20) //
52                LuoRengas(-140, y);
53
54            for (int x = -330; x <= 350; x += 20)
55                LuoRengas(x, -250);
56
57            for (int x = -330; x <= 330; x += 20)
58                LuoRengas(x, 250);
59
60            for (int i = 0; i < 10; i++)
61            {
62                Checkpoint cp = new Checkpoint();
63                checkpoints.Add(cp);
64                Level.Objects.Add(cp);
65            }
66           
67
68            // Asetetaan kitka
69            KineticFriction = 10.8;
70
71            // Luodaan auto
72            Automobile auto = new Automobile("auto", 25, 15, 150);
73            auto.Color = Color.Silver;
74            Level.Objects.Add(auto);
75            auto.X = -150;
76            auto.Y = -295;
77            auto.Maneuverability = Angle.Degrees(120);
78            auto.KineticFriction = 10.5;
79            auto.Body.AngularDamping = 0.5;
80
81           
82
83            // Luodaan auto2
84            Automobile auto2 = new Automobile("auto2", 25, 15, 150);
85            auto.Color = Color.Blue;
86            Level.Objects.Add(auto2);
87            auto2.X = -150;
88            auto2.Y = -315;
89            auto2.Maneuverability = Angle.Degrees(120);
90            auto2.KineticFriction = 0.5;
91            auto2.Body.AngularDamping = 0.5;
92
93
94            // Kuunnellaan kontrolleja
95            Controls.Listen(Keys.Up, ButtonPosition.Down, kiihdyta, "Kiihdytä", auto);
96            Controls.Listen(Keys.Down, ButtonPosition.Down, jarruta, "Jarruta", auto);
97            Controls.Listen(Keys.Left, ButtonPosition.Down, kaanny, "Käänny vasemmalle", auto, Angle.Degrees(90));
98            Controls.Listen(Keys.Right, ButtonPosition.Down, kaanny, "Käänny oikealle", auto, Angle.Degrees(-90));
99
100
101            // Kuunnellaan kontrolleja
102            Controls.Listen(Keys.W, ButtonPosition.Down, kiihdyta, "Kiihdytä", auto2);
103            Controls.Listen(Keys.S, ButtonPosition.Down, jarruta, "Jarruta", auto2);
104            Controls.Listen(Keys.A, ButtonPosition.Down, kaanny, "Käänny vasemmalle", auto2, Angle.Degrees(90));
105            Controls.Listen(Keys.D, ButtonPosition.Down, kaanny, "Käänny oikealle", auto2, Angle.Degrees(-90));
106
107
108            // Näytetään kontrolliohje
109            ShowControlHelp(MessageDisplay);
110        }
111
112        bool kiihdyta(ControlEvent e)
113        {
114            Automobile auto = e.Parameter0 as Automobile;
115
116            auto.Accelerate(e.Time.ElapsedGameTime.TotalSeconds);
117
118            return false;
119        }
120
121
122
123
124
125        bool jarruta(ControlEvent e)
126        {
127            Automobile auto = e.Parameter0 as Automobile;
128
129            auto.Brake(e.Time.ElapsedGameTime.TotalSeconds);
130
131            return false;
132        }
133
134        bool kaanny(ControlEvent e)
135        {
136            Automobile auto = e.Parameter0 as Automobile;
137            Angle kaannos = e.Parameter1.ToAngle();
138
139            auto.Turn(kaannos, e.Time.ElapsedGameTime.TotalSeconds);
140
141            return false;
142        }
143
144
145        void AlustaMaasto()
146        {
147            Texture2D maastotex = Content.Load<Texture2D>("maasto");
148            PhysicsObject maasto = PhysicsObject.CreateStaticObject("maasto", Shapes.CreateFromTexture(maastotex, new Vector2D(Level.Width, Level.Height), 1));
149
150            maasto.Texture = maastotex;
151            maasto.Body.IgnoresCollisionResponse = true;
152            maasto.KineticFriction = 0.6;
153
154            Level.Objects.Add(maasto);
155
156           
157            Level.CreateBorder(1.0, false);
158        }
159
160        PhysicsObject LataaRata(String ratanimi)
161        {
162            Texture2D ratatex = Content.Load<Texture2D>(ratanimi);
163            PhysicsObject rata = PhysicsObject.CreateStaticObject("rata", Shapes.CreateFromTexture(ratatex, new Vector2D(ratatex.Width, ratatex.Height), 1));
164
165            rata.Texture = ratatex;
166            rata.Body.IgnoresCollisionResponse = true;
167            rata.KineticFriction = 0.4;
168
169            Level.Objects.Add(rata);
170
171            return rata;
172
173
174        }
175
176        PhysicsObject LuoRengas(Double x,Double y)
177        {
178            IShape ympyra = Shapes.CreateCircle(10.0);
179            PhysicsObject rengas = new PhysicsObject(5000.0, ympyra );
180               
181            rengas.X = x;
182            rengas.Y = y;
183            Level.Objects.Add(rengas);
184            rengas.Texture = Content.Load<Texture2D>("rengas");
185            return rengas;
186
187 
188        }
189
190        Checkpoint LuoCheckpoint(double x, double y)
191        {
192            Checkpoint c = new Checkpoint();
193
194            c.X = x;
195            c.Y = y;
196            Level.Objects.Add(c);
197            return c;
198        }
199    }
200}
Note: See TracBrowser for help on using the repository browser.