source: 2010/31/niostuom/80kmh/Peli.cs @ 1670

Revision 1670, 5.2 KB checked in by niostuom, 10 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6public class Peli : PhysicsGame
7{
8    PhysicsObject bussi;
9    Image bussinKuva = LoadImage ( "bussi" );
10    Image TaustaKuva1 = LoadImage ( "tausta1" );
11    Image TaustaKuva2 = LoadImage ( "tausta2" );
12    Image TaustaKuva3 = LoadImage ( "tausta3" );
13
14    Vector nopeusVasemmalle = new Vector(0, 200);
15    Vector nopeuOikealle = new Vector(0, -200);
16
17   
18
19
20    protected override void Begin()
21    {
22        LuoKentta (0, -300);
23        AsetaOhjaimet ();
24        LuoAikaLaskuri ();
25
26        MessageDisplay.Add("80 Km/h  by Niko Tuominen");
27        MessageDisplay.Position = new Vector(-120.0, 0.0);
28        MessageDisplay.TextColor = RandomGen.NextColor();
29
30    }
31
32    void LuoKentta(double x, double y)
33    {
34        bussi = new PhysicsObject (70.0, 120.0);
35        bussi.Mass = 30;
36        bussi.Restitution = 2.5;
37        bussi.AngularDamping = 0.95;
38        bussi.Tag = "bussi";
39        bussi.Image = bussinKuva;
40        Add(bussi);
41        bussi.X = x;
42        bussi.Y = y;
43        bussi.IgnoresGravity = true;
44        Gravity = new Vector(0, -800);
45
46        AddCollisionHandler(bussi, KasitteleBussinTormays);
47        Level.Background.Image = TaustaKuva1;
48        Level.Background.FitToLevel();
49        Camera.ZoomToLevel();
50
51    }
52
53    void AsetaOhjaimet()
54    {
55        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
56        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liikuta bussia vasemmalle", new Vector(-400, 0), false);
57
58        Keyboard.Listen(Key.Left, ButtonState.Pressed, Kaannavasemmalle, "Liikuta bussia vasemmalle");
59        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, new Vector (0, 0), true);
60
61        Keyboard.Listen(Key.Right, ButtonState.Pressed, Kaannaoikealle, "Liikuta bussia vasemmalle");
62        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus , "Liikuta bussia oikealle", new Vector(400, 0), false);
63        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus , null, new Vector (0, 0), true);
64
65        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Liikuta bussia oikealle", new Vector(0, 200), false);
66        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, new Vector(0, 0), true);
67
68        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Liikuta bussia oikealle", new Vector(0, -200), false);
69        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, new Vector(0, 0), true);
70
71        Keyboard.Listen(Key.Space, ButtonState.Pressed, LuoAuto, null);
72        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaUusiPeli, "Restart");
73
74
75    }
76    void Kaannavasemmalle()
77    {
78        bussi.Angle += Angle.Degrees (30);
79    }
80
81    void Kaannaoikealle()
82    {
83        bussi.Angle += Angle.Degrees (-30);
84    }
85
86    void AsetaNopeus(Vector nopeus, bool suorista)
87    {
88        if (suorista)
89        {
90            bussi.Angle = Angle.Zero; 
91        }
92        bussi.Velocity = nopeus;
93       
94    }
95
96    void AloitaUusiPeli()
97    {
98        ClearAll();
99        Begin();
100    }
101   
102    void LuoAuto()
103    {
104        PhysicsObject auto = new PhysicsObject(50, 100);
105        auto.Position = new Vector(RandomGen.NextDouble(-200, 200), Screen.Top);
106        auto.Tag = "auto";
107        auto.Mass = 300;
108        auto.Color = RandomGen.NextColor() ;
109        auto.Restitution = 1;
110        Add (auto);
111    }
112
113    void KasitteleBussinTormays(PhysicsObject bussi, PhysicsObject auto)
114    {
115        if (auto.Tag.ToString() == "auto")
116        {
117            MessageDisplay.Add("GAME OVER - To Retry, press R");
118            MessageDisplay.Position = new Vector(-120.0, 0.0);
119            MessageDisplay.TextColor = Color.Red;
120
121            Explosion rajahdys = new Explosion(500);
122            rajahdys.Position = bussi.Position;
123            rajahdys.Speed = 500.0;
124            rajahdys.Force = 100000;
125            Add(rajahdys);
126
127           
128        }
129     }
130    void LuoAikaLaskuri()
131    {
132        Timer aikaLaskuri = new Timer();
133        aikaLaskuri.Interval = 0.5;
134        aikaLaskuri.Trigger += LisääAuto;
135        aikaLaskuri.Start();
136
137        Label aikaNaytto = new Label();
138        aikaNaytto.TextColor = Color.White;
139        aikaNaytto.DecimalPlaces = 1;
140        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
141        aikaNaytto.Position = new Vector (-500, 500);
142        //Add(aikaNaytto);
143
144        Timer aikaLaskuri2 = new Timer();
145        aikaLaskuri2.Interval = 0.1;
146        aikaLaskuri2.Trigger += TaustanVaihto;
147        aikaLaskuri2.Start();
148    }
149    void LisääAuto (Timer sender)
150    {
151        if (sender.Interval > 0.25)
152        {
153            sender.Interval -= 0.005;
154        }
155        LuoAuto();
156    }
157
158    void TaustanVaihto(Timer sender)
159    {
160        if (Level.Background.Image == TaustaKuva1)
161        {
162            Level.Background.Image = TaustaKuva2;
163        }
164        else if (Level.Background.Image == TaustaKuva2)
165        {
166            Level.Background.Image = TaustaKuva3;
167        }
168        else
169        {
170            Level.Background.Image = TaustaKuva1;
171        }
172            Level.Background.FitToLevel();
173    }
174       
175}
Note: See TracBrowser for help on using the repository browser.