source: 2013/23/AkuK/FysiikkaPeli3/FysiikkaPeli3/FysiikkaPeli3/FysiikkaPeli3.cs @ 4023

Revision 4023, 9.0 KB checked in by anlakane, 7 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class FysiikkaPeli3 : PhysicsGame
10{
11    EasyHighScore topLista = new EasyHighScore();
12    IntMeter pisteLaskuri;
13    AssaultRifle pelaajan1Ase;
14    Image taustaKuva = LoadImage("tausta5");
15
16    List<Vector> rottienspawnit = new List<Vector>();
17    DoubleMeter elamaLaskuri;
18
19    Image olionkuva = LoadImage("sinä");
20
21    public override void Begin()
22    {
23
24       
25        LuoAlkuValikko();
26
27
28     
29
30
31
32
33    }
34    void LuoAlkuValikko()
35    {
36
37   MultiSelectWindow alkuValikko = new MultiSelectWindow("Plague Survival Beta","Start Game", "Help", "Quit");
38        Keyboard.Listen(Key.Escape, ButtonState.Pressed,Exit, "Lopeta peli");
39 
40        Add(alkuValikko);
41        alkuValikko.AddItemHandler(0, AloitaPeli);
42        alkuValikko.AddItemHandler(1,Help);
43        alkuValikko.AddItemHandler(2, Exit);
44   
45
46    }
47    void AloitaPeli()
48    {
49        rottienspawnit.Clear();
50        LuoKentta();
51    LuoPistelaskuri();
52 
53
54
55
56    }
57
58
59    void Help()
60    {
61        MessageDisplay.Add("Move with arrow keys, Press space to shoot and Press A and D to Rotate Gun");
62        LuoAlkuValikko();
63
64
65 
66
67    }
68    void LiikutaPelaaja(PhysicsObject pelaaja, Vector vektori)
69    {
70
71        pelaaja.Push(vektori);
72
73
74
75    }
76    void StopPelaaja(PhysicsObject pelaaja)
77    {
78
79        pelaaja.Velocity = Vector.Zero;
80
81
82    }
83
84    void LuoKentta()
85    {
86        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Kenttä2");
87
88
89        ruudut.SetTileMethod(Color.FromHexCode("60FF3D"), LuoPelaaja1);
90        ruudut.SetTileMethod(Color.FromHexCode("000000"), LuoSeina1);
91        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoPotion);
92        ruudut.SetTileMethod(Color.FromHexCode("7F3300"), LuoLepakko);
93
94        ruudut.SetTileMethod(Color.FromHexCode("F7FF1E"), LuoRotta);
95        ruudut.SetTileMethod(Color.FromHexCode("0026FF"), LisaaSpawner);
96        ruudut.Execute(20, 20);
97        LuoElamanLaskuri();
98 Level.Background.Image = taustaKuva;
99Level.Background.TileToLevel();
100Timer ajastin = new Timer();
101ajastin.Interval = 1.5;
102ajastin.Timeout += Lisaarottia;
103ajastin.Start();
104
105    }
106
107    void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
108    {
109
110        PhysicsObject Pelaaja1 = new PhysicsObject(50, 50);
111        Pelaaja1.Shape = Shape.Circle;
112        Add(Pelaaja1);
113        Pelaaja1.Image = olionkuva;
114        Pelaaja1.Position = paikka;
115        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaaja, null, Pelaaja1, new Vector(-1000, 0));
116        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaaja, null, Pelaaja1, new Vector(1000, 0));
117        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaaja, null, Pelaaja1, new Vector(0, 1000));
118        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaaja, null, Pelaaja1, new Vector(0, -1000));
119        Keyboard.Listen(Key.Left, ButtonState.Released, StopPelaaja, null, Pelaaja1);
120        Keyboard.Listen(Key.Right, ButtonState.Released, StopPelaaja, null, Pelaaja1);
121        Keyboard.Listen(Key.Up, ButtonState.Released, StopPelaaja, null, Pelaaja1);
122        Keyboard.Listen(Key.Down, ButtonState.Released, StopPelaaja, null, Pelaaja1);
123        Pelaaja1.CanRotate = false;
124        Camera.Follow(Pelaaja1);
125        AddCollisionHandler(Pelaaja1, "pahis", PelaajaTormasi);
126        AddCollisionHandler(Pelaaja1, "rotta", PelaajaTormasi2);
127         AddCollisionHandler(Pelaaja1, "health", PelaajaParanee);
128         Pelaaja1.Tag = "pelaaja";
129pelaajan1Ase = new AssaultRifle(30, 10);
130        Keyboard.Listen (Key.A, ButtonState.Down,LiikutaAsetta,null, pelaajan1Ase,5.0);
131        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaAsetta, null, pelaajan1Ase, -5.0);
132
133
134     Pelaaja1.Add(pelaajan1Ase);
135
136        pelaajan1Ase.Ammo.Value = 1000;
137
138        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
139        pelaajan1Ase.ProjectileCollision = AmmusOsui;
140        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
141    }
142
143    void LuoSeina1(Vector paikka, double leveys, double korkeus)
144    {
145
146
147        PhysicsObject Seinä1 = PhysicsObject.CreateStaticObject(50, 50);
148        Seinä1.Shape = Shape.Circle;
149        Seinä1.Position = paikka;
150        Add(Seinä1);
151        Image Seinä = LoadImage("Seinä1");
152        Seinä1.Image = Seinä;
153        Seinä1.CollisionIgnoreGroup = 1;
154
155
156
157
158
159
160    }
161    void LuoPotion(Vector paikka, double leveys, double korkeus)
162    {
163
164        PhysicsObject Potion = new PhysicsObject(30, 30);
165        Image HpPotion = LoadImage("Hp Potion");
166        Potion.Image = HpPotion;
167        Add(Potion);
168        Potion.Position = paikka;
169        Potion.Tag = "health";
170
171
172    }
173
174    void LuoRotta(Vector paikka, double leveys, double korkeus)
175    {
176
177        PhysicsObject Rotta = new PhysicsObject(30, 30);
178        Image Rottga = LoadImage("Rottqa");
179        Rotta.Image = Rottga;
180        Rotta.Position = paikka;
181        Add(Rotta);
182        Rotta.Tag = "rotta";
183       
184FollowerBrain seuraajaAivot = new FollowerBrain("pelaaja");
185    seuraajaAivot.Speed = 300;                 
186seuraajaAivot.DistanceFar = 600;           
187seuraajaAivot.DistanceClose = 0;       
188seuraajaAivot.StopWhenTargetClose = true;
189
190 Rotta.Brain = seuraajaAivot;
191
192
193    }
194
195    void LuoLepakko(Vector paikka, double leveys, double korkeus)
196    {
197
198
199        PhysicsObject Lepakko = new PhysicsObject(50, 50);
200        Image Leppakko = LoadImage("Leppakko");
201        Lepakko.Image = Leppakko;
202        Add(Lepakko);
203
204        FollowerBrain seuraajaAivot = new FollowerBrain("pelaaja");
205        seuraajaAivot.Speed = 400;
206        seuraajaAivot.DistanceFar = 600;
207        seuraajaAivot.DistanceClose = 0;
208        seuraajaAivot.StopWhenTargetClose = true;
209        Lepakko.Brain = seuraajaAivot;
210        Lepakko.Position = paikka;
211
212
213        Lepakko.Tag = "pahis";
214
215
216
217
218
219    }
220    void LuoElamanLaskuri()
221    {
222
223        elamaLaskuri = new DoubleMeter(30);
224        elamaLaskuri.MaxValue = 30;
225        elamaLaskuri.LowerLimit += ElamaLoppui;
226
227        ProgressBar elamaPalkki = new ProgressBar(150, 20);
228        elamaPalkki.X = Screen.Left + 150;
229        elamaPalkki.Y = Screen.Top - 20;
230        elamaPalkki.BindTo(elamaLaskuri);
231        Add(elamaPalkki);
232        elamaPalkki.Angle = Angle.RightAngle;
233
234
235
236
237
238
239    }
240
241    void ElamaLoppui()
242    {
243
244
245        MessageDisplay.Add("kuolit.");
246  ClearAll();
247         LuoAlkuValikko();
248       
249
250
251
252    }
253
254    void PelaajaTormasi(PhysicsObject Pelaaja1, PhysicsObject Lepakko)
255    {
256
257        elamaLaskuri.Value--;
258
259
260
261        if (elamaLaskuri.Value == 0)
262            Pelaaja1.Destroy();
263
264       
265     
266
267
268    }
269
270
271    void PelaajaTormasi2(PhysicsObject Pelaaja1, PhysicsObject Rotta)
272    {
273
274        elamaLaskuri.Value -=2;
275
276
277
278         if (elamaLaskuri.Value == 0)
279            Pelaaja1.Destroy();
280
281       
282
283    }
284    void PelaajaParanee(PhysicsObject Pelaaja1, PhysicsObject Potion)
285    {
286
287        elamaLaskuri.Value += 5;
288
289        Potion.Destroy();
290        pisteLaskuri.Value += 1;
291
292    }
293   
294   
295    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
296    {
297        if (kohde.Tag.ToString() == "rotta") kohde.Destroy();
298        if (kohde.Tag.ToString() == "pahis") kohde.Destroy();
299        pisteLaskuri.Value += 5;
300        ammus.Destroy();
301
302         
303    }
304
305
306
307    void AmmuAseella(AssaultRifle ase)
308    {
309        PhysicsObject ammus = ase.Shoot();
310       
311         if(ammus != null)
312            ammus.LifetimeLeft = TimeSpan.FromSeconds(1.0);
313
314
315
316
317    }
318
319    void LiikutaAsetta(AssaultRifle ase,double kulma)
320    {
321
322ase.Angle += Angle.FromDegrees(kulma);
323
324
325
326
327    }
328
329    void LuoPistelaskuri()
330    {
331
332        pisteLaskuri = new IntMeter(0);
333
334        Label pisteNaytto = new Label();
335        pisteNaytto.X = Screen.Left + 100;
336        pisteNaytto.Y = Screen.Top - 100;
337        pisteNaytto.TextColor = Color.Black;
338        pisteNaytto.Color = Color.White;
339
340        pisteNaytto.BindTo(pisteLaskuri);
341        Add(pisteNaytto);
342        pisteNaytto.Title = "Current score";
343pisteLaskuri.Reset();
344    }
345
346
347    void Lisaarottia()
348    {
349        PhysicsObject Rotta = new PhysicsObject(30, 30);
350        Image Rottga = LoadImage("Rottqa");
351        Rotta.Image = Rottga;
352   Add(Rotta);
353        Rotta.Tag = "rotta";
354        Rotta.Position = rottienspawnit[RandomGen.NextInt(rottienspawnit.Count)];
355FollowerBrain seuraajaAivot = new FollowerBrain("pelaaja");
356    seuraajaAivot.Speed = 300;                 
357seuraajaAivot.DistanceFar = 600;           
358seuraajaAivot.DistanceClose = 0;       
359seuraajaAivot.StopWhenTargetClose = true;
360
361 Rotta.Brain = seuraajaAivot;
362   
363
364  }
365
366    void LisaaSpawner( Vector paikka, double leveys, double korkeus)
367    {
368        rottienspawnit.Add(paikka);
369        GameObject spawni = new GameObject(50, 50);
370        Image Spawni1 = LoadImage("Spawni1");
371        spawni.Image = Spawni1;
372    }
373
374
375}
Note: See TracBrowser for help on using the repository browser.