source: 2011/26/LinusV/SFN/SFN-säätöä/SFN-säätöä/SFN-säätöä/Peli.cs @ 2376

Revision 2376, 8.2 KB checked in by lijiolva, 10 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;
8using Physics2DDotNet.Ignorers;
9
10public class Peli : TopDownPhysicsGame
11{
12    Automobile kaara;
13    int engine = 5;
14    int tires = 5;
15    PushButton new_game, load_game, quit_game;
16    Vector goal = new Vector(0,0);
17    Image MenuBackround = LoadImage("MenuBackround");
18    GameObject nuoli;
19    PhysicsObject[] kisat;
20    Automobile[] siviilit;
21    Vector[] kohteet;
22    int siviilimaara;
23    Timer kisa_aika;
24    double raha = 0;
25
26    public override void Begin()
27    {
28        kisa_aika = new Timer();
29        MessageDisplay.TextColor = Color.Yellow;
30        Gravity = 200;
31        KineticFriction = 10;
32        Keyboard.Listen(Key.Escape, ButtonState.Released, Exit, null);
33        Mouse.IsCursorVisible = true;
34        CreateMenu();
35        goal = Vector.Zero;
36    }
37
38    protected override void Update(Time time)
39    {
40        base.Update(time);
41       
42        if (nuoli != null) {
43            nuoli.Position = kaara.Position;
44            nuoli.Angle = (goal - kaara.Position).Angle; 
45        }
46        if (goal != Vector.Zero && (goal - kaara.Position).Magnitude < 100)
47        {
48            goal = new Vector(0, 0);
49            LuoKisat();
50            nuoli.IsVisible = false;
51            raha += (1000 / kisa_aika.CurrentTime);
52            MessageDisplay.Add("Money:" + raha);
53        }
54    }
55
56    void CreateMenu()
57    {
58            //Set menu backround
59            Level.Background.Image = MenuBackround;
60
61        //Quit game button
62
63        quit_game = new PushButton("Quit game");
64        quit_game.Clicked += new Action(quit_game_Clicked);
65        quit_game.Position = new Vector(380.0, -50.0);
66        Add(quit_game);
67
68        //Load game button
69        load_game = new PushButton("Load game");
70        load_game.Clicked += new Action(load_game_Clicked);
71        load_game.Position = new Vector(200.0, -50.0);
72        Add(load_game);
73
74        //New game button
75        new_game = new PushButton("New game");
76        new_game.Clicked += new Action(new_game_Clicked);
77        new_game.Position = new Vector(20.0, -50.0);
78        Add(new_game);
79       
80    }
81
82    void new_game_Clicked()
83    {
84        //Sekalaista säätöä
85        Level.Background.Image = null;
86        Level.BackgroundColor = Color.LightGray;
87        Camera.ZoomFactor = 0.4;
88        new_game.Destroy();
89        load_game.Destroy();
90        quit_game.Destroy();
91        //Keyboard.Listen(Key.Escape, ButtonState.Released, Exit, null);
92        //Window.AllowUserResizing = true;
93        kaara = new Automobile(100, 50);
94        Add(kaara);
95        LuoKisat();
96       
97
98        //Kontrollit
99        Mouse.IsCursorVisible = true;
100        Keyboard.Listen(Key.Up, ButtonState.Down, kaasu, null);
101        Keyboard.Listen(Key.Left, ButtonState.Down, rattiV, null);
102        Keyboard.Listen(Key.Right, ButtonState.Down, rattiO, null);
103        Keyboard.Listen(Key.Down, ButtonState.Down, pakki, null);
104        Keyboard.Listen(Key.RightControl, ButtonState.Down, jarru, null);
105        Keyboard.Listen(Key.Tab, ButtonState.Released, rahat, null);
106
107        //Auton kanssa säätöä
108        Camera.FollowedObject = kaara;
109        kaara.TopSpeed = engine * 75;
110        kaara.Acceleration = engine * 50;
111        kaara.KineticFriction = 0.999;
112        //kaara.StaticFriction = tires * 10;
113        kaara.Maneuverability = Angle.FromDegrees(tires * 5);
114        kaara.BrakeDeceleration = tires * 200;
115        kaara.Image = LoadImage("Sporttinen2");
116        kaara.X = Level.Left + 150;
117        kaara.MomentOfInertia = 10000;
118        kaara.LinearDamping = 0.9999;
119        kaara.Mass = 10000;
120        kaara.AngularDamping = 0.95;
121
122        nuoli = new GameObject(30,30);
123        nuoli.Color = Color.Green; 
124        nuoli.Shape = Shape.Triangle;
125        nuoli.Image = LoadImage("juttu");
126        nuoli.IsVisible = false;
127        Add(nuoli);
128
129        //Turvatalo
130        PhysicsObject Turva = PhysicsObject.CreateStaticObject(50,50);
131        Turva.Color = Color.Red;
132        Turva.Shape = Shape.Circle;
133        Turva.X = Level.Left + 60;
134        Turva.Tag = "TT";
135        Add(Turva);
136
137        //Kartan lataus
138      /*TileMap World = TileMap.FromFile("Map.txt");
139        World.SetTileMethod('A', taloA);
140        World.SetTileMethod('B', taloB);
141        World.SetTileMethod('C', taloC);
142        World.Execute(150,150);*/
143       
144        AddCollisionHandler(kaara, KasitteleKaaranTormays);
145        LuoSiviilit();
146    }
147
148    void KasitteleKaaranTormays(PhysicsObject kaara, PhysicsObject kohde)
149    {
150        if (kohde.Tag.ToString() == "TT")
151        {
152            //GoToShpo();
153        }
154        if (kohde.Tag.ToString() == "0")
155        {
156            goal = new Vector(1, 1);
157            nuoli.IsVisible = true;
158            nuoli.Angle = goal.Angle + Angle.FromDegrees(180);
159            for (int i = 0; i < kisat.Length; i++) { kisat[i].Destroy(); }
160            kisa_aika.Interval = 2;
161            kisa_aika.Trigger += Loss;
162            kisa_aika.Start();
163        }
164    }
165    void Siviiliuhri(PhysicsObject siviili, PhysicsObject kohde)
166    {
167        if (kohde != kaara) 
168        {
169            siviilimaara -= 1; 
170            siviili.Destroy();
171            if (siviilimaara == 0) { LuoSiviilit(); }
172        }
173    }
174
175    void LuoSiviilit()
176    {
177        siviilit = new Automobile[1];
178        kohteet = new Vector[1];
179        siviilit[0] = new Automobile(100,50);
180        siviilit[0].X = -800;
181        siviilit[0].Y = 0;
182        siviilit[0].Angle = Angle.FromDegrees(0);
183        Add(siviilit[0]);
184        siviilit[0].Accelerate(100);
185        AddCollisionHandler(siviilit[0], Siviiliuhri);
186
187        siviilimaara = 1;
188    }
189
190    void LuoKisat()
191    {
192        kisat = new PhysicsObject[1];
193       
194        kisat[0] = PhysicsObject.CreateStaticObject(50,50);
195        kisat[0].Shape = Shape.Circle;
196        kisat[0].Color = Color.Blue;
197        kisat[0].X = 0;
198        kisat[0].Y = 200;
199        kisat[0].Tag = "0";
200        Add(kisat[0]);
201
202    }
203    void Loss(Timer sender)
204    {
205        for (int i = 0; i < kisat.Length; i++) { kisat[i].Destroy(); }
206        LuoKisat();
207        nuoli.IsVisible = false;
208        sender.Stop();
209    }
210
211    void load_game_Clicked()
212    {
213        MessageDisplay.Add("Can't load game. Game save system not availible.");
214    }
215
216    void quit_game_Clicked()
217    {
218       
219        Exit();
220    }
221
222    public void rahat()
223    {
224        MessageDisplay.Add("Money:" + raha);
225    }
226
227    public void kaasu()
228    {
229        kaara.Accelerate(Time.SinceLastUpdate.TotalSeconds);
230    }
231    public void rattiV()
232    {
233        if (kaara.Velocity.Magnitude > 1) { kaara.Turn(Angle.FromDegrees(1), Time.SinceLastUpdate.TotalSeconds); }
234    }
235    public void rattiO()
236    {
237        if (kaara.Velocity.Magnitude > 1) { kaara.Turn(Angle.FromDegrees(-1), Time.SinceLastUpdate.TotalSeconds); }
238    }
239    public void jarru()
240    {
241        if (kaara.Velocity.Magnitude > 1) {kaara.Brake(Time.SinceLastUpdate.TotalSeconds);}
242    }
243    public void pakki()
244    {
245        if (kaara.Velocity.Magnitude > 1) {kaara.Brake(Time.SinceLastUpdate.TotalSeconds);}
246        else if (kaara.Velocity.Magnitude < 1) {
247            Vector matti = Vector.FromLengthAndAngle(kaara.Mass * 5000, kaara.Angle + Angle.FromDegrees(180));
248            kaara.Push(matti); 
249           
250        }
251    }
252
253    //Talot
254    void taloA(Vector paikka, double leveys, double korkeus)
255    {
256        PhysicsObject talo = PhysicsObject.CreateStaticObject(leveys, korkeus);
257        talo.Position = paikka;
258        talo.Image = LoadImage("Talo1");
259        Add(talo);
260    }
261    void taloB(Vector paikka, double leveys, double korkeus)
262    {
263        PhysicsObject talo = PhysicsObject.CreateStaticObject(leveys, korkeus);
264        talo.Position = paikka;
265        talo.Image = LoadImage("Talo2");
266        Add(talo);
267    }
268    void taloC(Vector paikka, double leveys, double korkeus)
269    {
270        PhysicsObject talo = PhysicsObject.CreateStaticObject(leveys, korkeus);
271        talo.Position = paikka;
272        talo.Image = LoadImage("Talo3");
273        Add(talo);
274    }
275}
Note: See TracBrowser for help on using the repository browser.