source: 2011/31/TeemuM/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/Peli.cs @ 2594

Revision 2594, 11.9 KB checked in by teematma, 10 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 alus;
12
13    LaserGun laser;
14    PlasmaCannon plasma;
15    //PlasmaCannon plasma2;
16   
17    //PhysicsObject ohjus;
18    //PhysicsObject vihu1;
19    IntMeter vihu2elamat;
20    IntMeter aluselämät;
21
22    PhysicsObject vihu2;
23    //PhysicsObject vihu3;
24    //PhysicsObject vihu4;
25
26    Image aluskuva = LoadImage("alus");
27    Shape alusmuoto;
28
29    //Image vihukuva1 = LoadImage("vihu1");
30    //Shape vihumuoto1;
31
32    Image vihukuva2 = LoadImage("vihu2");
33    //Shape vihumuoto2;
34
35    /*Image vihukuva3 = LoadImage("vihu3");
36    Shape vihumuoto3;
37
38    Image vihukuva4 = LoadImage("vihu4");
39    Shape vihumuoto4;*/
40
41    Image plasmaammus = LoadImage("plasma");
42    Image ohjuskuva = LoadImage("ohjus");
43
44    Image klontti1 = LoadImage("maaklontti1");
45    Shape klonttimuoto1;
46
47    Image klontti2 = LoadImage("maaklontti2");
48    Shape klonttimuoto2;
49
50    Image klontti3 = LoadImage("maaklontti3");
51    Shape klonttimuoto3;
52
53
54    Image rajahdyskuva = LoadImage("rajahdys");
55
56
57    public override void Begin()
58    {
59
60        alusmuoto = Shape.FromImage(aluskuva);
61
62        //vihumuoto1 = Shape.FromImage(vihukuva1);
63        //vihumuoto2 = Shape.FromImage(vihukuva2);
64        //vihumuoto3 = Shape.FromImage(vihukuva3);
65        //vihumuoto4 = Shape.FromImage(vihukuva4);
66
67        klonttimuoto1 = Shape.FromImage(klontti1);
68        klonttimuoto2 = Shape.FromImage(klontti2);
69        klonttimuoto3 = Shape.FromImage(klontti3);
70
71        luokentta();
72        asetaohjaimet();
73        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "poistu");
74        //luovihu1();
75        //luovihu2();
76        //luovihu3();
77        //luovihu4();
78
79    }
80    void luokentta()
81    {
82        this.Level.Height = 3000;
83        this.Level.Width = 3500;
84        Level.CreateBorders(true);
85        //Gravity = new Vector(0, -600);
86        Level.CreateGround(10, 30, 100, Color.Gray);
87
88        MediaPlayer.Play("Terra");
89
90        tausta();
91        Level.BackgroundColor = Color.Black;
92
93
94
95        alus = new PhysicsObject(40, 50);
96        Add(alus);
97        alus.Restitution = 0;
98        alus.LinearDamping = 0.95;
99        alus.AngularDamping = 0.75;
100        alus.Mass = 1;
101
102        aluselämät = new IntMeter(100);
103
104        aluselämät.Value = 100;
105        aluselämät.MinValue = 0;
106
107        aluselämät.LowerLimit += delegate { alus.Destroy(); };
108
109        Camera.Follow(alus);
110        Camera.StayInLevel = true;
111        alus.Shape = alusmuoto;
112        alus.Y = -1350;
113        alus.X = 0;
114        alus.CollisionIgnoreGroup = 100;
115
116        laser = new LaserGun(10, 10);
117        alus.Add(laser);
118        laser.Angle = Angle.FromDegrees(90);
119        laser.InfiniteAmmo = true;
120        laser.TimeBetweenUse = TimeSpan.FromSeconds(0.1);
121
122        plasma = new PlasmaCannon(10, 10);
123        alus.Add(plasma);
124        plasma.Angle = Angle.FromDegrees(90);
125        plasma.InfiniteAmmo = true;
126        plasma.TimeBetweenUse = TimeSpan.FromSeconds(5);
127
128        alus.Image = aluskuva;
129
130        for (int i = 0; i < 10; i++)
131        {
132            luovihu2();
133        }
134
135    }
136
137    void AmmuAseella()
138    {
139        PhysicsObject ammus = laser.Shoot();
140        laser.Power.Value = 1000;
141        laser.ProjectileCollision = ammus1osui;
142
143        if (ammus != null)
144        {
145            ammus.Size *= 5;
146        }
147    }
148
149    void ammus1osui(PhysicsObject ammus1, PhysicsObject vihu2)
150    {
151        ammus1.Destroy();
152        vihu2elamat.Value = vihu2elamat.Value - 3;
153    }
154
155    void AmmuAseella2()
156    {
157        PhysicsObject ammus2 = plasma.Shoot();
158        plasma.Power.Value = 5000;
159        plasma.ProjectileCollision = Ammus2Osui;
160
161        if (ammus2 != null)
162        {
163            ammus2.Size *= 30;
164            ammus2.Image = plasmaammus;
165            ammus2.CollisionIgnoreGroup = 100;
166        }
167    }
168
169    void Ammus2Osui(PhysicsObject ammus2, PhysicsObject kohde)
170    {
171        ammus2.Destroy();
172        Explosion rajahdys = new Explosion(100);
173        rajahdys.Force = 10;
174        rajahdys.Image = rajahdyskuva;
175        rajahdys.Position = ammus2.Position;
176
177        vihu2elamat.Value = vihu2elamat.Value -20;
178
179        Add(rajahdys);
180    }
181
182    /*void luovihu1()
183    {
184        vihu1 = new PhysicsObject(30, 50);
185        Add(vihu1);
186        vihu1.Color = Color.Red;
187        vihu1.Restitution = 0;
188        vihu1.LinearDamping = 0.95;
189        vihu1.Mass = 1;
190        vihu1.AngularDamping = 0.75;
191        vihu1.Image = vihukuva1;
192        vihu1.Shape = vihumuoto1;
193        vihu1.Y = 1350;
194        vihu1.X = 0;
195        vihu1.CollisionIgnoreGroup = 200;
196
197        vihu1elamat = new IntMeter(10);
198
199        vihu1elamat.Value = 10;
200        vihu1elamat.MinValue = 0;
201
202        vihu1elamat.LowerLimit += delegate { vihu1.Destroy(); };
203
204
205
206        plasma2 = new PlasmaCannon(10, 10);
207        vihu1.Add(plasma2);
208        plasma2.Angle = Angle.FromDegrees(90);
209        plasma2.InfiniteAmmo = true;
210
211        FollowerBrain aivo1 = new FollowerBrain();
212        aivo1.Active = true;
213        aivo1.Target = alus;
214        aivo1.Speed = 400;
215        aivo1.TargetFollowDistance = 15000;
216        //aivo1.TargetCloseDistance = 10;
217        //aivo1.StopWhenTargetClose = true;
218        vihu1.Brain = aivo1;
219
220        Timer ampumisajastin1 = new Timer();
221        ampumisajastin1.Interval = 3;
222        ampumisajastin1.Timeout += vihu1ampuu;
223        ampumisajastin1.Start();
224       
225    }
226
227    void vihu1ampuu()
228    {
229        Vector suunta = (alus.Position - vihu1.Position).Normalize();
230        vihu1.Angle = suunta.Angle + Angle.FromDegrees(-90);
231        vihu1ampuu(plasma2);
232
233    }
234
235    void vihu1ampuu(Weapon ase)
236    {
237        PhysicsObject plasma2 = ase.Shoot();
238        ase.Power.Value = 5000;
239        ase.ProjectileCollision = Ammus2Osui;
240
241        if (plasma2 != null)
242        {
243            plasma2.Size *= 30;
244            plasma2.Image = plasmaammus;
245            plasma2.CollisionIgnoreGroup = 200;
246        }
247    }*/
248
249    void luovihu2()
250    {
251        vihu2 = new PhysicsObject(50, 50);
252        Add(vihu2);
253        vihu2.Shape = Shape.Circle;
254        vihu2.Mass = 1;
255        vihu2.Restitution = 0;
256        vihu2.LinearDamping = 0.95;
257        vihu2.AngularDamping = 0.75;
258        vihu2.Image = vihukuva2;
259        vihu2.Y = 1000;
260        vihu2.X = 0;
261
262        vihu2.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
263        vihu2.X = RandomGen.NextDouble(Level.Left, Level.Right);
264
265        vihu2elamat = new IntMeter(10);
266
267        vihu2elamat.Value = 20;
268        vihu2elamat.MinValue = 0;
269
270        vihu2elamat.LowerLimit += delegate { vihu2.Destroy(); };
271
272        FollowerBrain aivo1 = new FollowerBrain();
273        aivo1.Active = true;
274        aivo1.Target = alus;
275        aivo1.Speed = 300;
276        aivo1.TargetFollowDistance = 15000;
277
278        vihu2.Brain = aivo1;
279
280        vihu2.CollisionIgnoreGroup = 200;
281
282        AddCollisionHandler(vihu2, vihu2poks);
283
284    }
285
286    void aivot()
287    {
288        FollowerBrain aivo1 = new FollowerBrain();
289        aivo1.Active = true;
290        aivo1.Target = alus;
291        aivo1.Speed = 300;
292        aivo1.TargetFollowDistance = 15000;
293
294        vihu2.Brain = aivo1;
295
296        vihu2.CollisionIgnoreGroup = 200;
297
298       
299    }
300
301    void vihu2poks(PhysicsObject vihu2, PhysicsObject alus)
302    {
303        vihu2.Destroy();
304        Explosion rajahdys = new Explosion(100);
305        rajahdys.Position = vihu2.Position;
306        aluselämät.Value = aluselämät.Value - 5;
307        Add(rajahdys);
308    }
309
310
311    /*void luovihu3()
312    {
313        vihu3 = new PhysicsObject(30, 50);
314        Add(vihu3);
315        vihu3.Restitution = 0;
316        vihu3.Mass = 1;
317        vihu3.LinearDamping = 0.95;
318        vihu3.AngularDamping = 0.75;
319        vihu3.Image = vihukuva3;
320        vihu3.Shape = vihumuoto3;
321        vihu3.Y = 1200;
322        vihu3.X = 0;
323        FollowerBrain aivo1 = new FollowerBrain();
324        aivo1.Active = true;
325        aivo1.Target = alus;
326        aivo1.Speed = 400;
327        aivo1.TargetFollowDistance = 15000;
328        //aivo1.TargetCloseDistance = 10;
329        //aivo1.StopWhenTargetClose = true;
330        vihu3.Brain = aivo1;
331
332        vihu3.CollisionIgnoreGroup = 200;
333
334        Timer ampumisajastin2 = new Timer();
335        ampumisajastin2.Interval = 7;
336        ampumisajastin2.Timeout += vihu3ampuu;
337        ampumisajastin2.Start();
338
339    }
340
341    void luoohjus(Vector paikkavektori)
342    {
343        ohjus = new PhysicsObject(11,37);
344        ohjus.Image = ohjuskuva;
345        ohjus.Position = paikkavektori;
346
347        FollowerBrain aivo1 = new FollowerBrain();
348        aivo1.Active = true;
349        aivo1.Target = alus;
350        aivo1.Speed = 500;
351        aivo1.TargetFollowDistance = 15000;
352       
353        ohjus.Brain = aivo1;
354
355        ohjus.CollisionIgnoreGroup = 200;
356
357        AddCollisionHandler(ohjus, ammus3osui);
358
359        Add(ohjus);
360    }
361
362    void vihu3ampuu()
363    {
364        Vector suunta = (alus.Position - vihu1.Position).Normalize();
365        vihu3.Angle = suunta.Angle + Angle.FromDegrees(-90);
366        luoohjus(vihu3.Position);
367    }
368
369    void ammus3osui(PhysicsObject ohjus, PhysicsObject alus)
370    {
371        ohjus.Destroy();
372        Explosion rajahdys2 = new Explosion(150);
373        rajahdys2.Force = 10;
374        rajahdys2.Position = ohjus.Position;
375        Add(rajahdys2);
376    }
377
378
379    void luovihu4()
380    {
381        vihu4 = new PhysicsObject(250, 600);
382        Add(vihu4);
383        vihu4.Restitution = 0;
384        vihu4.LinearDamping = 0.55;
385        vihu4.AngularDamping = 0.75^
386        vihu4.Image = vihukuva4;
387        vihu4.Shape = vihumuoto4;
388        vihu4.Mass = 2000;
389        vihu4.Y = 1000;
390        vihu4.X = 1000;
391        RandomMoverBrain randomaivo = new RandomMoverBrain();
392        randomaivo.Active = true;
393        randomaivo.ChangeMovementSeconds = 10;
394        randomaivo.Speed = 15000;
395        vihu4.Brain = randomaivo;
396        vihu4.IgnoresGravity = true;
397
398        vihu4.CollisionIgnoreGroup = 200;
399
400
401    }*/
402
403
404
405    void tausta()
406    {
407
408        for (int i = 0; i < 1100; i++)
409        {
410            GameObject tahti = new GameObject(3, 3);
411            tahti.Shape = Shape.Star;
412            Add(tahti, -3);
413            tahti.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
414            tahti.X = RandomGen.NextDouble(Level.Left, Level.Right);
415            GetLayer(-3).RelativeTransition = new Vector(0.5, 0.5);
416        }
417
418
419    }
420
421    void kaasu()
422    {
423        Vector voima = new Vector();
424        voima = Vector.FromLengthAndAngle(2200, alus.Angle - Angle.FromDegrees(-90));
425        alus.Push(voima);
426
427    }
428    void pyoroik()
429    {
430        alus.AngularVelocity = -4;
431    }
432
433    void pyorvas()
434    {
435        alus.AngularVelocity = 4;
436    }
437
438    void asetaohjaimet()
439    {
440        Keyboard.Listen(Key.Up, ButtonState.Down, kaasu, null);
441        Keyboard.Listen(Key.W, ButtonState.Down, kaasu, null);
442        Keyboard.Listen(Key.Right, ButtonState.Down, pyoroik, null);
443        Keyboard.Listen(Key.D, ButtonState.Down, pyoroik, null);
444        Keyboard.Listen(Key.Left, ButtonState.Down, pyorvas, null);
445        Keyboard.Listen(Key.A, ButtonState.Down, pyorvas, null);
446        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, null);
447        Keyboard.Listen(Key.LeftControl, ButtonState.Down, AmmuAseella2, null);
448
449    }
450
451    protected override void Update(Time time)
452    {
453        //vihu1.Angle = vihu1.Velocity.Angle + Angle.FromDegrees(-90);
454        vihu2.Angle = vihu2.Velocity.Angle + Angle.FromDegrees(-90);
455        //vihu3.Angle = vihu3.Velocity.Angle + Angle.FromDegrees(-90);
456        //vihu4.Angle = vihu4.Velocity.Angle + Angle.FromDegrees(-90);
457
458        //ohjus.Angle = ohjus.Velocity.Angle + Angle.FromDegrees(-90);
459
460        base.Update(time);
461    }
462
463}
Note: See TracBrowser for help on using the repository browser.