source: 2011/31/AleksiR/OmaPeli/OmaPeli/OmaPeli/Peli.cs @ 2533

Revision 2533, 9.2 KB checked in by almarimp, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli :PhysicsGame
10{
11    PhysicsObject Alus1;
12    PhysicsObject Alus2;
13    PhysicsObject tahti;
14    PhysicsObject tahti1;
15    PhysicsObject tahti2;
16    LaserGun pyssy;
17    LaserGun pyssy2;
18    IntMeter pisteLaskuri1;
19    IntMeter pisteLaskuri2;
20
21
22
23    public override void Begin()
24    {
25        AloitaPeli();
26    }
27
28 void AloitaPeli()
29        {
30
31            ClearAll();
32
33            Nappaimet();
34            LuoAlus1();
35            LuoAlus2();
36            LuoLaskuri1();
37            LuoLaskuri2();
38            LuoKentta();
39            LuoTahdet();
40
41            FollowerBrain aly1 = new FollowerBrain();
42            aly1.Target = Alus1;
43            aly1.FollowAlways = true;
44            aly1.TargetFollowDistance = 750;
45            aly1.Speed = 50;
46
47            FollowerBrain aly2 = new FollowerBrain();
48            aly2.Target = Alus2;
49            aly2.FollowAlways = true;
50            aly2.TargetFollowDistance = 500;
51            aly2.Speed = 50;
52
53            tahti1 = new PhysicsObject(25, 25);
54            tahti1.Shape = Shape.Star;
55            tahti1.Color = Color.Yellow;
56            tahti1.Y = -300;
57            tahti1.X = -100;
58            tahti1.Brain = aly1;
59            tahti1.Tag = "Tähti";
60            tahti1.IgnoresCollisionResponse = true;
61
62            Add(tahti1);
63
64            tahti2 = new PhysicsObject(25, 25);
65            tahti2.Shape = Shape.Star;
66            tahti2.Color = Color.Yellow;
67            tahti2.Y = -300;
68            tahti2.X = 100;
69            tahti2.Brain = aly2;
70            tahti2.Tag = "Tähti";
71            tahti2.IgnoresCollisionResponse = true;
72
73            Add(tahti2);
74
75        }
76
77 void LuoKentta()
78 {
79     Level.CreateBorders(1.0, false);
80     Level.BackgroundColor = Color.Black;
81     Level.Background.CreateStars();
82     Level.Background.FitToLevel();
83
84     Gravity = new Vector(0, -100);
85
86     IsFullScreen = true;
87     Camera.ZoomToLevel();
88 }
89
90 void LuoTahdet()
91 {
92     int i = 0;
93
94     while (i < 2)
95     {
96         LuoUusiTahti();
97         i++;
98     }
99
100 }
101
102    void LuoAlus1()
103    {
104        Alus1 = new PhysicsObject(10, 30);
105        Alus1.Shape = Shape.Triangle;
106        Alus1.Color = Color.DarkRed;
107        Alus1.CanRotate = false;
108        Alus1.IgnoresExplosions = true;
109        Alus1.X = -250;
110        Alus1.Tag = "Alus1";
111        Add(Alus1);
112
113        pyssy = new LaserGun(20, 5);
114        pyssy.Angle += Angle.FromDegrees(90);
115        pyssy.Shoot();
116        pyssy.LaserCollision = LaserOsuu;
117        pyssy.AmmoIgnoresGravity = false;
118        pyssy.InfiniteAmmo = true;
119        pyssy.MaxAmmoLifetime = TimeSpan.MaxValue; 
120        Alus1.Add(pyssy);
121    }
122
123    void LuoAlus2()
124    {
125        Alus2 = new PhysicsObject(10, 30);
126        Alus2.Shape = Shape.Triangle;
127        Alus2.Color = Color.ForestGreen;
128        Alus2.CanRotate = false;
129        Alus2.IgnoresExplosions = true;
130        Alus2.X = 250;
131        Alus2.Tag = "Alus2";
132        Add(Alus2);
133
134
135        pyssy2 = new LaserGun(20, 5);
136        pyssy2.Angle += Angle.FromDegrees(90);
137        pyssy2.Shoot();
138        pyssy2.MaxAmmoLifetime = TimeSpan.MaxValue;
139        pyssy2.LaserCollision = Laser2Osuu;
140        pyssy2.AmmoIgnoresGravity = false;
141        pyssy2.InfiniteAmmo = true;
142        Alus2.Add(pyssy2);
143    }
144
145    void Nappaimet()
146    {
147        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
148
149        Keyboard.Listen(Key.Left, ButtonState.Down,
150           LiikutaPelaajaa1, null, new Vector(-500, 0));
151        Keyboard.Listen(Key.Right, ButtonState.Down,
152          LiikutaPelaajaa1, null, new Vector(500, 0));
153        Keyboard.Listen(Key.Up, ButtonState.Down,
154          LiikutaPelaajaa1, null, new Vector(0, 500));
155        Keyboard.Listen(Key.Down, ButtonState.Down,
156          LiikutaPelaajaa1, null, new Vector(0, -500));
157
158        Keyboard.Listen(Key.A, ButtonState.Down,
159           LiikutaPelaajaa2, null, new Vector(-500, 0));
160        Keyboard.Listen(Key.D, ButtonState.Down,
161          LiikutaPelaajaa2, null, new Vector(500, 0));
162        Keyboard.Listen(Key.W, ButtonState.Down,
163          LiikutaPelaajaa2, null, new Vector(0, 500));
164        Keyboard.Listen(Key.S, ButtonState.Down,
165          LiikutaPelaajaa2, null, new Vector(0, -500));
166
167        Keyboard.Listen(Key.Space, ButtonState.Down, Ampuu, null);
168        Keyboard.Listen(Key.Tab, ButtonState.Down, Ampuu2, null);
169
170    }
171
172    void Ampuu()
173    {
174        pyssy.Shoot();
175    }
176
177    void Ampuu2()
178    {
179        pyssy2.Shoot();
180    }
181
182    void LiikutaPelaajaa1(Vector vektori1)
183    {
184        Alus1.Push(vektori1);
185    }
186
187    void LiikutaPelaajaa2(Vector vektori2)
188    {
189        Alus2.Push(vektori2);
190    }
191
192    protected override void Update(Time time)
193    {
194        base.Update(time);
195        Alus1.Angle = Alus1.Velocity.Angle - Angle.FromDegrees(90);
196        base.Update(time);
197        Alus2.Angle = Alus2.Velocity.Angle - Angle.FromDegrees(90);
198    }
199
200
201    void LuoUusiTahti()
202    {
203        FollowerBrain aly = new FollowerBrain();
204        aly.Target = Alus1;
205        aly.FollowAlways = false;
206        aly.TargetFollowDistance = 200;
207        aly.Speed = 50;
208
209        tahti = new PhysicsObject(30, 30);
210        tahti.Shape = Shape.Star;
211        tahti.Color = RandomGen.NextColor();
212        tahti.Y = RandomGen.NextDouble(-400, 400);
213        tahti.X = RandomGen.NextDouble(-400, 400);
214        tahti.Brain = aly;
215        tahti.Tag = "Tähti";
216        tahti.IgnoresGravity = true;
217        tahti.Restitution = 10;
218        AddCollisionHandler(tahti,tahtiTormasi);
219        Add(tahti);
220    }
221   
222
223    void LuoLaskuri1()
224    {
225        pisteLaskuri1 = new IntMeter(0);
226        pisteLaskuri1.MaxValue = 1000;
227        pisteLaskuri1.UpperLimit += Laskuri1Max;
228
229        Label pisteNaytto = new Label();
230        pisteNaytto.X = Screen.Left + 100;
231        pisteNaytto.Y = Screen.Top - 100;
232        pisteNaytto.TextColor = Color.Red;
233
234        pisteNaytto.BindTo(pisteLaskuri1);
235        Add(pisteNaytto);
236
237        Label pisteTeksti = new Label("Pisteitä: ");
238        pisteTeksti.X = Screen.Left + 50;
239        pisteTeksti.Y = Screen.Top - 100;
240        pisteTeksti.TextColor = Color.Red;
241        Add(pisteTeksti);
242    }
243
244    void LuoLaskuri2()
245    {
246        pisteLaskuri2 = new IntMeter(0);
247        pisteLaskuri2.MaxValue = 1000;
248        pisteLaskuri2.UpperLimit += Laskuri2Max;
249
250        Label pisteNaytto2 = new Label();
251        pisteNaytto2.X = Screen.Right -100;
252        pisteNaytto2.Y = Screen.Top - 100;
253        pisteNaytto2.TextColor = Color.Maroon;
254
255        pisteNaytto2.BindTo(pisteLaskuri2);
256        Add(pisteNaytto2);
257
258        Label pisteTeksti2 = new Label("Pisteitä: ");
259        pisteTeksti2.X = Screen.Right - 150;
260        pisteTeksti2.Y = Screen.Top - 100;
261        pisteTeksti2.TextColor = Color.GreenYellow;
262        Add(pisteTeksti2);
263    }
264
265
266    void LaserOsuu(PhysicsObject ammus, PhysicsObject kohde)
267    {
268        Explosion rajahdys = new Explosion(5);
269        rajahdys.Position = ammus.Position;
270        Add(rajahdys);
271        ammus.Destroy();
272
273        if (kohde.Tag.ToString() == "Tähti")
274        {
275            ammus.Destroy();
276            kohde.Destroy();
277            LuoUusiTahti();
278            pisteLaskuri1.Value += 10;
279
280        }
281        if (kohde.Tag.ToString() == "Alus2")
282        {
283            ammus.Destroy();
284            pisteLaskuri2.Value -= 10;
285        }
286
287    }
288
289    void Laser2Osuu(PhysicsObject ammus, PhysicsObject kohde)
290    {
291        Explosion rajahdys = new Explosion(2.5);
292        rajahdys.Position = ammus.Position;
293        Add(rajahdys);
294        ammus.Destroy();
295
296        if (kohde.Tag.ToString() == "Tähti")
297        {
298            ammus.Destroy();
299            kohde.Destroy();
300            LuoUusiTahti();
301            pisteLaskuri2.Value += 10;
302
303        }
304
305        if (kohde.Tag.ToString() == "Alus1")
306        {
307            ammus.Destroy();
308            pisteLaskuri1.Value -= 10;
309        }
310
311    }
312
313
314    void tahtiTormasi(PhysicsObject tahti, PhysicsObject kohde)
315        {
316            if (kohde.Tag.ToString() == "Alus2")
317            {
318                tahti.Destroy();
319                pisteLaskuri2.Value -= 30;
320                LuoUusiTahti();
321            }
322
323            if (kohde.Tag.ToString() == "Alus1")
324            {
325                tahti.Destroy();
326                pisteLaskuri1.Value -= 30;
327                LuoUusiTahti();
328            }
329
330        }
331
332
333    void Laskuri1Max(int arvo)
334    {
335        MessageDisplay.TextColor = Color.Fuchsia;
336        MessageDisplay.Add("Pelaaja 1 voitti pelin. Uusi peli alkaa 5 sekunnin kuluttua.");
337        Alus1.Destroy();
338        Alus2.Destroy();
339        Timer.SingleShot(5.0, ajastinLaukesi);
340    }
341
342    void Laskuri2Max(int arvo)
343    {
344        MessageDisplay.TextColor = Color.Aqua;
345        MessageDisplay.Add("Pelaaja 2 voitti pelin. Uusi peli alkaa 5 sekunnin kuluttua.");
346        Alus1.Destroy(); 
347        Alus2.Destroy();
348        Timer.SingleShot(5.0, ajastinLaukesi);
349    }
350
351    void ajastinLaukesi()
352    {
353        ClearAll();
354        AloitaPeli();
355    }
356
357}
Note: See TracBrowser for help on using the repository browser.