source: 2010/31/pakralki/tank destroier/Peli.cs @ 1633

Revision 1633, 8.6 KB checked in by pakralki, 13 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using Physics2DDotNet.Ignorers;
6using System.Collections.Generic;
7
8public class Tankkipeli : PhysicsGame
9{
10    List<Label> valikonKohdat;
11
12
13
14    Tank tankki;
15    Tank tankki2;
16    double voima;
17
18    DoubleMeter voimaMittari;
19
20    DoubleMeter voimaMittari2;
21
22    protected override void Begin()
23    {
24        Valikko();
25    }
26
27    void Valikko()
28    {
29        ClearAll();
30        valikonKohdat = new List<Label>();
31
32        Label kohta1 = new Label("AloitaMoninpeli");
33        kohta1.Position = new Vector(0, 40);
34        valikonKohdat.Add(kohta1);
35
36        Label kohta2 = new Label("Lopeta");
37        kohta2.Position = new Vector(0, -40);
38        valikonKohdat.Add(kohta2);
39
40        foreach (Label valikonKohta in valikonKohdat)
41        {
42            Add(valikonKohta);
43        }
44
45        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaMoninpeli, null);
46        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
47
48        Mouse.IsCursorVisible = true;
49        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
50        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
51    }
52
53    void ValikossaLiikkuminen(AnalogState hiirenTila)
54    {
55        foreach (Label kohta in valikonKohdat)
56        {
57            if (Mouse.IsCursorOn(kohta))
58            {
59                kohta.TextColor = Color.Red;
60            }
61            else
62            {
63                kohta.TextColor = Color.Black;
64            }
65        }
66    }
67
68    void AloitaMoninpeli()
69    {
70        ClearAll();
71        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
72        Aloitapeli();
73    }
74
75    void Lopeta()
76    {
77        Exit();
78    }
79
80    void LuoKentta()
81    {
82        Gravity = new Vector(0, -400);
83        Level.CreateBorders();
84        LuoTankki();
85        Luotankki2();
86        Camera.ZoomToLevel();
87        Level.CreateGround(100, 250, 20, 15);
88
89    }
90
91    void LuoTankki()
92    {
93        tankki = new Tank(50, 20);
94        tankki.Y = Level.Bottom + 300;
95        tankki.X = Level.Right + -50;
96        Add(tankki);
97        tankki.Cannon.CannonBallCollision = KuulaOsuu;
98        voimaMittari.Value = 100;
99    }
100    void Luotankki2()
101    {
102        tankki2 = new Tank(50, 20);
103        tankki2.Y = Level.Bottom + 300;
104        tankki2.X = Level.Left + 50;
105        Add(tankki2);
106        tankki2.Cannon.CannonBallCollision = KuulaOsuu;
107        voimaMittari2.Value = 100;
108    }
109
110
111
112
113
114
115
116    void AsetaOhjaimet()
117    {
118        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
119        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
120
121        Keyboard.Listen(Key.Left, ButtonState.Down, Aja, "Liiku vasemmalle", tankki, 1.0);
122        Keyboard.Listen(Key.Right, ButtonState.Down, Aja, "Liiku oikealle", tankki, -1.0);
123        Keyboard.Listen(Key.Up, ButtonState.Down, KaannaPutkea, "Käännä putkea vastapäivään", tankki, Angle.Degrees(1));
124        Keyboard.Listen(Key.Down, ButtonState.Down, KaannaPutkea, "Käännä putkea myötäpäivään", tankki, Angle.Degrees(-1));
125        Keyboard.Listen(Key.Space, ButtonState.Down, lataaTykinVoimaa, "lataa tykin voimaa", 1500.0, tankki);
126        Keyboard.Listen(Key.Space, ButtonState.Released, AmmuTykilla, "Ammu tykillä", tankki);
127        Keyboard.Listen(Key.RightControl, ButtonState.Released, AmmuKK, "Ammu kk:lla", tankki);
128
129        Keyboard.Listen(Key.A, ButtonState.Down, Aja, "Liiku vasemmalle", tankki2, 1.0);
130        Keyboard.Listen(Key.D, ButtonState.Down, Aja, "Liiku oikealle", tankki2, -1.0);
131        Keyboard.Listen(Key.W, ButtonState.Down, KaannaPutkea, "Käännä putkea vastapäivään", tankki2, Angle.Degrees(1));
132        Keyboard.Listen(Key.S, ButtonState.Down, KaannaPutkea, "Käännä putkea myötäpäivään", tankki2, Angle.Degrees(-1));
133        Keyboard.Listen(Key.Q, ButtonState.Down, lataaTykinVoimaa, "lataa tykin voimaa", 1500.0, tankki2);
134        Keyboard.Listen(Key.Q, ButtonState.Released, AmmuTykilla, "Ammu tykillä", tankki2);
135        Keyboard.Listen(Key.LeftControl, ButtonState.Released, AmmuKK, "Ammu kk:lla", tankki2);
136
137
138        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Aja, "Liiku vasemmalle", tankki, 1.0);
139        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Aja, "Liiku oikealle", tankki, -1.0);
140        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, KaannaPutkea, "Käännä putkea vastapäivään", tankki, Angle.Degrees(1));
141        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, KaannaPutkea, "Käännä putkea myötäpäivään", tankki, Angle.Degrees(-1));
142        ControllerOne.Listen(Button.A, ButtonState.Down, lataaTykinVoimaa, "lataa tykin voimaa", 1500.0, tankki);
143        ControllerOne.Listen(Button.A, ButtonState.Released, AmmuTykilla, "ammu tykillä", tankki);
144        ControllerOne.Listen(Button.B, ButtonState.Down, AmmuKK, "Ammu kk:lla", tankki);
145
146        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, Aja, "Liiku vasemmalle", tankki2, 1.0);
147        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, Aja, "Liiku oikealle", tankki2, -1.0);
148        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, KaannaPutkea, "Käännä putkea vastapäivään", tankki2, Angle.Degrees(1));
149        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, KaannaPutkea, "Käännä putkea myötäpäivään", tankki2, Angle.Degrees(-1));
150        ControllerTwo.Listen(Button.A, ButtonState.Down, lataaTykinVoimaa, "lataa tykin voimaa", 1500.0, tankki2);
151        ControllerTwo.Listen(Button.A, ButtonState.Released, AmmuTykilla, "ammu tykillä", tankki2);
152        ControllerTwo.Listen(Button.B, ButtonState.Released, AmmuKK, "Ammu kk:lla", tankki2);
153
154
155    }
156    void lataaTykinVoimaa(double lisaVoima, Tank tank)
157    {
158        voima += lisaVoima;
159    }
160
161    void AmmuTykilla(Tank tank)
162    {
163        tank.Cannon.Power.Value = voima;
164        tank.Cannon.Shoot();
165        voima = 0;
166
167    }
168    void AmmuKK(Tank tank)
169    {
170        PhysicsObject luoti = new PhysicsObject(4, 4);
171        ObjectIgnorer ignorer = new ObjectIgnorer();
172        AddCollisionHandler(luoti, KasittelePallonTormays);
173        tank.CollisionIgnorer = ignorer;
174        luoti.CollisionIgnorer = ignorer;
175        luoti.Color = Color.Blue;
176        luoti.Shape = Shapes.Circle;
177        luoti.X = tank.X;
178        luoti.Y = tank.Y;
179        Vector ampumasuunta = Vector.FromLengthAndAngle(800, tank.Cannon.Angle);
180        luoti.Hit(ampumasuunta);
181        Add(luoti);
182    }
183
184    void KasittelePallonTormays(PhysicsObject luoti, PhysicsObject kohde)
185    {
186
187    }
188
189
190
191
192    void Aja(Tank t, double vaanto)
193    {
194        t.Accelerate(vaanto);
195
196    }
197
198    void KaannaPutkea(Tank t, Angle kaanto)
199    {
200        t.Cannon.Angle += kaanto;
201    }
202    void KuulaOsuu(PhysicsObject kuula, PhysicsObject toinen)
203    {
204        kuula.Destroy();
205        Explosion rajahdys = new Explosion(100);
206        rajahdys.Force = 10.0;
207        rajahdys.Position = kuula.Position;
208        if (toinen == tankki)
209        {
210            voimaMittari.Value -= 10;
211
212            if (voimaMittari.Value <= 0)
213            {
214                tankki.Destroy();
215                MessageDisplay.Add("pelaaja2 voitti");
216            }
217
218        }
219        Add(rajahdys);
220
221        if (toinen == tankki2)
222        {
223            voimaMittari2.Value -= 10;
224
225            if (voimaMittari2.Value <= 0)
226            {
227                tankki2.Destroy();
228                MessageDisplay.Add("pelaaja1 voitti");
229            }
230
231
232        }
233    }
234
235    void Aloitapeli()
236    {
237        voimaMittari = new DoubleMeter(100);
238        voimaMittari.MaxValue = 100;
239        BarGauge voimaPalkki = new BarGauge(20, 150);
240        voimaPalkki.BindTo(voimaMittari);
241        Add(voimaPalkki);
242
243        voimaPalkki.X = (0.8 * Screen.RightSafe);
244        voimaPalkki.Y = (0.8 * Screen.TopSafe);
245        voimaPalkki.BarColor = Color.Green;
246        voimaPalkki.BorderColor = Color.White;
247        voimaPalkki.Angle = Angle.Degrees(90);
248
249        voimaMittari2 = new DoubleMeter(100);
250        voimaMittari2.MaxValue = 100;
251        BarGauge voimaPalkki2 = new BarGauge(20, 150);
252        voimaPalkki2.BindTo(voimaMittari2);
253        Add(voimaPalkki2);
254
255        voimaPalkki2.X = (0.8 * Screen.LeftSafe);
256        voimaPalkki2.Y = (0.8 * Screen.TopSafe);
257        voimaPalkki2.BarColor = Color.Green;
258        voimaPalkki2.BorderColor = Color.White;
259        voimaPalkki2.Angle = Angle.Degrees(90);
260
261        LuoKentta();
262
263        AsetaOhjaimet();
264    }
265
266
267
268}
Note: See TracBrowser for help on using the repository browser.