source: 2013/24/AleksanteriV/Protokolla236/Protokolla236/Protokolla236/Protokolla236.cs @ 4133

Revision 4133, 14.4 KB checked in by alvirmas, 6 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// apuva lista:|  toinen pelaaja |   portti kentästä toiseen ja takaisin    |
10
11public class Protokolla236 : PhysicsGame
12{
13
14    Image tausta = LoadImage("tausta02");
15
16    Image pelaajankuva = LoadImage("pelaaja1.0");
17
18    Image taso2 = LoadImage("taso2");
19    Image taso3 = LoadImage("taso3");
20    Image taso4 = LoadImage("taso4");
21    private Image[] tasoanim = LoadImages("taso1", "taso1.1", "taso1.2", "taso1.3", "taso1", "taso1", "taso1.3", "taso1", "taso1.1");
22    private Image[] liekkianim = LoadImages("liekki1.1", "liekki1.2");
23    private Image[] taso5anim = LoadImages("taso5.1", "taso5.2", "taso5.3", "taso5.4", "taso5.5", "taso5.6", "taso5.7");
24    private Image[] porttianim = LoadImages("portti01", "portti02", "portti03", "portti04");
25
26    Image Block021 = LoadImage("Block2.1");
27    Image BlockMusta = LoadImage("Blockmusta");
28    Image Blocklasi = LoadImage("Blocklasi");
29    Image Block121 = LoadImage("Block121");
30    private Image[] Blockanim = LoadImages("Block1.1", "Block1.2", "Block1.3", "Block1.2");
31
32    private Image[] vihu1 = LoadImages("vihu01", "vihu02");
33    private Image[] vihu2 = LoadImages("vihu05", "vihu051", "vihu052", "vihu053", "vihu054");
34    private Image[] vihu3 = LoadImages("vihu031", "vihu032", "vihu033");
35    private Image[] vihu4 = LoadImages("vihu041", "vihu042", "vihu043", "vihu042");
36    private Image[] sikioanim = LoadImages("sikio01", "sikio02", "sikio03", "sikio02");
37
38    private Image[] tasoliekkianim = LoadImages("taso23.1", "taso23.2", "taso23.3");
39   
40    SoundEffect raketti = LoadSoundEffect("raketti");
41    List<Pelaaja> pelaajat = new List<Pelaaja>();
42
43    //AssaultRifle pelaajan1Ase;
44    SoundEffect laser = LoadSoundEffect("lasershot");
45    private Image[] ammusanim = LoadImages("ammus", "ammus");
46
47    private string[] soitin = { "nitrome - bullethead", "nitrome - enemy 585 3", "nitrome - N.M.D" };
48
49
50    int kenttaNro = 1;
51
52   
53
54
55    public override void Begin()
56    {
57
58        ClearAll();
59
60        seuraavakentta();
61
62        //lisaaohjaimet();
63       
64
65
66        MediaPlayer.Play(soitin[0]);
67        MediaPlayer.IsRepeating = true;
68
69        Keyboard.Listen(Key.F1, ButtonState.Pressed, Begin, null);
70        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, null);
71    }
72    void luokentta(string kenttakuva)
73    {
74        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kenttakuva);
75        //BD87FF
76        ruudut.SetTileMethod(Color.FromHexCode("00FF00"), luopelaaja1);
77        ruudut.SetTileMethod(Color.FromHexCode("00FFC5"), luopelaaja2);
78        ruudut.SetTileMethod(Color.FromHexCode("000000"), luotaso, new Animation(tasoanim));
79        ruudut.SetTileMethod(Color.FromHexCode("FFFF00"), luotaso, (Animation)taso3);
80        ruudut.SetTileMethod(Color.FromHexCode("54FFEB"), luotaso, (Animation)taso4);
81        ruudut.SetTileMethod(Color.FromHexCode("FF0087"), luotaso, new Animation(taso5anim));
82        ruudut.SetTileMethod(Color.FromHexCode("0000FF"), luotaso, new Animation(tasoliekkianim));
83        ruudut.SetTileMethod(Color.FromHexCode("D9FF93"), luotaso, (Animation)Blocklasi);
84        ruudut.SetTileMethod(Color.FromHexCode("FF42C0"), luotausta, new Animation(Blockanim));
85        ruudut.SetTileMethod(Color.FromHexCode("42B9FF"), luotausta, (Animation)BlockMusta);
86        ruudut.SetTileMethod(Color.FromHexCode("00FF90"), luotausta, (Animation)Block021);
87        ruudut.SetTileMethod(Color.FromHexCode("478DFF"), luotausta, (Animation)Block121);
88        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), luovihu, new Animation(vihu2));
89        ruudut.SetTileMethod(Color.FromHexCode("FF5700"), luovihu, new Animation(vihu3));
90        ruudut.SetTileMethod(Color.FromHexCode("FF5711"), luovihu, new Animation(vihu4));
91        ruudut.SetTileMethod(Color.FromHexCode("A860FF"), luoportti, new Animation(porttianim));
92        ruudut.SetTileMethod(Color.FromHexCode("BD87FF"), luoportti2, new Animation(porttianim));
93        ruudut.Execute(50, 50);
94
95        Gravity = new Vector(0.0, -200.0);
96        Level.CreateBorders(0.5, true);
97        Camera.Follow(pelaajat.ToArray());
98    }
99    void seuraavakentta()
100    {
101        ClearAll();
102
103        if (kenttaNro == 1) luokentta("kentta121");
104        else if (kenttaNro == 2) luokentta("kentta3");
105        else if (kenttaNro == 3) luokentta("kenttatest03");
106        else if (kenttaNro == 4) luokentta("kentta4");
107        else if (kenttaNro == 5) luokentta("kentta121");
108        else if (kenttaNro > 5) Exit();
109
110    }
111    void luoportti(Vector paikka, double leveys, double korkeus, Animation kuva)
112    {
113        PhysicsObject portti = PhysicsObject.CreateStaticObject(leveys, korkeus);
114        portti.Position = paikka;
115        portti.Tag = "portti";
116        Add(portti);
117        portti.Animation = kuva;
118        portti.Animation.Start();
119        portti.Animation.FPS = RandomGen.NextDouble(3.0, 7.0);
120    }
121    void luoportti2(Vector paikka, double leveys, double korkeus, Animation kuva)
122    {
123        PhysicsObject portti2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
124        portti2.Position = paikka;
125        portti2.Tag = "portti2";
126        Add(portti2);
127        portti2.Animation = kuva;
128        portti2.Animation.Start();
129        portti2.Animation.FPS = RandomGen.NextDouble(3.0, 7.0);
130    }
131   
132
133
134    void portti(PhysicsObject pelaaja, PhysicsObject portti)
135    {
136        if (portti.Tag.Equals("portti2"))
137        {
138            kenttaNro = 3;
139            seuraavakentta();
140        }
141        else kenttaNro = 2;
142        seuraavakentta();
143       
144       
145    }
146
147
148
149    void luotaso(Vector paikka, double leveys, double korkeus, Animation kuva)
150    {
151        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
152        taso.Position = paikka;
153        taso.Tag = "taso";
154        Add(taso);
155        taso.Animation = kuva;
156        taso.Animation.Start();
157        taso.Animation.FPS = RandomGen.NextDouble(3.0, 7.0);
158    }
159
160    void luotausta(Vector paikka, double leveys, double korkeus, Animation kuva)
161    {
162        GameObject Block = new GameObject(50, 50);
163        Block.Position = paikka;
164        Add(Block, -2);
165        Block.Animation = kuva;
166        Block.Animation.Start();
167        Block.Animation.FPS = 5;
168    }
169
170
171    void LuoElamaLaskuri(Pelaaja pelaaja, double x, double y, Color vari)
172    {
173        ProgressBar elamaPalkki = new ProgressBar(150, 20);
174        elamaPalkki.X = x;
175        elamaPalkki.BarColor = vari;
176        elamaPalkki.Y = y;
177        elamaPalkki.BindTo(pelaaja.ElamaLaskuri);
178        elamaPalkki.BorderColor = Color.Black;
179        Add(elamaPalkki);
180    }
181
182    void PelaajaOsuu(PhysicsObject pel, PhysicsObject kohde)
183    {
184        if (!(pel is Pelaaja)) return;
185        Pelaaja pelaaja = (Pelaaja)pel;
186        pelaaja.ElamaLaskuri.Value--;
187    }
188
189    void ElamaLoppui()
190    {
191        foreach (var item in pelaajat)
192        {
193            item.Destroy();
194        }
195        pelaajat.Clear();
196        if (pelaajat.Count > 1)
197        {
198            seuraavakentta();
199        }
200        MessageDisplay.Add("Kuolit!");
201        kenttaNro = 1;
202        seuraavakentta();
203    }
204
205
206    Pelaaja alustaPelaaja(Vector paikka)
207    {
208        Pelaaja pelaaja = new Pelaaja(50, 50);
209        pelaaja.ElamaLaskuri.LowerLimit += delegate { ElamaLoppui();  };
210        pelaaja.Position = paikka;
211        pelaaja.CanRotate = false;
212        Camera.StayInLevel = true;
213        pelaaja.Shape = Shape.FromImage(pelaajankuva);
214        pelaaja.Tag = "pelaaja";
215        pelaaja.Restitution = 0.5;
216        return pelaaja;
217    }
218
219    Pelaaja luoPelaaja(Vector paikka, double leveys, double korkeus)
220    {
221        Pelaaja pelaaja = alustaPelaaja(paikka);
222        Add(pelaaja);
223
224        AddCollisionHandler(pelaaja, "portti", portti);
225        AddCollisionHandler(pelaaja, "portti2", portti);
226        AddCollisionHandler(pelaaja, "vihu", PelaajaOsuu);
227        AddCollisionHandler(pelaaja, "sikio", PelaajaOsuu);
228        AddCollisionHandler(pelaaja, "taso", PelaajaOsuu);
229         
230        AssaultRifle pelaajanAse = new AssaultRifle(30, 10);
231        pelaajanAse.IsVisible = false;
232        pelaajanAse.Angle = Angle.RightAngle;
233        pelaajanAse.AttackSound = laser;
234        pelaajanAse.Ammo.Value = 1000;
235        pelaajanAse.Power.DefaultValue = 200;
236
237        pelaajanAse.ProjectileCollision = AmmusOsui;
238
239        pelaaja.Add(pelaajanAse);
240        pelaaja.Ase = pelaajanAse;
241
242
243        GameObject liekki = new GameObject(50, 50);
244        liekki.Animation = new Animation(liekkianim);
245        liekki.IsVisible = false;
246        liekki.Animation.Start();
247        pelaaja.Add(liekki);
248        liekki.Y = -25;
249
250        GameObject tausta1 = new GameObject(Level.Width, Level.Height);
251        tausta1.Image = tausta;
252
253        pelaaja.Liekki = liekki;
254
255
256        Add(tausta1, -3);
257        Layers[-3].RelativeTransition = new Vector(0.5, 0.5);
258        pelaajat.Add(pelaaja);
259        return pelaaja;
260
261    }
262
263
264
265
266
267    void luopelaaja1(Vector paikka, double leveys, double korkeus)
268    {
269        Pelaaja pelaaja = luoPelaaja(paikka, leveys, korkeus);
270        LuoElamaLaskuri(pelaaja, Screen.Left + 150, Screen.Top - 20, Color.Red);
271        pelaaja.Image = LoadImage("pelaaja1.0");
272
273        Keyboard.Listen(Key.Left, ButtonState.Down, kaannaPelaajaa, null, 5.0, pelaaja);
274        Keyboard.Listen(Key.Right, ButtonState.Down, kaannaPelaajaa, null, -5.0, pelaaja);
275        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, 900.0, pelaaja);
276        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, null, pelaaja.Ase);
277
278        //-----------------------------------------------------------------
279
280        Keyboard.Listen(Key.Up, ButtonState.Down, liekkianimaatio, null, pelaaja.Liekki, true);
281        Keyboard.Listen(Key.Up, ButtonState.Released, liekkianimaatio, null, pelaaja.Liekki, false);
282    }
283
284    void luopelaaja2(Vector paikka, double leveys, double korkeus)
285    {
286        Pelaaja pelaaja = luoPelaaja(paikka, leveys, korkeus);
287        LuoElamaLaskuri(pelaaja, Screen.Right - 150, Screen.Top - 20, Color.Blue);
288        //pelaaja.Image = LoadImage("pelaaja2.0");
289        //-2-2-2-2-2-2-2--22-2-2-2-2-22-2-22-2-22-22-2-22-22--22-22-2-2-2-2-2-2-22-22-2----------
290        Keyboard.Listen(Key.A, ButtonState.Down, kaannaPelaajaa, null, 5.0, pelaaja);
291        Keyboard.Listen(Key.D, ButtonState.Down, kaannaPelaajaa, null, -5.0, pelaaja);
292        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, 900.0, pelaaja);
293        Keyboard.Listen(Key.Q, ButtonState.Down, AmmuAseella, null, pelaaja.Ase);
294
295        //-----------------------------------------------------------------
296        Keyboard.Listen(Key.W, ButtonState.Down, liekkianimaatio, null, pelaaja.Liekki, true);
297        Keyboard.Listen(Key.W, ButtonState.Released, liekkianimaatio, null, pelaaja.Liekki, false);
298    }
299
300    void AmmuAseella(AssaultRifle ase)
301    {
302        PhysicsObject ammus = ase.Shoot();
303        if (ammus != null)
304        {
305            ammus.Angle = ase.AbsoluteAngle - Angle.RightAngle;
306            ammus.Size *= 3;
307
308            ammus.Animation = new Animation(ammusanim);
309            ammus.Animation.Start();
310            ammus.Animation.FPS = 3;
311        }
312    }
313
314    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
315    {
316        ammus.Destroy();
317        if (kohde.Tag.ToString() == "vihu")
318        {
319            kohde.Destroy();
320
321        }
322        else if (kohde.Tag.ToString() == "sikio")
323        {
324            kohde.Destroy();
325        }
326
327    }
328
329    void liekkianimaatio(GameObject liekki, bool totuus)
330    {
331        liekki.IsVisible = totuus;
332        if (totuus)
333        {
334
335            if (!raketti.IsPlaying)
336            {
337                raketti.Play();
338            }
339        }
340        else
341        {
342            raketti.Stop();
343        }
344    }
345
346    void kaannaPelaajaa(double kulmanopeus, PhysicsObject pelaaja)
347    {
348        pelaaja.Angle += Angle.FromDegrees(kulmanopeus);
349    }
350    void LiikutaPelaajaa(double nopeus, PhysicsObject pelaaja1)
351    {
352        pelaaja1.Push(Vector.FromLengthAndAngle(nopeus, pelaaja1.Angle + Angle.RightAngle));
353    }
354
355    void luotaso(Vector paikka, double leveys, double korkeus)
356    {
357
358    }
359
360    void luovihu(Vector paikka, double leveys, double korkeus, Animation kuva)
361    {
362        PhysicsObject vihu = new PhysicsObject(50, 50);
363        vihu.Shape = Shape.Circle;
364        vihu.Animation = kuva;
365        vihu.Position = paikka;
366        vihu.Tag = "vihu";
367        vihu.AngularDamping = 0.1;
368        vihu.IgnoresGravity = true;
369
370        Add(vihu, 1);
371
372        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(50);
373        satunnaisAivot.ChangeMovementSeconds = 5;
374        vihu.Brain = satunnaisAivot;
375        vihu.Animation.Start();
376        vihu.Animation.FPS = 4;
377
378        AddCollisionHandler(vihu, "vihu", luovihuosuma);
379    }
380
381    void luovihuosuma(PhysicsObject vihu, PhysicsObject kohde)
382    {
383        if (kohde.Tag.ToString() == "vihu") luosikio(vihu.Position, 50, 50, new Animation(sikioanim));
384    }
385
386    void luosikio(Vector paikka, double leveys, double korkeus, Animation kuva)
387    {
388        PhysicsObject sikio = new PhysicsObject(30, 30);
389        sikio.Shape = Shape.Circle;
390        sikio.Animation = kuva;
391        sikio.Position = paikka;
392        sikio.Tag = "sikio";
393        sikio.AngularDamping = 0.1;
394        sikio.IgnoresGravity = true;
395
396        Add(sikio, 1);
397
398        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(50);
399        satunnaisAivot.ChangeMovementSeconds = 5;
400        sikio.Brain = satunnaisAivot;
401        sikio.Animation.Start();
402        sikio.Animation.FPS = 4;
403    }
404
405
406}
407
408public class Pelaaja : PhysicsObject
409{
410    AssaultRifle ase;
411    GameObject liekki;
412    DoubleMeter elamaLaskuri;
413   public AssaultRifle Ase { get { if (ase != null) return ase; else throw new Exception("Alustus ei tapahtunut ajoissa!"); } set { ase = value; } }
414   public GameObject Liekki { get { if (liekki != null) return liekki; else throw new Exception("Alustus ei tapahtunut ajoissa!"); } set { liekki = value; } }
415   public DoubleMeter ElamaLaskuri { get { return elamaLaskuri; } }
416    public Pelaaja(double leveys, double korkeus)
417    :base(leveys, korkeus)
418    {
419        elamaLaskuri = new DoubleMeter(10, 0, 10);
420       
421    }
422
423
424
425}
Note: See TracBrowser for help on using the repository browser.