source: 2011/31/PeetuL/Palikoiden sota/Palikoiden sota/Palikoiden sota/Peli.cs @ 2604

Revision 2604, 10.1 KB checked in by peossalu, 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    List<Label> valikonKohdat;
12    RandomMoverBrain SatunnaisAivot = new RandomMoverBrain();
13    Behqulo Behqulo;
14    int pahisten_lkm = 0;
15
16    IntMeter pistelaskuri = new IntMeter(0);
17
18    ScoreList topLista = new ScoreList(10, false, 0);
19
20    DoubleMeter voimaMittari = new DoubleMeter(0);
21
22    public override void Begin()
23    {
24        if (DataStorage.Exists("pisteet.xml"))
25            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
26
27        MediaPlayer.Play("vs sephiroth2");
28        Valikko();
29        Level.CreateGround(55, 45, 7, 5);
30    }
31
32
33    void AloitaPeli()
34    {
35        ClearAll();
36        LuoAleksikuutio();
37        LuoBehqulo();
38
39
40        voimaMittari.Value = Behqulo.Hp;
41voimaMittari.MaxValue = 50;
42BarGauge voimaPalkki = new BarGauge(10, 150);
43voimaPalkki.BindTo(voimaMittari);
44Add(voimaPalkki);
45
46voimaPalkki.X = Screen.Left + 150;
47voimaPalkki.Y = Screen.Top - 20;
48
49voimaPalkki.BarColor = Color.Red;
50voimaPalkki.BorderColor = Color.Aqua;
51
52
53voimaPalkki.Angle = Angle.FromDegrees(90);
54
55
56        Camera.Follow(Behqulo);
57        Gravity = new Vector(0.0, 0.0);
58       
59        Level.CreateBorders();
60        int i = 0;
61        while (i < 30)
62        {
63            LuoPahis();
64            // i++;
65            i = i + 1;
66        }
67        int u = 0;
68
69        while (u < 15)
70        {
71            LuoLaserpahis();
72            u = u + 1;
73        }
74        int o = 0;
75
76        /*
77        while (o < 15)
78        {
79            LuoLaserpahis2();
80            o = o + 1;
81        }
82        */
83
84        Label pisteNaytto = new Label();
85        pisteNaytto.Right = Screen.Right - 100;
86        pisteNaytto.Bottom = Screen.Bottom + 50;
87        pisteNaytto.TextColor = Color.White;
88        pisteNaytto.BindTo(pistelaskuri);
89        Add(pisteNaytto);
90
91    }
92
93    void pahis_ampuu(PlatformCharacter pahis)
94    {
95        if (!pahis.IsDestroyed)
96        {
97            PhysicsObject Ammus = pahis.Weapon.Shoot();
98            Timer.SingleShot(1.0, Ammus.Destroy);
99        }
100    }
101    void ValikossaLiikkuminen(AnalogState hiirenTila)
102    {
103        foreach (Label kohta in valikonKohdat)
104        {
105            if (Mouse.IsCursorOn(kohta))
106            {
107                kohta.TextColor = Color.Red;
108
109            }
110            else
111            {
112                kohta.TextColor = Color.Black;
113            }
114
115        }
116    }
117    void Valikko()
118    {
119        ClearAll();
120        valikonKohdat = new List<Label>();
121        Level.BackgroundColor = Color.Black;
122        Label kohta1 = new Label("Aloita uusi peli");
123        kohta1.Position = new Vector(0, 40);
124        valikonKohdat.Add(kohta1);
125
126        Label kohta2 = new Label("Lopeta");
127        kohta2.Position = new Vector(0, -40);
128        valikonKohdat.Add(kohta2);
129
130        foreach (Label valikonKohta in valikonKohdat)
131        {
132            Add(valikonKohta);
133
134        }
135
136        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
137        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
138        Mouse.IsCursorVisible = true;
139        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
140        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
141
142    }
143    void LuoPahis()
144    {
145        Pahis pahis = new Pahis(10.0, 10.0);
146        pahis.X = RandomGen.NextDouble(Level.Left, Level.Right);
147        pahis.Shape = Shape.Circle;
148        pahis.Color = Color.Green;
149        // if (pahis.IsDestroyed);
150        pahis.Weapon = new AssaultRifle(20, 5);
151        pahis.Weapon.ProjectileCollision = AmmusOsuu2;
152        Vector suunta = (Behqulo.Position - pahis.Position).Normalize();
153        pahis.Angle = suunta.Angle;
154        pahisten_lkm++;
155        /*
156        Timer ajastin = new Timer();
157        ajastin.Interval = 1.0;
158        ajastin.Timeout += delegate { PahisAmpuu(pahis); };
159        ajastin.Start();*/
160        pahis.Brain = new RandomMoverBrain(1000.0);
161        Add(pahis);
162
163        Timer vihu_ammunta_ajastin = new Timer();
164        vihu_ammunta_ajastin.Interval = (1.0 + (RandomGen.NextDouble(-0.3, 0.3)));
165        vihu_ammunta_ajastin.Timeout += delegate { pahis_ampuu(pahis); };
166        vihu_ammunta_ajastin.Start();
167
168    }
169
170    void AmmusOsuu(PhysicsObject Ammus, PhysicsObject kohde)
171    {
172        if (kohde is Pahis)
173        {
174            Pahis k = (Pahis)kohde;
175            k.Hp--;
176            pistelaskuri.Value += 10;
177            if (k.Hp < 1) { kohde.Destroy(); pistelaskuri.Value += 100; } 
178        }
179        else if (kohde is Aleksikuutio)
180        {
181            Aleksikuutio k = (Aleksikuutio)kohde;
182            k.Hp--;
183            pistelaskuri.Value += 200;
184
185            if (k.Hp < 1) { kohde.Destroy(); pistelaskuri.Value += 1000; }
186        }
187        else if (kohde is Laserpahis)
188        {
189            Laserpahis k = (Laserpahis)kohde;
190            k.Hp--;
191            pistelaskuri.Value += 15;
192            if (k.Hp < 1)
193            {
194                kohde.Destroy(); pistelaskuri.Value += 150;
195            } 
196        }
197
198
199    }
200    void AmmusOsuu2(PhysicsObject Ammus2, PhysicsObject kohde2)
201    {
202
203        if (kohde2 is Behqulo)
204        {
205            Behqulo k = (Behqulo)kohde2;
206            k.Hp--;
207            voimaMittari.Value = Behqulo.Hp;
208            if (k.Hp < 1) { 
209                k.Destroy();
210                ClearAll();
211                TopTen();
212            }
213        }
214    }
215
216
217    void TopTen()
218    {
219        HighScoreWindow topIkkuna = new HighScoreWindow(
220                             "Parhaat pisteet",
221                             "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:",
222                             topLista, pistelaskuri.Value);
223        topIkkuna.Closed += TallennaPisteet;
224        Add(topIkkuna);
225
226    }
227
228    void TallennaPisteet(Window sender)
229    {
230        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
231        ClearAll(); pistelaskuri.Reset();
232        Begin();
233    }
234
235
236    void LiikutaBehquloa(Vector Vektori)
237    {
238        Behqulo.Push(Vektori);
239    }
240
241    void Ammu()
242    {
243        Behqulo.Weapon.Shoot();
244
245
246    }
247
248
249    void LuoBehqulo()
250    {
251        Behqulo = new Behqulo(10.0, 15.0);
252        Add(Behqulo);
253        Behqulo.Shape = Shape.Rectangle;
254        Behqulo.Color = Color.Red;
255        Behqulo.Weapon = new LaserGun(20, 5);
256        Behqulo.Weapon.ProjectileCollision = AmmusOsuu;
257        Behqulo.Weapon.InfiniteAmmo = true;
258        Keyboard.Listen(Key.Right, ButtonState.Down,
259            LiikutaBehquloa, null, new Vector(10000, 0));
260        Keyboard.Listen(Key.Left, ButtonState.Down,
261            LiikutaBehquloa, null, new Vector(-10000, 0));
262        Keyboard.Listen(Key.Up, ButtonState.Down,
263            LiikutaBehquloa, null, new Vector(0, 1000));
264        Keyboard.Listen(Key.Down, ButtonState.Down,
265             LiikutaBehquloa, null, new Vector(0, -1000));
266        Keyboard.Listen(Key.Space, ButtonState.Pressed,
267            Ammu, null);
268
269
270    }
271    void LuoLaserpahis()
272    {
273        Pahis Laserpahis = new Pahis(11.0, 10.3);
274        Laserpahis.X = RandomGen.NextDouble(Level.Left, Level.Right);
275        Laserpahis.Shape = Shape.Star;
276        Laserpahis.Color = Color.Green;
277        Laserpahis.Weapon = new LaserGun(5, 5);
278        Laserpahis.Weapon.ProjectileCollision = AmmusOsuu2;
279        Laserpahis.Brain = new RandomMoverBrain(1000.0);
280        Vector suunta = (Behqulo.Position - Laserpahis.Position).Normalize();
281
282
283        Add(Laserpahis);
284        pahisten_lkm++;
285
286        Timer vihu_ammunta_ajastin = new Timer();
287        vihu_ammunta_ajastin.Interval = 1.0 + (RandomGen.NextDouble(-0.3, 0.3));
288        vihu_ammunta_ajastin.Timeout += delegate { pahis_ampuu(Laserpahis); };
289        vihu_ammunta_ajastin.Start();
290
291
292    }
293
294    void LuoAleksikuutio()
295    {
296        Aleksikuutio Aleksikuutio = new Aleksikuutio(100.0, 100.0);
297        Aleksikuutio.X = RandomGen.NextDouble(Level.Left, Level.Right);
298        Aleksikuutio.Color = Color.Violet;
299        Aleksikuutio.Weapon = new AssaultRifle(60.0, 60.0);
300        Aleksikuutio.Weapon.ProjectileCollision = AmmusOsuu2;
301        Add(Aleksikuutio);
302        Timer ajastin = new Timer();
303        ajastin.Interval = 2.0;
304        ajastin.Timeout += delegate { AleksikuutioAmpuu(Aleksikuutio); };
305        Aleksikuutio.Brain = new RandomMoverBrain();
306        ajastin.Start();
307    }
308    void LuoLaserpahis2()
309    {
310        Pahis Laserpahis2 = new Pahis(11.0, 10.3);
311        Laserpahis2.X = RandomGen.NextDouble(Level.Left, Level.Right);
312        Laserpahis2.Shape = Shape.Star;
313        Laserpahis2.Color = Color.Green;
314        Laserpahis2.Weapon = new LaserGun(5, 5);
315        Vector suunta = (Behqulo.Position - Laserpahis2.Position).Normalize();
316
317
318        Add(Laserpahis2);
319        pahisten_lkm++;
320
321        Timer vihu_ammunta_ajastin = new Timer();
322        vihu_ammunta_ajastin.Interval = 1.0;
323        vihu_ammunta_ajastin.Timeout += delegate { pahis_ampuu(Laserpahis2); };
324        vihu_ammunta_ajastin.Start();
325
326
327    }
328
329    void AleksikuutioAmpuu(PlatformCharacter Aleksikuutio)
330    {
331        PhysicsObject ammus2 = Aleksikuutio.Weapon.Shoot();
332        if (ammus2 != null)
333        {
334            ammus2.Size *= 5;
335        }
336    }
337
338
339
340}
341
342
343
344
345public class Pahis : PlatformCharacter
346{
347    public int Hp = 7;
348
349    public Pahis(double width, double height)
350        : base(width, height)
351    {
352
353    }
354
355}
356
357public class Aleksikuutio : PlatformCharacter
358{
359    public int Hp = 400;
360
361    public Aleksikuutio(double width, double height)
362        : base(width, height)
363    {
364
365    }
366
367}
368
369public class Laserpahis : PlatformCharacter
370{
371    public int Hp = 10;
372
373    public Laserpahis(double width, double height)
374        : base(width, height)
375    {
376
377    }
378
379}
380public class Behqulo : PlatformCharacter
381{
382    public int Hp = 50;
383
384    public Behqulo(double width, double height)
385        : base(width, height)
386    {
387
388    }
389
390}
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
Note: See TracBrowser for help on using the repository browser.