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

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