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

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