source: 2010/27/oteehann/tank wars/Peli.cs @ 1242

Revision 1242, 8.5 KB checked in by oteehann, 10 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6/// <summary>
7/// Otto H.
8/// </summary>
9public class Peli : PhysicsGame
10{
11    Tank tankki;
12    Tank tankki2;
13   
14   
15    protected override void Begin()
16    {
17        Image tekstuuri = LoadImage("maantausta");
18        int maastonVaihtelu = 20;
19        Level.CreateGround(20,70,20, Color.Black, tekstuuri, maastonVaihtelu);
20        Gravity = new Vector(0.0, -500.0);
21
22        Grenade grenade = new Grenade(50.0);
23       
24        Add(grenade);
25
26        grenade.FuseTime = TimeSpan.FromSeconds(3);
27
28        Grenade grenade2 = new Grenade(50.0);
29        Add(grenade2);
30
31        grenade2.FuseTime = TimeSpan.FromSeconds(3);
32
33       
34        ClusterGrenade kranaatti = new ClusterGrenade(4.0, 4);
35        kranaatti.NumberOfClusters = 5;
36
37        Add(kranaatti);
38       
39
40
41
42       
43       
44        Level.CreateBorders();
45
46        LuoTankki();
47        LuoTankki2();
48        LisaaNappaimet();
49        LuoLaskuri();
50        LuoLaskuri2();
51    }
52
53    void HeitaKranaatti(PhysicsObject tankki)
54    {
55        Grenade kranaatti = new Grenade(10.0);
56        kranaatti.Destroyed += delegate() { kranaatti_Destroyed(kranaatti); };
57        kranaatti.Tag = tankki;
58        kranaatti.X = tankki.X + 10;
59        kranaatti.Y = tankki.Y + 10;
60        Add(kranaatti);
61        Vector heittoVoima = Vector.FromLengthAndAngle(9000, Angle.Degrees(25));
62        kranaatti.Hit(heittoVoima);
63        AddCollisionHandler(kranaatti,KasitteleKranaatinTormays);
64       
65    }
66
67    void kranaatti_Destroyed(Grenade kranaatti)
68    {
69        if (Vector.Distance(kranaatti.Position, tankki2.Position) < 200 && kranaatti.Tag == tankki)
70        {
71            pisteLaskuri.Value++;
72        }
73
74        if (Vector.Distance(kranaatti.Position, tankki.Position) < 200 && kranaatti.Tag == tankki2)
75        {
76            pisteLaskuri2.Value++;
77        }
78    }
79    void KasitteleKranaatinTormays(PhysicsObject kranaatti, PhysicsObject kohde)
80    {
81        //kasittelekranaatintormays,tormayksestatuleePiste
82        /*
83        if (kohde == tankki && kranaatti.Tag == tankki2)
84        {
85            pisteLaskuri.Value++;
86        }
87        if (kohde == tankki2 && kranaatti.Tag == tankki)
88        {
89            pisteLaskuri2.Value++;
90        }
91        */
92    }
93    void HeitaKranaatti2(PhysicsObject tankki)
94    {
95        Grenade kranaatti2 = new Grenade(10.0);
96        kranaatti2.Destroyed += delegate() { kranaatti_Destroyed(kranaatti2); };
97        kranaatti2.Tag = tankki;
98        kranaatti2.X = tankki.X - 30;
99        kranaatti2.Y = tankki.Y + 20;
100        Add(kranaatti2);
101        Vector heittoVoima = Vector.FromLengthAndAngle(10000, Angle.Degrees(30));
102        kranaatti2.Hit(heittoVoima);
103        AddCollisionHandler(kranaatti2,KasitteleKranaatin2Tormays);
104       
105    }
106    void KasitteleKranaatin2Tormays(PhysicsObject kranaatti2, PhysicsObject kohde)
107    {
108        //kasittelekranaatin2tormays,tormayksestatuleePiste
109
110    }
111
112   
113
114
115    void LuoTankki()
116    {
117        tankki = new Tank(40, 20);
118       
119        tankki.Position = new Vector(-350, Level.Bottom + 90);
120        tankki.Mass = 100.0;
121       
122       //Image piipunkuva = LoadImage("piippu"); // <-- Tee piippu.png -kuva ja lisää Contentiin
123        //tankki.Cannon.Image = piipunkuva;
124        tankki.Cannon.CannonBallCollision = AmmusOsuu;
125        Add(tankki);
126        tankki.Image = LoadImage("tankki");
127       
128       
129    }
130
131    void LuoTankki2()
132    {
133        tankki2 = new Tank(40.0, 20.0);
134        tankki2.Position = new Vector(350, Level.Bottom + 90);
135        tankki2.Mass = 100.0;
136        tankki2.Image = LoadImage("tankki2");
137        tankki2.Cannon.CannonBallCollision = Ammus2Osuu;
138        Add(tankki2);
139       
140    }
141    IntMeter pisteLaskuri;
142
143    void LuoLaskuri()
144    {
145        pisteLaskuri = new IntMeter(0);
146        pisteLaskuri.MaxValue = 10;
147        pisteLaskuri.UpperLimit += laskuriYlarajassa;
148
149        Label pisteNaytto = new Label();
150        pisteNaytto.X = Screen.Left + 150;
151        pisteNaytto.Y = Screen.Top - 50;
152        pisteNaytto.TextColor = Color.Black;
153        pisteNaytto.BindTo(pisteLaskuri);
154        Add(pisteNaytto);
155
156        Label pisteTeksti = new Label("Pisteitä: ");
157        pisteTeksti.X = Screen.Left + 100;
158        pisteTeksti.Y = Screen.Top - 50;
159        pisteTeksti.TextColor = Color.Black;
160        Add(pisteTeksti);
161
162       
163       
164
165       
166    }
167     void laskuriYlarajassa(int arvo)
168    {
169       
170        MessageDisplay.TextColor = Color.Black;
171        MessageDisplay.Add("Pelaaja 1 voitti pelin.");
172        pisteLaskuri.Reset();
173
174       
175    }
176
177    IntMeter pisteLaskuri2;
178
179    void LuoLaskuri2()
180    {
181        pisteLaskuri2 = new IntMeter(0);
182        pisteLaskuri2.MaxValue = 10;
183        pisteLaskuri2.UpperLimit += laskuriYlarajassa2;
184
185        Label pisteNaytto2 = new Label();
186        pisteNaytto2.X = Screen.Right - 100;
187        pisteNaytto2.Y = Screen.Top - 50;
188        pisteNaytto2.TextColor = Color.Black;
189        pisteNaytto2.BindTo(pisteLaskuri2);
190        Add(pisteNaytto2);
191
192       
193
194        Label pisteTeksti2 = new Label("Pisteitä: ");
195        pisteTeksti2.X = Screen.Right - 150;
196        pisteTeksti2.Y = Screen.Top - 50;
197        pisteTeksti2.TextColor = Color.Black;
198        Add(pisteTeksti2);
199    }
200
201    void laskuriYlarajassa2(int arvo)
202    {
203       
204        MessageDisplay.TextColor = Color.Black;
205        MessageDisplay.Add("Pelaaja 2 voitti pelin.");
206        pisteLaskuri2.Reset();
207
208       
209    }
210
211    void LisaaNappaimet()
212    {
213        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle.", 1.0, tankki);
214        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle.", -1.0, tankki);
215        Keyboard.Listen(Key.Up, ButtonState.Pressed, MuutaTykinKulmaa, "liikuta tykkia ylos.", tankki, Angle.Radians(1.0));
216        Keyboard.Listen(Key.Down, ButtonState.Pressed, MuutaTykinKulmaa, "liikuta tykkia alas.", tankki, Angle.Radians(-1.0));
217        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Ammu, "Ammu aseella.", tankki);
218        Keyboard.Listen(Key.Delete, ButtonState.Pressed, HeitaKranaatti, "Heita kranaatti.",tankki);
219
220        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle.", 1.0, tankki2);
221        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle.", -1.0, tankki2);
222        Keyboard.Listen(Key.W, ButtonState.Pressed, MuutaTykinKulmaa, "liikuta tykkia ylos.", tankki2, Angle.Radians(1.0));
223        Keyboard.Listen(Key.S, ButtonState.Pressed, MuutaTykinKulmaa, "liikuta tykkia alas.", tankki2, Angle.Radians(-1.0));
224        Keyboard.Listen(Key.Space, ButtonState.Pressed, Ammu, "Ammu aseella.", tankki2);
225        Keyboard.Listen(Key.F, ButtonState.Pressed, HeitaKranaatti2, "Heita kranaatti.",tankki2);
226    }
227   
228    void MuutaTykinKulmaa(Tank tank, Angle kulma)
229    {
230        if (tank == tankki)
231            tankki.Cannon.Angle += kulma;
232        if (tank == tankki2)
233            tankki2.Cannon.Angle += kulma;
234    }
235
236    void Liikuta(double suunta, Tank tank)
237    {  if (tank==tankki)
238          tankki.Accelerate(suunta);
239       if (tank==tankki2)
240          tankki2.Accelerate(suunta);
241    }
242
243    void Ammu(Tank tank)
244    {if (tank==tankki)
245        tankki.Shoot(10000);
246     if (tank==tankki2)
247        tankki2.Shoot(10000);
248    }
249
250    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
251    {
252
253        Explosion rajahdys = new Explosion(100);
254        rajahdys.Position = ammus.Position;
255        rajahdys.Speed = 700.0;
256        rajahdys.Force = 900.0;
257        rajahdys.ShockwaveColor = Color.OrangeRed;
258        Add(rajahdys);
259        ammus.Destroy();
260
261        if (kohde == tankki2)
262        {
263            pisteLaskuri.Value++;
264        }
265        //AddCollisionHandler(ammus, KasitteleammuksenTormays,tormayksestatuleePiste);
266    }
267    void Ammus2Osuu(PhysicsObject ammus2, PhysicsObject kohde)
268    {
269        Explosion rajahdys2 = new Explosion(100);
270        rajahdys2.Position = ammus2.Position;
271        rajahdys2.Speed = 700.0;
272        rajahdys2.Force = 900.0;
273        rajahdys2.ShockwaveColor = Color.OrangeRed;
274        Add(rajahdys2);
275        ammus2.Destroy();
276
277        if (kohde == tankki)
278        {
279            pisteLaskuri2.Value++;
280        }
281        //AddCollisionHandler(ammus2, KasitteleammuksenTormays2,tormayksestatuleePiste);
282    }
283
284     
285
286
287}
Note: See TracBrowser for help on using the repository browser.