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

Revision 2544, 8.1 KB checked in by teematma, 12 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    LaserGun laser;
13    PlasmaCannon plasma;
14    PlasmaCannon plasma2;
15    PhysicsObject vihu1;
16    PhysicsObject vihu2;
17    PhysicsObject vihu3;
18    PhysicsObject vihu4;
19
20    Image aluskuva = LoadImage("alus");
21    Shape alusmuoto;
22
23    Image vihukuva1 = LoadImage("vihu1");
24    Shape vihumuoto1;
25
26    Image vihukuva2 = LoadImage("vihu2");
27    //Shape vihumuoto2;
28
29    Image vihukuva3 = LoadImage("vihu3");
30    Shape vihumuoto3;
31
32    Image vihukuva4 = LoadImage("vihu4");
33    Shape vihumuoto4;
34
35    Image plasmaammus = LoadImage("plasma");
36
37    Image rajahdyskuva = LoadImage("rajahdys");
38
39
40    public override void Begin()
41    {
42
43        alusmuoto = Shape.FromImage(aluskuva);
44
45        vihumuoto1 = Shape.FromImage(vihukuva1);
46        //vihumuoto2 = Shape.FromImage(vihukuva2);
47        vihumuoto3 = Shape.FromImage(vihukuva3);
48        vihumuoto4 = Shape.FromImage(vihukuva4);
49        luokentta();
50        asetaohjaimet();
51        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "poistu");
52        luovihu1();
53        luovihu2();
54        luovihu3();
55        luovihu4();
56
57    }
58    void luokentta()
59    {
60        this.Level.Height = 3000;
61        this.Level.Width = 3500;
62        Level.CreateBorders(true);
63        //Gravity = new Vector(0, -600);
64        Level.CreateGround(10, 30, 100, Color.Gray);
65
66        MediaPlayer.Play("Terra");
67
68        tausta();
69        Level.BackgroundColor = Color.Black;
70
71        alus = new PhysicsObject(40, 50);
72        Add(alus);
73        alus.Restitution = 0;
74        alus.LinearDamping = 0.95;
75        alus.AngularDamping = 0.75;
76        alus.Mass = 1;
77        Camera.Follow(alus);
78        Camera.StayInLevel = true;
79        alus.Shape = alusmuoto;
80        alus.Y = -1350;
81        alus.X = 0;
82        alus.CollisionIgnoreGroup = 100;
83
84        laser = new LaserGun(10, 10);
85        alus.Add(laser);
86        laser.Angle = Angle.FromDegrees(90);
87        laser.InfiniteAmmo = true;
88        laser.TimeBetweenUse = TimeSpan.FromSeconds(0.1);
89
90        plasma = new PlasmaCannon(10, 10);
91        alus.Add(plasma);
92        plasma.Angle = Angle.FromDegrees(90);
93        plasma.InfiniteAmmo = true;
94        plasma.TimeBetweenUse = TimeSpan.FromSeconds(1);
95
96        alus.Image = aluskuva;
97        //rynkky = new AssaultRifle(20, 5);
98        //alus.Add(rynkky);
99
100    }
101
102    void AmmuAseella()
103    {
104        PhysicsObject ammus = laser.Shoot();
105        laser.Power.Value = 1000;
106
107        if (ammus != null)
108        {
109            ammus.Size *= 3;
110        }
111    }
112
113    void AmmuAseella2()
114    {
115        PhysicsObject ammus2 = plasma.Shoot();
116        plasma.Power.Value = 5000;
117        plasma.ProjectileCollision = Ammus2Osui;
118
119        if (ammus2 != null)
120        {
121            ammus2.Size *= 30;
122            ammus2.Image = plasmaammus;
123            ammus2.CollisionIgnoreGroup = 100;
124        }
125    }
126
127    void Ammus2Osui(PhysicsObject ammus2, PhysicsObject kohde)
128    {
129        ammus2.Destroy();
130        Explosion rajahdys = new Explosion(100);
131        rajahdys.Force = 10;
132        rajahdys.Image = rajahdyskuva;
133        rajahdys.Position = ammus2.Position;
134        Add(rajahdys);
135    }
136
137    void luovihu1()
138    {
139        vihu1 = new PhysicsObject(30, 50);
140        Add(vihu1);
141        vihu1.Color = Color.Red;
142        vihu1.Restitution = 0;
143        vihu1.LinearDamping = 0.95;
144        vihu1.Mass = 1;
145        vihu1.AngularDamping = 0.75;
146        vihu1.Image = vihukuva1;
147        vihu1.Shape = vihumuoto1;
148        vihu1.Y = 1350;
149        vihu1.X = 0;
150
151        plasma2 = new PlasmaCannon(10, 10);
152        vihu1.Add(plasma2);
153        laser2.Angle = Angle.FromDegrees(90);
154        laser2.InfiniteAmmo = true;
155        FollowerBrain aivo1 = new FollowerBrain();
156       
157
158        aivo1.Active = true;
159        aivo1.Target = alus;
160        aivo1.Speed = 400;
161        aivo1.TargetFollowDistance = 15000;
162        //aivo1.TargetCloseDistance = 10;
163        //aivo1.StopWhenTargetClose = true;
164        vihu1.Brain = aivo1;
165
166        Timer ampumisajastin1 = new Timer();
167        ampumisajastin1.Interval = 1
168       
169       
170    }
171
172    void vihu1ampuu()
173    {
174        Vector suunta = (alus.Position - vihu1.Position).Normalize();
175        vihu1.Angle = suunta.Angle;
176    }
177
178    void luovihu2()
179    {
180        vihu2 = new PhysicsObject(50, 50);
181        Add(vihu2);
182        vihu2.Shape = Shape.Circle;
183        vihu2.Mass = 1;
184        vihu2.Restitution = 0;
185        vihu2.LinearDamping = 0.95;
186        vihu2.AngularDamping = 0.75;
187        vihu2.Image = vihukuva2;
188        vihu2.Y = 1000;
189        vihu2.X = 0;
190        FollowerBrain aivo1 = new FollowerBrain();
191        aivo1.Active = true;
192        aivo1.Target = alus;
193        aivo1.Speed = 300;
194        aivo1.TargetFollowDistance = 15000;
195        //aivo1.TargetCloseDistance = 500;
196        //aivo1.StopWhenTargetClose = true;
197        vihu2.Brain = aivo1;
198
199    }
200
201
202    void luovihu3()
203    {
204        vihu3 = new PhysicsObject(30, 50);
205        Add(vihu3);
206        vihu3.Restitution = 0;
207        vihu3.Mass = 1;
208        vihu3.LinearDamping = 0.95;
209        vihu3.AngularDamping = 0.75;
210        vihu3.Image = vihukuva3;
211        vihu3.Shape = vihumuoto3;
212        vihu3.Y = 1200;
213        vihu3.X = 0;
214        FollowerBrain aivo1 = new FollowerBrain();
215        aivo1.Active = true;
216        aivo1.Target = alus;
217        aivo1.Speed = 400;
218        aivo1.TargetFollowDistance = 15000;
219        //aivo1.TargetCloseDistance = 10;
220        //aivo1.StopWhenTargetClose = true;
221        vihu3.Brain = aivo1;
222
223    }
224
225    void luovihu4()
226    {
227        vihu4 = new PhysicsObject(250, 600);
228        Add(vihu4);
229        vihu4.Restitution = 0;
230        vihu4.LinearDamping = 0.55;
231        vihu4.AngularDamping = 0.75;
232        vihu4.Image = vihukuva4;
233        vihu4.Shape = vihumuoto4;
234        vihu4.Mass = 2000;
235        vihu4.Y = 1000;
236        vihu4.X = 1000;
237        RandomMoverBrain randomaivo = new RandomMoverBrain();
238        randomaivo.Active = true;
239        randomaivo.ChangeMovementSeconds = 10;
240        randomaivo.Speed = 15000;
241        vihu4.Brain = randomaivo;
242        vihu4.IgnoresGravity = true;
243
244
245    }
246
247
248
249    void tausta()
250    {
251
252        for (int i = 0; i < 1100; i++)
253        {
254            GameObject tahti = new GameObject(3, 3);
255            tahti.Shape = Shape.Star;
256            Add(tahti, -3);
257            tahti.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
258            tahti.X = RandomGen.NextDouble(Level.Left, Level.Right);
259            GetLayer(-3).RelativeTransition = new Vector(0.5, 0.5);
260        }
261
262
263    }
264
265    void kaasu()
266    {
267        Vector voima = new Vector();
268        voima = Vector.FromLengthAndAngle(2200, alus.Angle - Angle.FromDegrees(-90));
269        alus.Push(voima);
270
271    }
272    void pyoroik()
273    {
274        alus.AngularVelocity = -4;
275    }
276
277    void pyorvas()
278    {
279        alus.AngularVelocity = 4;
280    }
281
282    void asetaohjaimet()
283    {
284        Keyboard.Listen(Key.Up, ButtonState.Down, kaasu, null);
285        Keyboard.Listen(Key.W, ButtonState.Down, kaasu, null);
286        Keyboard.Listen(Key.Right, ButtonState.Down, pyoroik, null);
287        Keyboard.Listen(Key.D, ButtonState.Down, pyoroik, null);
288        Keyboard.Listen(Key.Left, ButtonState.Down, pyorvas, null);
289        Keyboard.Listen(Key.A, ButtonState.Down, pyorvas, null);
290        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, null);
291        Keyboard.Listen(Key.LeftControl, ButtonState.Down, AmmuAseella2, null);
292
293    }
294
295    protected override void Update(Time time)
296    {
297        vihu1.Angle = vihu1.Velocity.Angle + Angle.FromDegrees(-90);
298        vihu2.Angle = vihu2.Velocity.Angle + Angle.FromDegrees(-90);
299        vihu3.Angle = vihu3.Velocity.Angle + Angle.FromDegrees(-90);
300        vihu4.Angle = vihu4.Velocity.Angle + Angle.FromDegrees(-90);
301
302        base.Update(time);
303    }
304
305}
Note: See TracBrowser for help on using the repository browser.