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

Revision 1620, 7.5 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(30, 10);
94        tankki.Y = Level.Bottom + 300;
95        tankki.X = Level.Right + -50;
96        Add(tankki);
97        tankki.Cannon.CannonBallCollision = KuulaOsuu;
98        voimaMittari.Value = 30;
99    }
100    void Luotankki2()
101    {
102        tankki2 = new Tank(30, 10);
103        tankki2.Y = Level.Bottom + 300;
104        tankki2.X = Level.Left + 50;
105        Add(tankki2);
106        tankki2.Cannon.CannonBallCollision = KuulaOsuu;
107        voimaMittari2.Value = 30;
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, "Ammu tykillä", 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, "Ammu tykillä", 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
143    }
144    void lataaTykinVoimaa(double lisaVoima, Tank tank)
145    {
146        voima += lisaVoima;
147    }
148
149    void AmmuTykilla(Tank tank)
150    {
151        tank.Cannon.Power.Value = voima;
152        tank.Cannon.Shoot();
153        voima = 0;
154
155    }
156    void AmmuKK(Tank tank)
157    {
158        PhysicsObject luoti = new PhysicsObject(4, 4);
159        ObjectIgnorer ignorer = new ObjectIgnorer();
160        AddCollisionHandler(luoti, KasittelePallonTormays);
161        tank.CollisionIgnorer = ignorer;
162        luoti.CollisionIgnorer = ignorer;
163        luoti.Color = Color.Blue;
164        luoti.Shape = Shapes.Circle;
165        luoti.X = tank.X;
166        luoti.Y = tank.Y;
167        Vector ampumasuunta = Vector.FromLengthAndAngle(800, tank.Cannon.Angle);
168        luoti.Hit(ampumasuunta);
169        Add(luoti);
170    }
171
172    void KasittelePallonTormays(PhysicsObject luoti, PhysicsObject kohde)
173    {
174
175    }
176
177
178
179
180    void Aja(Tank t, double vaanto)
181    {
182        t.Accelerate(vaanto);
183
184    }
185
186    void KaannaPutkea(Tank t, Angle kaanto)
187    {
188        t.Cannon.Angle += kaanto;
189    }
190    void KuulaOsuu(PhysicsObject kuula, PhysicsObject toinen)
191    {
192        kuula.Destroy();
193        Explosion rajahdys = new Explosion(100);
194        rajahdys.Force = 10.0;
195        rajahdys.Position = kuula.Position;
196        if (toinen == tankki)
197        {
198            voimaMittari.Value -= 10;
199
200            if (voimaMittari.Value <= 0)
201            {
202                tankki.Destroy();
203                MessageDisplay.Add("pelaaja2 voitti");
204            }
205
206        }
207        Add(rajahdys);
208
209        if (toinen == tankki2)
210        {
211            voimaMittari2.Value -= 10;
212
213            if (voimaMittari2.Value <= 0)
214            {
215                tankki2.Destroy();
216                MessageDisplay.Add("pelaaja1 voitti");
217            }
218
219
220        }
221    }
222
223    void Aloitapeli()
224    {
225        voimaMittari = new DoubleMeter(100);
226        voimaMittari.MaxValue = 100;
227        BarGauge voimaPalkki = new BarGauge(20, 150);
228        voimaPalkki.BindTo(voimaMittari);
229        Add(voimaPalkki);
230
231        voimaPalkki.X = (0.8 * Screen.RightSafe);
232        voimaPalkki.Y = (0.8 * Screen.TopSafe);
233        voimaPalkki.BarColor = Color.Green;
234        voimaPalkki.BorderColor = Color.White;
235        voimaPalkki.Angle = Angle.Degrees(90);
236
237        voimaMittari2 = new DoubleMeter(100);
238        voimaMittari2.MaxValue = 100;
239        BarGauge voimaPalkki2 = new BarGauge(20, 150);
240        voimaPalkki2.BindTo(voimaMittari2);
241        Add(voimaPalkki2);
242
243        voimaPalkki2.X = (0.8 * Screen.LeftSafe);
244        voimaPalkki2.Y = (0.8 * Screen.TopSafe);
245        voimaPalkki2.BarColor = Color.Green;
246        voimaPalkki2.BorderColor = Color.White;
247        voimaPalkki2.Angle = Angle.Degrees(90);
248
249        LuoKentta();
250
251        AsetaOhjaimet();
252    }
253
254
255
256}
Note: See TracBrowser for help on using the repository browser.