source: 2010/30/alkivima/Car Duels/Peli.cs @ 1371

Revision 1371, 8.4 KB checked in by alkivima, 11 years ago (diff)

melkein valmis

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using Jypeli.Effects;
6
7public class Peli : TopDownPhysicsGame
8{
9    PhysicsObject vasenReuna;
10    PhysicsObject oikeaReuna;
11    DoubleMeter voimaMittari;
12    DoubleMeter voimaMittari2;
13    Automobile auto1;
14    Automobile auto2;
15    IntMeter pelaajan1Pisteet;
16    IntMeter pelaajan2Pisteet;
17
18    protected override void Begin()
19    {
20        KineticFriction = 0.5; // Asetetaan kitka
21   
22
23        auto1 = new Automobile(60, 50);
24        auto1.Mass = 100.0;
25        auto1.Color = new Color(1, 1, 1);
26        auto1.X = -200;
27        auto1.Y = 0;
28        auto1.LinearDamping = 0.95;
29        auto1.AngularDamping = 0.1;
30        auto1.CanRotate = false;
31        auto1.Acceleration = 1500;
32        Add(auto1);
33
34        auto2 = new Automobile(60, 50);
35        auto2.Mass = 100.0;
36        auto2.Color = new Color(255, 255, 255);
37        auto2.X = 200;
38        auto2.Y = 0;
39        auto2.LinearDamping = 0.95;
40        auto2.AngularDamping = 0.1;
41        auto2.Angle = Angle.Degrees(180.0);
42        auto2.CanRotate = false;
43        auto2.Acceleration = 1500;
44        Add(auto2);
45
46        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
47        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
48        Keyboard.Listen(Key.W, ButtonState.Down, kiihdyta, "Kiihdytä", auto1);
49        Keyboard.Listen(Key.S, ButtonState.Down, jarruta, "Jarruta", auto1);
50        Keyboard.Listen(Key.A, ButtonState.Down, kaanny, "Käänny vasemmalle", auto1, 2.0);
51        Keyboard.Listen(Key.D, ButtonState.Down, kaanny, "Käänny oikealle", auto1, -2.0);
52
53        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
54        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
55        Keyboard.Listen(Key.Up, ButtonState.Down, kiihdyta, "Kiihdytä", auto2);
56        Keyboard.Listen(Key.Down, ButtonState.Down, jarruta, "Jarruta", auto2);
57        Keyboard.Listen(Key.Left, ButtonState.Down, kaanny, "Käänny vasemmalle", auto2, 2.0);
58        Keyboard.Listen(Key.Right, ButtonState.Down, kaanny, "Käänny oikealle", auto2, -2.0);
59
60        AddCollisionHandler(auto1, KasitteleAuto1Tormays);
61        AddCollisionHandler(auto2, KasitteleAuto2Tormays);
62
63        ShowControlHelp();
64
65        Kentta();
66
67        Pelaaja1HP();
68        Pelaaja2HP();
69
70        LisaaLaskurit();
71    }
72    void kiihdyta(Automobile auto)
73    {
74        auto.Accelerate(Time.SinceLastUpdate.TotalSeconds);
75    }
76
77    void jarruta(Automobile auto)
78    {
79        auto.Brake(Time.SinceLastUpdate.TotalSeconds);
80    }
81
82    void kaanny(Automobile auto, double kaannos)
83    {
84        auto.Angle = Angle.Degrees(auto.Angle.Degree + kaannos);
85    }
86
87    void Kentta()
88    {
89        PhysicsObject pylvas1 = PhysicsObject.CreateStaticObject(50.0, 50.0);
90        pylvas1.Shape = Shapes.Rectangle;
91        pylvas1.X = 200;
92        pylvas1.Y = 200;
93        pylvas1.Restitution = 0.2;
94        pylvas1.Tag = "pylvas";
95        pylvas1.Color = Color.DarkGray;
96        Add(pylvas1);
97
98        PhysicsObject pylvas2 = PhysicsObject.CreateStaticObject(50.0, 50.0);
99        pylvas2.Shape = Shapes.Rectangle;
100        pylvas2.X = -200;
101        pylvas2.Y = 200;
102        pylvas2.Restitution = 0.2;
103        pylvas2.Tag = "pylvas";
104        pylvas2.Color = Color.DarkGray;
105        Add(pylvas2);
106
107        PhysicsObject pylvas3 = PhysicsObject.CreateStaticObject(50.0, 50.0);
108        pylvas3.Shape = Shapes.Rectangle;
109        pylvas3.X = -200;
110        pylvas3.Y = -200;
111        pylvas3.Restitution = 0.2;
112        pylvas3.Tag = "pylvas";
113        pylvas3.Color = Color.DarkGray;
114        Add(pylvas3);
115
116        PhysicsObject pylvas4 = PhysicsObject.CreateStaticObject(50.0, 50.0);
117        pylvas4.Shape = Shapes.Rectangle;
118        pylvas4.X = 200;
119        pylvas4.Y = -200;
120        pylvas4.Restitution = 0.2;
121        pylvas4.Tag = "pylvas";
122        pylvas4.Color = Color.DarkGray;
123        Add(pylvas4);
124
125        GameObject maata = new GameObject(800.0, 700.0);
126        maata.Shape = Shapes.Circle;
127        maata.Color = Color.Gray;
128        Add(maata);
129
130        GameObject Reuna = new GameObject(70.0, 70.0);
131        Reuna.Shape = Shapes.Circle;
132        Reuna.Color = Color.Black;
133        Add(Reuna);
134
135        GameObject Boostipaikka = new GameObject(60.0, 60.0);
136        Boostipaikka.Shape = Shapes.Circle;
137        Boostipaikka.Color = Color.Turquoise;
138        Add(Boostipaikka);
139
140
141        vasenReuna = Level.CreateLeftBorder();
142        vasenReuna.Restitution = 0.3;
143        vasenReuna.IsVisible = true;
144        oikeaReuna = Level.CreateRightBorder();
145        oikeaReuna.Restitution = 0.3;
146        oikeaReuna.IsVisible = true;
147        PhysicsObject ylaReuna = Level.CreateTopBorder();
148        ylaReuna.Restitution = 0.3;
149        ylaReuna.IsVisible = true;
150        PhysicsObject alaReuna = Level.CreateBottomBorder();
151        alaReuna.Restitution = 0.3;
152        alaReuna.IsVisible = true;
153
154        Level.BackgroundColor = Color.ForestGreen;
155
156        Camera.X = 0.0;
157        Camera.Y = 0.0;
158        Camera.Zoom(1.2);
159    }
160    void Pelaaja1Tuhoutuu()
161    {
162        int pMaxMaara = 210;
163        ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("liekkiEsimerkki"), pMaxMaara);
164        ExplosionSystem rajahdys2 = new ExplosionSystem(LoadImage("rajahdysEsimerkki"), pMaxMaara);
165        Add(rajahdys);
166        Add(rajahdys2);
167
168        double x = auto1.X;
169        double y = auto1.Y;
170        int pMaara = 200;
171        int pMaara2 = 10;
172        rajahdys.AddEffect(x, y, pMaara);
173        rajahdys2.AddEffect(x, y, pMaara2);
174
175        pelaajan2Pisteet.Value += 1;
176
177        UusiEra();
178    }
179    void Pelaaja2Tuhoutuu()
180    {
181        int pMaxMaara = 210;
182        ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("liekkiEsimerkki"), pMaxMaara);
183        ExplosionSystem rajahdys2 = new ExplosionSystem(LoadImage("rajahdysEsimerkki"), pMaxMaara);
184        Add(rajahdys);
185        Add(rajahdys2);
186
187        double x = auto2.X;
188        double y = auto2.Y;
189        int pMaara = 200;
190        int pMaara2 = 10;
191        rajahdys.AddEffect(x, y, pMaara);
192        rajahdys2.AddEffect(x, y, pMaara2);
193
194        pelaajan1Pisteet.Value += 1;
195       
196        UusiEra();
197    }
198    void Pelaaja1HP()
199    {
200        voimaMittari = new DoubleMeter(10);
201        voimaMittari.MaxValue = 10;
202        BarGauge voimaPalkki = new BarGauge(10, 150);
203        voimaPalkki.BindTo(voimaMittari);
204        voimaPalkki.X = (0.95 * Screen.LeftSafe);
205        voimaPalkki.Y = (0.05 * Screen.Height);
206        Add(voimaPalkki);
207    }
208    void Pelaaja2HP()
209    {
210        voimaMittari2 = new DoubleMeter(10);
211        voimaMittari2.MaxValue = 10;
212        BarGauge voimaPalkki2 = new BarGauge(10, 150);
213        voimaPalkki2.BindTo(voimaMittari2);
214        voimaPalkki2.X = (0.95 * Screen.RightSafe);
215        voimaPalkki2.Y = (0.05 * Screen.Height);
216        Add(voimaPalkki2);
217    }
218    void KasitteleAuto1Tormays(PhysicsObject auto1, PhysicsObject kohde)
219    {
220       
221        if (auto1.Velocity.Magnitude > 200)
222        {
223            voimaMittari.Value++;
224            voimaMittari.Value -= 1;
225            voimaMittari.Value = voimaMittari.Value - 1;
226        }
227            if (voimaMittari.Value == 0)
228        {
229            Pelaaja1Tuhoutuu();
230        }
231     }
232    void KasitteleAuto2Tormays(PhysicsObject auto2, PhysicsObject kohde)
233    {
234       
235        if (auto2.Velocity.Magnitude > 200)
236        {
237            voimaMittari2.Value++;
238            voimaMittari2.Value -= 1;
239            voimaMittari2.Value = voimaMittari2.Value - 1;
240        }
241        if (voimaMittari2.Value == 0)
242        {
243            Pelaaja2Tuhoutuu();
244        }
245    }
246    void LisaaLaskurit()
247    {
248        pelaajan1Pisteet = LuoPisteLaskuri( - 250.0, 250.0);
249        pelaajan2Pisteet = LuoPisteLaskuri( 230.0, 250.0);
250    }
251    IntMeter LuoPisteLaskuri(double x, double y)
252    {
253        IntMeter laskuri = new IntMeter(0);
254        laskuri.MaxValue = 5;
255        Label naytto = new Label();
256        naytto.BindTo(laskuri);
257        naytto.X = x;
258        naytto.Y = y;
259        naytto.TextColor = Color.White;
260        Add(naytto);
261        return laskuri;
262    }
263    void UusiEra()
264    {
265        auto1.Destroy();
266        auto2.Destroy();
267        voimaMittari.Value = 10;
268        voimaMittari2.Value = 10;
269
270        Add(auto1);
271        Add(auto2);
272    }
273}
Note: See TracBrowser for help on using the repository browser.