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.

RevLine 
[2496]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{
[2596]11    List<Label> valikonKohdat;
[2532]12    RandomMoverBrain SatunnaisAivot = new RandomMoverBrain();
[2552]13    Behqulo Behqulo;
14    int pahisten_lkm = 0;
[2532]15
[2596]16    IntMeter pistelaskuri = new IntMeter(0);
[2552]17
[2596]18    ScoreList topLista = new ScoreList(10, false, 0);
19
[2496]20    public override void Begin()
21    {
[2596]22        if (DataStorage.Exists("pisteet.xml"))
23            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
[2532]24
[2596]25        MediaPlayer.Play("vs sephiroth2");
26        Valikko();
27        Level.CreateGround(55, 45, 7, 5);
28    }
[2496]29
[2532]30
[2596]31    void AloitaPeli()
32    {
33        ClearAll();
34        LuoAleksikuutio();
35        LuoBehqulo();
[2532]36
37
38        Camera.Follow(Behqulo);
[2552]39        Gravity = new Vector(0.0, 0.0);
[2596]40       
[2552]41        Level.CreateBorders();
[2532]42        int i = 0;
[2552]43        while (i < 30)
[2532]44        {
45            LuoPahis();
46            // i++;
47            i = i + 1;
48        }
49        int u = 0;
[2552]50
51        while (u < 15)
[2532]52        {
53            LuoLaserpahis();
54            u = u + 1;
55        }
[2552]56        int o = 0;
[2532]57
[2552]58        /*
59        while (o < 15)
60        {
61            LuoLaserpahis2();
62            o = o + 1;
63        }
64        */
65
[2596]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
[2532]73    }
[2552]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    }
[2596]83    void ValikossaLiikkuminen(AnalogState hiirenTila)
84    {
85        foreach (Label kohta in valikonKohdat)
86        {
87            if (Mouse.IsCursorOn(kohta))
88            {
89                kohta.TextColor = Color.Red;
[2552]90
[2596]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    }
[2532]125    void LuoPahis()
126    {
[2552]127        Pahis pahis = new Pahis(10.0, 10.0);
[2532]128        pahis.X = RandomGen.NextDouble(Level.Left, Level.Right);
[2496]129        pahis.Shape = Shape.Circle;
130        pahis.Color = Color.Green;
[2532]131        // if (pahis.IsDestroyed);
[2496]132        pahis.Weapon = new AssaultRifle(20, 5);
[2596]133        pahis.Weapon.ProjectileCollision = AmmusOsuu2;
[2532]134        Vector suunta = (Behqulo.Position - pahis.Position).Normalize();
135        pahis.Angle = suunta.Angle;
[2552]136        pahisten_lkm++;
137        /*
[2532]138        Timer ajastin = new Timer();
139        ajastin.Interval = 1.0;
140        ajastin.Timeout += delegate { PahisAmpuu(pahis); };
[2552]141        ajastin.Start();*/
[2532]142        pahis.Brain = new RandomMoverBrain(1000.0);
[2496]143        Add(pahis);
[2552]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
[2532]150    }
151
[2552]152    void AmmusOsuu(PhysicsObject Ammus, PhysicsObject kohde)
153    {
154        if (kohde is Pahis)
155        {
156            Pahis k = (Pahis)kohde;
157            k.Hp--;
[2596]158            pistelaskuri.Value += 10;
159            if (k.Hp < 1) { kohde.Destroy(); pistelaskuri.Value += 100; } 
[2552]160        }
161        else if (kohde is Aleksikuutio)
162        {
163            Aleksikuutio k = (Aleksikuutio)kohde;
164            k.Hp--;
[2596]165            pistelaskuri.Value += 200;
166
167            if (k.Hp < 1) { kohde.Destroy(); pistelaskuri.Value += 1000; }
[2552]168        }
169        else if (kohde is Laserpahis)
170        {
171            Laserpahis k = (Laserpahis)kohde;
172            k.Hp--;
[2596]173            pistelaskuri.Value += 15;
174            if (k.Hp < 1)
175            {
176                kohde.Destroy(); pistelaskuri.Value += 150;
177            } 
[2552]178        }
[2532]179
180
[2552]181    }
182    void AmmusOsuu2(PhysicsObject Ammus2, PhysicsObject kohde2)
183    {
[2532]184
[2552]185        if (kohde2 is Behqulo)
186        {
187            Behqulo k = (Behqulo)kohde2;
188            k.Hp--;
[2596]189            if (k.Hp < 1) { 
190                k.Destroy();
191                ClearAll();
192                TopTen();
193            }
[2552]194        }
195    }
196
197
[2596]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);
[2552]206
[2596]207    }
208
209    void TallennaPisteet(Window sender)
210    {
211        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
212        ClearAll(); pistelaskuri.Reset();
213        Begin();
214    }
215
216
[2532]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    {
[2552]232        Behqulo = new Behqulo(10.0, 15.0);
[2532]233        Add(Behqulo);
234        Behqulo.Shape = Shape.Rectangle;
[2552]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,
[2532]244            LiikutaBehquloa, null, new Vector(0, 1000));
[2552]245        Keyboard.Listen(Key.Down, ButtonState.Down,
246             LiikutaBehquloa, null, new Vector(0, -1000));
247        Keyboard.Listen(Key.Space, ButtonState.Pressed,
[2532]248            Ammu, null);
249
[2552]250
[2532]251    }
252    void LuoLaserpahis()
253    {
[2552]254        Pahis Laserpahis = new Pahis(11.0, 10.3);
[2532]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);
[2552]259        Laserpahis.Weapon.ProjectileCollision = AmmusOsuu2;
[2596]260        Laserpahis.Brain = new RandomMoverBrain(1000.0);
[2532]261        Vector suunta = (Behqulo.Position - Laserpahis.Position).Normalize();
262
263
264        Add(Laserpahis);
[2552]265        pahisten_lkm++;
[2532]266
[2552]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();
[2532]271
272
273    }
274
275    void LuoAleksikuutio()
276    {
[2552]277        Aleksikuutio Aleksikuutio = new Aleksikuutio(100.0, 100.0);
[2532]278        Aleksikuutio.X = RandomGen.NextDouble(Level.Left, Level.Right);
279        Aleksikuutio.Color = Color.Violet;
[2552]280        Aleksikuutio.Weapon = new AssaultRifle(60.0, 60.0);
281        Aleksikuutio.Weapon.ProjectileCollision = AmmusOsuu2;
[2532]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();
[2496]288    }
[2552]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();
[2496]297
[2552]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
[2532]310    void AleksikuutioAmpuu(PlatformCharacter Aleksikuutio)
311    {
[2552]312        PhysicsObject ammus2 = Aleksikuutio.Weapon.Shoot();
313        if (ammus2 != null)
[2532]314        {
[2552]315            ammus2.Size *= 5;
[2532]316        }
317    }
[2496]318
319
[2596]320
[2532]321}
[2496]322
323
324
325
[2552]326public class Pahis : PlatformCharacter
327{
328    public int Hp = 7;
[2496]329
[2552]330    public Pahis(double width, double height)
331        : base(width, height)
332    {
[2496]333
[2552]334    }
[2496]335
[2552]336}
[2496]337
[2552]338public class Aleksikuutio : PlatformCharacter
339{
[2596]340    public int Hp = 400;
[2496]341
[2552]342    public Aleksikuutio(double width, double height)
343        : base(width, height)
344    {
[2496]345
[2552]346    }
[2496]347
[2552]348}
[2496]349
[2552]350public class Laserpahis : PlatformCharacter
351{
352    public int Hp = 10;
[2532]353
[2552]354    public Laserpahis(double width, double height)
355        : base(width, height)
356    {
[2532]357
[2552]358    }
[2532]359
[2552]360}
361public class Behqulo : PlatformCharacter
362{
[2596]363    public int Hp = 50;
[2532]364
[2552]365    public Behqulo(double width, double height)
366        : base(width, height)
367    {
[2532]368
[2552]369    }
[2532]370
[2552]371}
[2532]372
373
374
375
[2552]376
377
378
379
380
381
382
383
384
385
386
387
Note: See TracBrowser for help on using the repository browser.