source: 2012/30/MiskaK/MW2(My Warfare 2)/MW2(My Warfare 2)/MW2(My Warfare 2)/MW2_My_Warfare_2_.cs @ 3733

Revision 3733, 15.0 KB checked in by anlakane, 8 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 MW2_My_Warfare_2_ : PhysicsGame
10{
11
12    Pelaaja pelaaja1;
13    Pelaaja pelaaja2;
14   
15    PhysicsObject tähtäin;
16    AssaultRifle rynkky;
17    AssaultRifle rynkky2;
18    AssaultRifle pistooli;
19    AssaultRifle minigun;
20    AssaultRifle snipa;
21    PhysicsObject rynkynhylsy;
22
23    DoubleMeter pelaajan1terveys;
24    DoubleMeter pelaajan2terveys;
25
26    PhysicsObject laatikko;
27
28   
29    //Kenttä
30    Image kivenKuva = LoadImage("kivi");
31    Image piikkilankaKuva = LoadImage("piikkilanka");
32    Image pystypiikkilankaKuva = LoadImage("piikkilankapysty");
33    Image vaakapuunKuva = LoadImage("puuvaaka");
34    Image naamioverkonKuva = LoadImage("naamioverkko");
35    Image pelaaja1Kuva = LoadImage("pelaaja1");
36    Image rynkynhylsynKuva = LoadImage("rynkynhylsy");
37    Image pelaaja2Kuva = LoadImage("pelaaja2");
38    Image pystypuunKuva = LoadImage("puupysty");
39    Image laatikonKuva = LoadImage("kamaa");
40    Image bussinkuva = LoadImage("bussi");
41
42    //Partikkelit
43    Image kivisirpale1 = LoadImage("kivisirpale1");
44    Image kivisirpale2 = LoadImage("kivisirpale2");
45    Image kipinä1 = LoadImage("kipinä1");
46    Image veriroiske1 = LoadImage("veriroiske1");
47    Image puusirpale1 = LoadImage("puusirpale1");
48
49    public override void Begin()
50    {
51        LuoKenttä();
52        LuoPelaaja1();
53        LuoPelaaja2();
54        AsetaOhjaimet();
55
56
57       
58    }
59
60
61    #region kenttä
62    void LuoKenttä()
63    {
64        Level.BackgroundColor = Color.LightBlue;
65
66        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä1");
67
68        ruudut.SetTileMethod(Color.Rose, LuoBussi);
69        ruudut.SetTileMethod(Color.Black, LuoPiikkilanka);
70        ruudut.SetTileMethod(Color.Gray, LuoKivi);
71        ruudut.SetTileMethod(Color.Orange, LuoVaakaPuu);
72        ruudut.SetTileMethod(Color.Red, LuoPystypiikkilanka);
73        ruudut.SetTileMethod(Color.Blue, LuoPystyPuu);
74        ruudut.SetTileMethod(Color.Green, LuoNaamioverkko);
75        ruudut.SetTileMethod(Color.Purple, LuoLaatikko);
76       
77        ruudut.Execute(50, 50);
78        Camera.ZoomToLevel();
79
80       
81
82       
83    }
84
85    void LuoBussi(Vector paikka, double leveys, double korkeus)
86    {
87        PhysicsObject bussi = PhysicsObject.CreateStaticObject(161, 134);
88        bussi.Position = paikka;
89        bussi.Image = bussinkuva;
90        bussi.Shape = Shape.FromImage(bussinkuva);
91        Add(bussi);
92    }
93
94    void LuoPiikkilanka(Vector paikka, double leveys, double korkeus)
95    {
96        PhysicsObject piikkilanka = PhysicsObject.CreateStaticObject(leveys, korkeus);
97        piikkilanka.Position = paikka;
98        piikkilanka.Image = piikkilankaKuva;
99        piikkilanka.CollisionIgnoreGroup = 1;
100        Add(piikkilanka);
101
102    }
103
104    void LuoPystypiikkilanka(Vector paikka, double leveys, double korkeus)
105    {
106        PhysicsObject pystypiikkilanka = PhysicsObject.CreateStaticObject(leveys, korkeus);
107        pystypiikkilanka.Position = paikka;
108        pystypiikkilanka.Image = pystypiikkilankaKuva;
109        Add(pystypiikkilanka);
110
111    }
112
113    void LuoNaamioverkko(Vector paikka, double leveys, double korkeus)
114    {
115        PhysicsObject naamioverkko = PhysicsObject.CreateStaticObject(leveys, korkeus);
116        naamioverkko.Position = paikka;
117        naamioverkko.Image = naamioverkonKuva;
118        naamioverkko.CollisionIgnoreGroup = 1;
119        naamioverkko.IgnoresCollisionResponse = true;
120
121        Add(naamioverkko, 2);
122    }
123
124    void LuoKivi(Vector paikka, double leveys, double korkeus)
125    {
126        PhysicsObject kivi = PhysicsObject.CreateStaticObject(leveys, korkeus);
127        kivi.Position = paikka;
128        kivi.Image = kivenKuva;
129        kivi.CollisionIgnoreGroup = 1;
130        Add(kivi);
131    }
132
133    void LuoVaakaPuu(Vector paikka, double leveys, double korkeus)
134    {
135        PhysicsObject vaakapuu = PhysicsObject.CreateStaticObject(leveys/2, korkeus);
136        vaakapuu.Position = paikka;
137        vaakapuu.Image = vaakapuunKuva;
138        vaakapuu.CollisionIgnoreGroup = 1;
139        Add(vaakapuu);
140
141    }
142
143    void LuoPystyPuu(Vector paikka, double leveys, double korkeus)
144    {
145        PhysicsObject pystypuu = PhysicsObject.CreateStaticObject(leveys/2, korkeus);
146        pystypuu.Position = paikka;
147        pystypuu.Image = pystypuunKuva;
148        pystypuu.CollisionIgnoreGroup = 1;
149        Add(pystypuu);
150    }
151
152    void LuoLaatikko(Vector paikka, double leveys, double korkeus)
153    {
154        laatikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
155        laatikko.Position = paikka;
156        laatikko.Image = laatikonKuva;
157        AddCollisionHandler(laatikko, AnnaKamaa);
158        Add(laatikko);
159    }
160
161
162
163    #endregion
164
165    #region pelaaja1
166    void LuoPelaaja1()
167    {
168        pelaaja1 = new Pelaaja(28.5, 19.5);
169        pelaaja1.Image = pelaaja1Kuva;
170        pelaaja1.Shape = Shape.Circle;
171        pelaaja1.CanRotate = false;
172        pelaaja1.LinearDamping = 0.80;
173        pelaaja1.Tag = "pelaaja";
174        pelaaja1.Nro = 1;
175        Add(pelaaja1);
176
177       
178        AddCollisionHandler(pelaaja1, Pelaaja1Törmää);
179        LuoTähtäin();
180        LuoTerveysmittari1();
181    }
182
183    void Pelaaja1Törmää(PhysicsObject pelaaja1, PhysicsObject kohde)
184    {
185        if (kohde.Tag == "rynkynammus2")
186        {
187            pelaajan1terveys.Value = pelaajan1terveys.Value - 1;
188        }
189
190    }
191
192    void LuoTerveysmittari1()
193    {
194        ProgressBar elamaPalkki1 = new ProgressBar(150, 20);
195        elamaPalkki1.X = Screen.Left + 100;
196        elamaPalkki1.Y = Screen.Top - 30;
197        elamaPalkki1.BindTo(pelaaja1.Elamat);
198        Add(elamaPalkki1);
199        elamaPalkki1.BarColor = Color.Green;
200        elamaPalkki1.BorderColor = Color.White;
201
202    }
203
204    void LuoTähtäin()
205    {
206        tähtäin = new PhysicsObject(10.0, 10.0);
207        tähtäin.Shape = Shape.Circle;
208        tähtäin.Color = Color.Red;
209        tähtäin.IgnoresCollisionResponse = true;
210        tähtäin.IgnoresExplosions = true;
211        tähtäin.IgnoresPhysicsLogics = true;
212        Add(tähtäin, 3);
213
214        Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
215        pelaaja1.Position.ToString();
216        tähtäin.Position.ToString();
217
218    }
219
220    void Pelaaja1Ampuu()
221    {
222        pelaaja1.Ammu();
223    }
224
225    void RynkynHylsy()
226    {
227        rynkynhylsy = new PhysicsObject(1, 5.5);
228        rynkynhylsy.Image = rynkynhylsynKuva;
229        rynkynhylsy.Position = pelaaja1.Position;
230        rynkynhylsy.Hit(new Vector(350.0, 0.0));
231        Add(rynkynhylsy);
232
233        rynkynhylsy.IgnoresCollisionResponse = true;
234        rynkynhylsy.AngularVelocity = 10.0;
235        rynkynhylsy.AngularDamping = 0.95;
236        rynkynhylsy.LinearDamping = RandomGen.NextDouble(0.90, 0.99);
237        rynkynhylsy.MaximumLifetime = TimeSpan.FromSeconds(3.0);
238
239    }
240
241    void KuunteleLiiketta(AnalogState hiirenTila)
242    {
243        tähtäin.X = Mouse.PositionOnWorld.X;
244        tähtäin.Y = Mouse.PositionOnWorld.Y;
245
246        Vector hiirenLiike = hiirenTila.MouseMovement;
247    }
248
249    void LiikutaPelaajaa(PhysicsObject pelaaja, Vector suunta)
250    {
251        pelaaja.Move(suunta * 300);
252    }
253
254    void koordinaatit()
255    {
256        Label tekstikentta = new Label();
257        Add(tekstikentta);
258       
259    }
260    #endregion
261
262    #region pelaaja2
263    void LuoPelaaja2()
264    {
265        pelaaja2 = new Pelaaja(28.5, 19.5);
266        pelaaja2.Image = pelaaja2Kuva;
267        pelaaja2.Shape = Shape.Circle;
268        pelaaja2.CanRotate = false;
269        pelaaja2.LinearDamping = 0.80;
270        pelaaja2.Nro = 2;
271        Add(pelaaja2);
272        AddCollisionHandler(pelaaja2, Pelaaja2Törmää);
273        pelaaja2.Tag = "pelaaja";
274        LuoTerveysmittari2();
275    }
276
277    void Pelaaja2Törmää(PhysicsObject pelaaja2, PhysicsObject kohde)
278    {
279        if (kohde.Tag == "rynkynammus1")
280        {
281            (pelaaja2 as Pelaaja).Elamat.Value--;
282        }
283    }
284
285    void LuoTerveysmittari2()
286    {
287       
288
289        ProgressBar elamaPalkki2 = new ProgressBar(150, 20);
290        elamaPalkki2.X = Screen.Right - 100;
291        elamaPalkki2.Y = Screen.Top - 30;
292        elamaPalkki2.BindTo(pelaaja2.Elamat);
293        Add(elamaPalkki2);
294        elamaPalkki2.BarColor = Color.Green;
295        elamaPalkki2.BorderColor = Color.White;
296    }
297
298    void Pelaaja2Ampuu()
299    {
300        pelaaja2.Ammu();
301    }
302
303    void LiikutaPelaajaa2(AnalogState tatinTila)
304    {
305        Vector tatinAsento = tatinTila.StateVector;
306        pelaaja2.Move(tatinAsento * 200);
307    }
308
309    void PyöritäPelaajaa2(AnalogState tatinTila)
310    {
311        Vector tatinAsento = tatinTila.StateVector;
312        pelaaja2.Angle = tatinAsento.Angle;
313    }
314
315    void RynkynHylsy2()
316    {
317        rynkynhylsy = new PhysicsObject(1, 5.5);
318        rynkynhylsy.Image = rynkynhylsynKuva;
319        rynkynhylsy.Position = pelaaja2.Position;
320        rynkynhylsy.Hit(new Vector(350.0, 0.0));
321        Add(rynkynhylsy);
322
323        rynkynhylsy.IgnoresCollisionResponse = true;
324        rynkynhylsy.AngularVelocity = 10.0;
325        rynkynhylsy.AngularDamping = 0.95;
326        rynkynhylsy.LinearDamping = RandomGen.NextDouble(0.90, 0.99);
327        rynkynhylsy.MaximumLifetime = TimeSpan.FromSeconds(3.0);
328
329    }
330
331    #endregion
332
333    #region aseet
334
335
336    AssaultRifle LuoRynkky()
337    {
338        rynkky = new AssaultRifle(30, 10);
339        rynkky.IsVisible = false;
340        rynkky.Ammo.Value = 90;
341        //rynkky.ProjectileCollision = RynkynAmmusOsuu;
342        return rynkky;
343       
344    }
345
346    AssaultRifle LuoPistooli()
347    {
348        pistooli = new AssaultRifle(30, 10);
349        pistooli.Ammo.Value = 50;
350        pistooli.FireRate = 2;
351       
352        return pistooli;
353       
354    }
355
356    AssaultRifle LuoMinigun()
357    {
358        minigun = new AssaultRifle(30, 10);
359        minigun.Ammo.Value = 1200;
360        minigun.FireRate = 30;
361        minigun.IsVisible = false;
362        minigun.IsVisible = false;
363        return minigun;
364    }
365
366    AssaultRifle LuoSnipa()
367    {
368        snipa = new AssaultRifle(30, 10);
369        snipa.Ammo.Value = 10;
370        snipa.FireRate = 1;
371        snipa.Power.DefaultValue = 1000;
372        snipa.IsVisible = false;
373        return snipa;
374    }
375
376    void AnnaKamaa(PhysicsObject laatikko, PhysicsObject kohde)
377    {
378        if (kohde.Tag == "pelaaja")
379        {
380            Pelaaja pelaaja = (kohde as Pelaaja);
381            int ase = RandomGen.NextInt(1, 5);
382
383            if (ase == 1) 
384            {
385                pelaaja.LisaaAse(LuoPistooli());
386                MessageDisplay.Add ("Pelaaja" + pelaaja.Nro + " sai pistoolin!");
387            }
388
389            else if (ase == 2)
390            {
391                pelaaja.LisaaAse(LuoRynkky());
392                MessageDisplay.Add("Pelaaja" + pelaaja.Nro + " sai rynkyn!");
393            }
394
395            else if (ase == 3)
396            {
397                pelaaja.LisaaAse(LuoSnipa());
398                MessageDisplay.Add("Pelaaja" + pelaaja.Nro + " sai tarkkuuskiväärin!");
399            }
400
401            else if (ase == 4)
402            {
403                pelaaja.LisaaAse(LuoMinigun());
404                MessageDisplay.Add("Pelaaja" + pelaaja.Nro + " sai minigunin!");
405            }
406
407           
408        }
409
410        if (kohde.Tag == "pelaaja 2")
411        {
412
413
414        }
415
416    }
417
418    #endregion
419
420    #region ohjaimet
421    void AsetaOhjaimet()
422    {
423        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
424
425        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa,  "", pelaaja1, new Vector(0.0, 1.0));
426        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, "", pelaaja1, new Vector(0.0, -1.0));
427        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, "", pelaaja1, new Vector(-1.0, 0.0));
428        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, "", pelaaja1, new Vector(1.0, 0.0));
429        Mouse.ListenWheel(VaihdaAsetta, "", pelaaja1);
430        Mouse.Listen(MouseButton.Left, ButtonState.Down, Pelaaja1Ampuu, null);
431
432        //Keyboeard.Listen(Key.2, buttons, VaihdaAsetta, null, pelaaja1, rynkky);
433
434        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaPelaajaa2, null);
435        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.1, PyöritäPelaajaa2, null);
436        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, Pelaaja2Ampuu, null);
437
438        Keyboard.Listen(Key.K, ButtonState.Pressed, koordinaatit, null);
439
440        Camera.Follow(pelaaja1, pelaaja2);
441    }
442
443    #endregion
444
445    void VaihdaAsetta(Pelaaja pelaaja)
446    {
447        pelaaja.VaihdaAse(Mouse.WheelChange);
448    }
449
450    protected override void Update(Time time)
451    {
452        base.Update(time);
453        Vector suunta = (tähtäin.Position - pelaaja1.Position).Normalize();
454        pelaaja1.Angle = suunta.Angle;
455
456       
457
458       
459    }
460}
461
462public class Pelaaja : PhysicsObject
463{
464    private List<Weapon> aseet;
465    private Weapon valittuAse = null;
466
467    public int Nro;
468
469    public DoubleMeter Elamat
470    {
471        get { return elamat; }
472        set { elamat = value; }
473    }
474    private DoubleMeter elamat;
475
476
477    public Pelaaja(double width, double height)
478        : base(width, height)
479    {
480        elamat = new DoubleMeter(10);
481        elamat.MaxValue = 10;
482        elamat.LowerLimit += Kuolema;
483        aseet = new List<Weapon>();
484    }
485
486    private void Kuolema()
487    {
488        Explosion rajahdys = new Explosion(50);
489        rajahdys.Position = this.Position;
490        Add(rajahdys);
491        this.Destroy();
492    }
493
494    public void LisaaAse(Weapon w)
495    {
496        if (!aseet.Contains(w))
497        {
498            aseet.Add(w);
499            this.Add(w);
500            if (aseet.Count == 1)
501                valittuAse = aseet[0];
502        }
503    }
504
505    public void PoistaAse(Weapon w)
506    {
507        if(!aseet.Contains(w))
508            aseet.Remove(w);
509    }
510
511    public void VaihdaAse(int suunta)
512    {
513        if (aseet != null && aseet.Count > 1)
514        {
515            foreach (Weapon ase in aseet)
516            {
517                ase.IsVisible = false;
518            }
519            if (suunta > 0)
520                if (aseet.IndexOf(valittuAse)+1 >= aseet.Count)
521                    valittuAse = aseet[0];
522                else
523                    valittuAse = aseet[aseet.IndexOf(valittuAse) + 1];
524            if (suunta < 0)
525                if (aseet.IndexOf(valittuAse) - 1 < 0)
526                    valittuAse = aseet[aseet.Count - 1];
527                else
528                    valittuAse = aseet[aseet.IndexOf(valittuAse) - 1];
529            valittuAse.IsVisible = true;
530        }
531    }
532
533    public PhysicsObject Ammu()
534    {
535        if (valittuAse != null)
536        {
537            PhysicsObject ammus = valittuAse.Shoot();
538            if (ammus != null)
539            {
540                return ammus;
541            }
542        }
543        return null;
544    }
545
546}
Note: See TracBrowser for help on using the repository browser.