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

Revision 2319, 6.4 KB checked in by lijiolva, 8 years ago (diff)
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   
21    public override void Begin()
22    {
23        Gravity = 200;
24        KineticFriction = 10;
25        Keyboard.Listen(Key.Escape, ButtonState.Released, Exit, null);
26        Mouse.IsCursorVisible = true;
27        CreateMenu();
28    }
29
30    protected override void Update(Time time)
31    {
32        base.Update(time);
33       
34        //MessageDisplay.Add("Pitäs toimia");
35        if (nuoli != null) {
36            nuoli.Position = kaara.Position;
37            nuoli.Angle = (goal - kaara.Position).Angle; 
38        }
39        if (goal != new Vector(0, 0) && (goal - kaara.Position).Magnitude < 25)
40        {
41            LuoKisat();
42            nuoli.Size = Vector.Zero;
43        }
44       
45    }
46
47    void CreateMenu()
48    {
49            //Set menu backround
50            Level.Background.Image = MenuBackround;
51
52        //Quit game button
53
54        quit_game = new PushButton("Quit game");
55        quit_game.Clicked += new Action(quit_game_Clicked);
56        quit_game.Position = new Vector(380.0, -50.0);
57        Add(quit_game);
58
59        //Load game button
60        load_game = new PushButton("Load game");
61        load_game.Clicked += new Action(load_game_Clicked);
62        load_game.Position = new Vector(200.0, -50.0);
63        Add(load_game);
64
65        //New game button
66        new_game = new PushButton("New game");
67        new_game.Clicked += new Action(new_game_Clicked);
68        new_game.Position = new Vector(20.0, -50.0);
69        Add(new_game);
70       
71    }
72
73    void new_game_Clicked()
74    {
75        //Sekalaista säätöä
76        Level.Background.Image = null;
77        Level.BackgroundColor = Color.LightGray;
78        Camera.ZoomFactor = 0.3;
79        new_game.Destroy();
80        load_game.Destroy();
81        quit_game.Destroy();
82        //Keyboard.Listen(Key.Escape, ButtonState.Released, Exit, null);
83        //Window.AllowUserResizing = true;
84        kaara = new Automobile(100, 50);
85        Add(kaara);
86        LuoKisat();
87       
88
89        //Kontrollit
90        Mouse.IsCursorVisible = true;
91        Keyboard.Listen(Key.Up, ButtonState.Down, kaasu, null);
92        Keyboard.Listen(Key.Left, ButtonState.Down, rattiV, null);
93        Keyboard.Listen(Key.Right, ButtonState.Down, rattiO, null);
94        Keyboard.Listen(Key.Down, ButtonState.Down, pakki, null);
95        Keyboard.Listen(Key.RightControl, ButtonState.Down, jarru, null);
96
97        //Auton kanssa säätöä
98        Camera.FollowedObject = kaara;
99        kaara.TopSpeed = engine * 75;
100        kaara.Acceleration = engine * 50;
101        kaara.KineticFriction = 0.999;
102        //kaara.StaticFriction = tires * 10;
103        kaara.Maneuverability = Angle.FromDegrees(tires * 5);
104        kaara.BrakeDeceleration = tires * 200;
105        kaara.Image = LoadImage("Sporttinen2");
106        //kaara.X = Level.Left + 50;
107        kaara.Y = 50;
108        kaara.MomentOfInertia = 10000;
109        kaara.LinearDamping = 0.9999;
110        kaara.Mass = 10000;
111        kaara.AngularDamping = 0.95;
112
113        nuoli = new GameObject(0,0);
114        nuoli.Color = Color.Green; 
115        nuoli.Shape = Shape.Triangle;
116        nuoli.Tag = "o";
117        nuoli.Image = LoadImage("juttu");
118        Add(nuoli);
119
120        //Kartan lataus
121        TileMap World = TileMap.FromFile("Map.txt");
122        World.SetTileMethod('A', taloA);
123        World.SetTileMethod('B', taloB);
124        World.SetTileMethod('C', taloC);
125        World.Execute(150,150);
126       
127        AddCollisionHandler(kaara, KasitteleKaaranTormays);     
128    }
129
130    void KasitteleKaaranTormays(PhysicsObject kaara, PhysicsObject kohde)
131    {
132        if (kohde.Tag.ToString() == "0")
133        {
134            goal = new Vector(1, 1);
135            nuoli.Size = new Vector(30, 30);
136            nuoli.Angle = goal.Angle + Angle.FromDegrees(180);
137            for (int i = 0; i < kisat.Length; i++) { kisat[i].Destroy(); }
138        }
139    }
140
141    void LuoKisat()
142    {
143        kisat = new PhysicsObject[1];
144       
145        kisat[0] = PhysicsObject.CreateStaticObject(50,50);
146        kisat[0].Shape = Shape.Circle;
147        kisat[0].Color = Color.Blue;
148        kisat[0].X = 0;
149        kisat[0].Y = 200;
150        kisat[0].Tag = "0";
151        Add(kisat[0]);
152    }
153
154    void load_game_Clicked()
155    {
156        MessageDisplay.Add("Can't load game. Game save system not availible.");
157    }
158
159    void quit_game_Clicked()
160    {
161        //Crediittejä tänne?
162        Exit();
163    }
164
165    //Kontrollit
166    public void kaasu()
167    {
168        kaara.Accelerate(Time.SinceLastUpdate.TotalSeconds);
169    }
170    public void rattiV()
171    {
172        if (kaara.Velocity.Magnitude > 1) { kaara.Turn(Angle.FromDegrees(1), Time.SinceLastUpdate.TotalSeconds); }
173    }
174    public void rattiO()
175    {
176        if (kaara.Velocity.Magnitude > 1) { kaara.Turn(Angle.FromDegrees(-1), Time.SinceLastUpdate.TotalSeconds); }
177    }
178    public void jarru()
179    {
180        if (kaara.Velocity.Magnitude > 1) {kaara.Brake(Time.SinceLastUpdate.TotalSeconds);}
181    }
182    public void pakki()
183    {
184        if (kaara.Velocity.Magnitude > 1) {kaara.Brake(Time.SinceLastUpdate.TotalSeconds);}
185        else if (kaara.Velocity.Magnitude < 1) { kaara.Push(Vector.FromLengthAndAngle(engine,kaara.Angle + Angle.FromDegrees(180))); }
186    }
187
188    //Talot
189    void taloA(Vector paikka, double leveys, double korkeus)
190    {
191        PhysicsObject talo = PhysicsObject.CreateStaticObject(leveys, korkeus);
192        talo.Position = paikka;
193        talo.Image = LoadImage("Talo1");
194        Add(talo);
195    }
196    void taloB(Vector paikka, double leveys, double korkeus)
197    {
198        PhysicsObject talo = PhysicsObject.CreateStaticObject(leveys, korkeus);
199        talo.Position = paikka;
200        talo.Image = LoadImage("Talo2");
201        Add(talo);
202    }
203    void taloC(Vector paikka, double leveys, double korkeus)
204    {
205        PhysicsObject talo = PhysicsObject.CreateStaticObject(leveys, korkeus);
206        talo.Position = paikka;
207        talo.Image = LoadImage("Talo3");
208        Add(talo);
209    }
210}
Note: See TracBrowser for help on using the repository browser.