source: 2013/24/EeroF/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1.cs @ 4101

Revision 4101, 12.8 KB checked in by eefadjuk, 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
9
10
11public class FysiikkaPeli1 : PhysicsGame
12{   
13    IntMeter pisteLaskuri;
14    DoubleMeter pelaajienmaara;
15    PhysicsObject Mikko;
16    PhysicsObject Mikkokaveri;
17    Image mikkokuva = LoadImage("Mikko3");
18    Image taustaKuva = LoadImage("ruoho4");
19    Image omenakuva = LoadImage("omena");
20    Image hamiskuva = LoadImage("Hamis");
21    Image SaMiKu = LoadImage("Sahkomies");
22    Image mikkokaveri = LoadImage("MikkoKaveri2");
23    SoundEffect Ai = LoadSoundEffect("Ai");
24    SoundEffect Nam = LoadSoundEffect("Nam");
25    SoundEffect HamisLahella = LoadSoundEffect("HamisLahella");
26    SoundEffect Kling = LoadSoundEffect("Kling");
27    SoundEffect HamisKuoli = LoadSoundEffect("HamisKuoli");
28    SoundEffect Havio = LoadSoundEffect("Haviov2");
29    Image Tahti = LoadImage("Tahti");
30    DoubleMeter elamaLaskuri;
31    DoubleMeter elamalaskuri2;
32    AssaultRifle pelaajan1Ase;
33    AssaultRifle pelaajan2Ase;
34    EasyHighScore topLista = new EasyHighScore();
35    public override void Begin()
36    {
37
38
39        LuoPelaaja();
40        LuoKentta();
41        AsetaOhjaimet();
42        LuoPistelaskuri();
43        LuoElamaLaskuri();
44        Level.Background.Image = taustaKuva;
45        Level.Background.TileToLevel();
46        Camera.Follow(Mikko, Mikkokaveri);
47        AddCollisionHandler(Mikko, "Omena", CollisionHandler.DestroyTarget);
48        AddCollisionHandler(Mikko, "Parannus", CollisionHandler.DestroyTarget);
49        AddCollisionHandler(Mikko, "Parannus", Lisaa5Pistetta);
50        AddCollisionHandler(Mikko, "Parannus", ParannaAsetta);
51        AddCollisionHandler(Mikko, "Omena", LisaaPiste);
52        AddCollisionHandler(Mikko, "Omena", LisaaElamaa);
53        AddCollisionHandler(Mikko, "Hamis", VahennaElamaa);
54
55    }
56
57    void LisaaPiste(PhysicsObject tormaaja, PhysicsObject kohde)
58    {
59        pisteLaskuri.Value++;
60        Nam.Play();
61    }
62
63    void Lisaa5Pistetta(PhysicsObject tormaaja, PhysicsObject kohde)
64    {
65        pisteLaskuri.Value += 5;
66        Kling.Play();
67    }
68
69    void LuoPistelaskuri()
70    {
71        pisteLaskuri = new IntMeter(0);
72
73        Label pisteNaytto = new Label();
74        pisteNaytto.X = Screen.Left + 100;
75        pisteNaytto.Y = Screen.Top - 100;
76        pisteNaytto.TextColor = Color.Black;
77        pisteNaytto.Color = Color.White;
78        pisteNaytto.Title = "Pisteet";
79
80        pisteNaytto.BindTo(pisteLaskuri);
81        Add(pisteNaytto);
82    }
83
84    void Vihukuoli()
85    {
86        pisteLaskuri.Value += 5;
87        HamisKuoli.Play();
88    }
89
90
91    void AsetaOhjaimet()
92    {
93        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
94        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
95        Keyboard.Listen(Key.Up, ButtonState.Down, PelaajaKavelee, "Pelaaja liikkuu", Mikko, 250.0);
96        Keyboard.Listen(Key.Down, ButtonState.Down, PelaajaKavelee, "Pelaaja liikkuu taakse", Mikko, -250.0);
97        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaaja, null, Mikko);
98        Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaPelaaja, null, Mikko);
99        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaaja, null, Mikko);
100        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaaja, null, Mikko);
101        Keyboard.Listen(Key.D, ButtonState.Released, PysaytaPelaaja, null, Mikko);
102        Keyboard.Listen(Key.A, ButtonState.Released, PysaytaPelaaja, null, Mikko);
103        Keyboard.Listen(Key.Right, ButtonState.Down, KaantyyOikealle, "Pelaaja kääntyy", Mikko);
104        Keyboard.Listen(Key.Left, ButtonState.Down, KaantyyVasemmalle, "Pelaaja kääntyy", Mikko);
105        Keyboard.Listen(Key.A, ButtonState.Down, KaantyyVasemmalle2, "Pelaaja kääntyy vähän", Mikko);
106        Keyboard.Listen(Key.D, ButtonState.Down, KaantyyOikealle2, "Pelaaja kääntyy vähän", Mikko);
107        Keyboard.Listen(Key.Space, ButtonState.Down, Ampuu, "Ampuu", pelaajan1Ase);
108        Keyboard.Listen(Key.H, ButtonState.Pressed, ShowControlHelp, "Apu");
109
110        ControllerOne.Listen(Button.RightTrigger, ButtonState.Pressed, Ampuu, "Ampuu", pelaajan2Ase);
111        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.1, KuunteleeOikeaaTattia, "Kääntää pelaajaa", Mikkokaveri);
112        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, PelaajaKavelee, "LiikuttaaPelaajaa", Mikkokaveri, 250.0);
113        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, PelaajaKavelee, "LiikuttaaPelaajaa", Mikkokaveri, -250.0);
114        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, PysaytaPelaaja, "LiikuttaaPelaajaa", Mikkokaveri);
115        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, PysaytaPelaaja, "LiikuttaaPelaajaa", Mikkokaveri);
116    }
117
118    void KuunteleeOikeaaTattia(AnalogState tila, PhysicsObject pelaaja)
119    {
120        pelaaja.Angle = tila.StateVector.Angle;
121        pelaaja.AngularVelocity = 0;
122    }
123
124    void PelaajaKavelee(PhysicsObject Mikko, double nopeus)
125    {
126
127        Vector pelaajanSuunta = Vector.FromLengthAndAngle(nopeus, Mikko.Angle);
128        Mikko.Velocity = pelaajanSuunta;
129
130    }
131    void PysaytaPelaaja(PhysicsObject Mikko)
132    {
133        Vector nopeus = Vector.Zero;
134        Mikko.Velocity = nopeus;
135        Mikko.AngularVelocity = 0.0;
136
137    }
138    void KaantyyOikealle(PhysicsObject Mikko)
139    {
140        Mikko.AngularVelocity = -5.0;
141    }
142    void KaantyyVasemmalle(PhysicsObject Mikko)
143    {
144        Mikko.AngularVelocity = 5.0;
145    }
146    void Ampuu(AssaultRifle ase)
147    {
148        PhysicsObject ammus = ase.Shoot();
149
150        if (ammus != null)
151        {
152            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
153            ammus.Mass = 100;
154        }
155    }
156    void KaantyyOikealle2(PhysicsObject Mikko)
157    {
158        Mikko.AngularVelocity = -1.0;
159    }
160    void KaantyyVasemmalle2(PhysicsObject Mikko)
161    {
162        Mikko.AngularVelocity = 1.0;
163    }
164
165
166
167    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
168    {
169        ammus.Destroy();
170
171        if (kohde is Vihu)
172        {
173            Vihu hamis = kohde as Vihu;
174            hamis.ElamaLaskuri.Value -= 1;
175        }
176    }
177    void Hamislahella()
178    {
179        if (HamisLahella.IsPlaying == false)
180        { HamisLahella.Play(); }
181    }
182
183    void LuoKentta()
184    {
185        Level.Width = 10000;
186        Level.Height = 10000;
187
188
189        for (int i = 0; i < 100; i++)
190        {
191            LuoOmena();
192        }
193
194
195        for (int i = 0; i < 10; i++)
196        {
197
198            int luku = RandomGen.NextInt(-5000, 5000);
199            int luku2 = RandomGen.NextInt(-5000, 5000);
200            int luku3 = RandomGen.NextInt(3, 15);
201
202            for (int j = 0; j < luku3; j++)
203                LuoSaMi(luku, luku2);
204        }
205
206
207        for (int i = 0; i < 10; i++)
208        {
209
210            LuoHamis();
211
212
213        }
214        for (int i = 0; i < 10; i++)
215        {
216            LuoParannus();
217        }
218        Level.CreateBorders();
219        Timer ajastin = new Timer();
220        ajastin.Interval = 15;
221        ajastin.Timeout += LisaaVihuja;
222        ajastin.Start();
223
224
225    }
226    void LisaaVihuja()
227    {
228        for (int i = 0; i < 1; i++)
229        {
230            LuoHamis();
231        }
232    }
233
234
235
236    void LuoOmena()
237    {
238
239        int luku = RandomGen.NextInt(-5000, 5000);
240        int luku2 = RandomGen.NextInt(-5000, 5000);
241        PhysicsObject Omena = new PhysicsObject(15, 15);
242        Omena.Image = omenakuva;
243        Omena.Tag = "Omena";
244        Omena.Shape = Shape.Circle;
245        Omena.Color = Color.Red;
246        Omena.X = luku;
247        Omena.Y = luku2;
248        Omena.Mass = 100000000000;
249        Add(Omena);
250
251
252
253    }
254
255
256    void LuoSaMi(double x, double y)
257    {
258
259
260        int luku = RandomGen.NextInt(-500, 500);
261        int luku2 = RandomGen.NextInt(-500, 500);
262        PhysicsObject SaMi = new PhysicsObject(120, 100);
263        SaMi.Image = SaMiKu;
264
265
266        SaMi.X = x + luku;
267        SaMi.Y = y + luku2;
268        SaMi.Mass = 100000000000000000;
269        Add(SaMi);
270
271    }
272
273    void LuoElamaLaskuri()
274    {
275        elamaLaskuri = new DoubleMeter(10);
276        elamaLaskuri.MaxValue = 20;
277        elamaLaskuri.LowerLimit += ElamaLoppui;
278
279        LuoElamaPalkki(Screen.Left + 150, Screen.Top - 20, elamaLaskuri);
280
281        elamalaskuri2 = new DoubleMeter(10);
282        elamalaskuri2.MaxValue = 20;
283        elamalaskuri2.LowerLimit += delegate { ElamaLoppui(Mikkokaveri); };
284
285        LuoElamaPalkki(Screen.Right - 150, Screen.Top - 20, elamaLaskuri);
286    }
287
288    void LuoElamaPalkki(double x, double y, DoubleMeter seurattava)
289    {
290        ProgressBar elamaPalkki = new ProgressBar(150, 20);
291        elamaPalkki.X = x;
292        elamaPalkki.Y = y;
293        elamaPalkki.BindTo(seurattava);
294        elamaPalkki.Color = Color.Transparent;
295        elamaPalkki.BarColor = Color.Red;
296        elamaPalkki.BorderColor = Color.Black;
297        Add(elamaPalkki);
298    }
299
300    void LuoElamaLaskurivihkulle(Vihu vihu)
301    {
302        ProgressBar elamaPalkki = new ProgressBar(150, 20);
303        elamaPalkki.Y = 40;
304        elamaPalkki.BindTo(vihu.ElamaLaskuri);
305        elamaPalkki.Color = Color.Transparent;
306        elamaPalkki.BarColor = Color.Blue;
307        elamaPalkki.BorderColor = Color.Black;
308        vihu.Add(elamaPalkki);
309    }
310
311    void ElamaLoppui(PhysicsObject kuollut)
312    {
313
314    }
315
316    void TUHO()
317    {
318        Havio.Play();
319        Mikko.Destroy();
320        topLista.EnterAndShow(pisteLaskuri.Value);
321        //   topLista.HighScoreWindow.Closed += AloitaPeli;
322    }
323    void LisaaElamaa(PhysicsObject tormaaja, PhysicsObject kohde)
324    {
325        elamaLaskuri.Value++;
326    }
327    void VahennaElamaa(PhysicsObject tormaaja, PhysicsObject kohde)
328    {
329        elamaLaskuri.Value--;
330
331        Ai.Play();
332    }
333    void LuoHamis()
334    {
335        Vihu Hamis = new Vihu(30, 30);
336        Hamis.Color = Color.Black;
337        Hamis.Tag = "Hamis";
338        Hamis.ElamaLaskuri.LowerLimit += Vihukuoli;
339
340        FollowerBrain aivot = new FollowerBrain("pelaaja");
341        Hamis.Brain = aivot;
342        aivot.Speed = 100;
343        aivot.Active = true;
344        aivot.TargetClose += Hamislahella;
345        aivot.DistanceClose = 1000;
346
347        Hamis.Image = hamiskuva;
348        Hamis.Mass = 0.00000000000000000001;
349
350        int luku = RandomGen.NextInt(-5000, 5000);
351        int luku2 = RandomGen.NextInt(-5000, 5000);
352        Hamis.X = luku;
353        Hamis.Y = luku2;
354        Add(Hamis);
355
356        LuoElamaLaskurivihkulle(Hamis);
357    }
358    void LuoParannus()
359    {
360        int luku = RandomGen.NextInt(-5000, 5000);
361        int luku2 = RandomGen.NextInt(-5000, 5000);
362        PhysicsObject Parannus = new PhysicsObject(20, 20);
363        Parannus.Image = Tahti;
364        Parannus.Tag = "Parannus";
365        //Parannus.Shape = Shape.Star;
366        //Parannus.Color = Color.Yellow;
367        Parannus.X = luku;
368        Parannus.Y = luku2;
369        Add(Parannus);
370    }
371
372    void LuoPelaaja()
373    {
374        Mikko = new PhysicsObject(70, 52.5);
375        Mikko.Image = mikkokuva;
376
377        Mikko.Tag = "pelaaja";
378        Add(Mikko);
379        pelaajan1Ase = new AssaultRifle(30, 10);
380        //  pelaajan1Ase.
381        pelaajan1Ase.ProjectileCollision = AmmusOsui;
382        pelaajan1Ase.FireRate = 2;
383
384        pelaajan1Ase.Power.DefaultValue = 300;
385        Mikko.Add(pelaajan1Ase);
386        pelaajan1Ase.Y = -10;
387        pelaajan1Ase.IsVisible = false;
388        LuoKaveri();
389    }
390    void LuoKaveri()
391    {
392        Mikkokaveri = new PhysicsObject(70, 52.5);
393        Mikkokaveri.Image = mikkokaveri;
394        Mikkokaveri.X = -60;
395        Mikkokaveri.Tag = "pelaaja";
396
397        pelaajan2Ase = new AssaultRifle(30, 10);
398        pelaajan2Ase.ProjectileCollision = AmmusOsui;
399        pelaajan2Ase.FireRate = 2;
400
401
402
403        pelaajan2Ase.Power.DefaultValue = 300;
404        Mikkokaveri.Add(pelaajan2Ase);
405        pelaajan2Ase.Y = -10;
406        pelaajan2Ase.IsVisible = false;
407
408        Add(Mikkokaveri);
409    }
410
411
412
413    void ParannaAsetta(PhysicsObject tormaaja, PhysicsObject kohde)
414    {
415        int luku = RandomGen.NextInt(1, 3);
416        pelaajan1Ase.FireRate += luku;
417        pelaajan1Ase.Power.Value += 10;
418        pelaajan1Ase.Power.DefaultValue += 10;
419
420    }
421
422
423    void Randomgen()
424    {
425        //  int luku = RandomGen.NextInt( 100 ); (pienempi kuin 100)
426        //int luku = RandomGen.NextInt( 50, 1000 ); (väliltä 50-999)
427    }
428
429
430}
431
432class Vihu : PhysicsObject
433{
434    private IntMeter elamaLaskuri = new IntMeter(5, 0, 5);
435    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
436
437    public Vihu(double leveys, double korkeus)
438        : base(leveys, korkeus)
439    {
440        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
441
442    }
443}
Note: See TracBrowser for help on using the repository browser.