source: 2011/31/AkseliR/BOMBS/Peli.cs @ 2537

Revision 2537, 6.2 KB checked in by akrauhan, 8 years ago (diff)

BOMS LOL

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    DoubleMeter kestomittari;
12    DoubleMeter kestomittari2;
13    PhysicsObject ukko1;
14    PhysicsObject ukko2;
15    Explosion rajahdys;
16    Grenade kranaatti;
17    Vector heittoVoima;
18    //Timer pomminPudotusAjastin;
19    AssaultRifle pyssy;
20    public override void Begin()
21    {
22        LuoKenttä();
23        KaynnistaPomminpudotusAjastin();       
24    }
25    void LuoKestolaskuri()
26    {
27        kestomittari = new DoubleMeter(100);
28        BarGauge naytto1 = new BarGauge(30, 150);
29        kestomittari.MaxValue = 100;
30        naytto1.X = 400;
31        naytto1.Y = 400;
32        naytto1.BorderColor = Color.Black;
33        naytto1.Angle = Angle.FromDegrees(90);
34        naytto1.BindTo(kestomittari);
35        Add(naytto1);
36    }
37    void LuoKestolaskuri2()
38    {
39        kestomittari2 = new DoubleMeter(100);
40        BarGauge naytto2 = new BarGauge(30, 150);
41        kestomittari2.MaxValue = 100;
42        naytto2.X = -400;
43        naytto2.Y = 400;
44        naytto2.Angle = Angle.FromDegrees(90);
45        naytto2.BindTo(kestomittari2);
46        naytto2.BorderColor = Color.Black;
47        Add(naytto2);
48    }
49    void LuoKenttä()
50    {
51        Level.CreateGround(50, 120, 10);
52        Level.CreateLeftBorder();
53        Level.CreateRightBorder();
54        Camera.ZoomToLevel();
55        Gravity = new Vector(0.0, -800);
56        LuoUkko1(200, -100, 100, 0.3);
57        LuoUkko2(-200, -100, 100, 0.3);
58        LuoKestolaskuri();
59        LuoKestolaskuri2();
60    }
61    void KaynnistaPomminpudotusAjastin()
62    {
63        Timer pomminPudotusAjastin = new Timer();
64        pomminPudotusAjastin.Interval = 1;
65        pomminPudotusAjastin.Timeout += Pommeja;
66        pomminPudotusAjastin.Start();
67    }
68    void Pommeja()
69    {
70        Add(LuoPommi(20, 40, new Vector(0, -200)));
71        Add(LuoPommi(30, 50, new Vector(0, -50)));
72        Add(LuoPommi(50, 70, new Vector(0, -10)));
73    }
74    void LuoUkko1(double x, double y, double z, double v)
75    {
76        ukko1 = new PhysicsObject(50, 50);
77        ukko1.Shape = Shape.Rectangle;
78        Add(ukko1);
79        ukko1.X = x;
80        ukko1.Y = y;
81        ukko1.Mass = z;
82        ukko1.Restitution = v;
83        ukko1.CanRotate = false;
84        ukko1.Shape = Shape.Circle;
85
86        pyssy = new AssaultRifle(20, 5);
87        ukko1.Add(pyssy);
88        pyssy.Ammo.Value = 10;
89
90        Keyboard.Listen(Key.Left, ButtonState.Down, LiikuVasemmalle, "Vasemmalle");
91        Keyboard.Listen(Key.Right, ButtonState.Down, LiikuOikealle, "Oikealle");
92        Keyboard.Listen(Key.RightControl, ButtonState.Pressed, Ammu, "Ananas");
93        Keyboard.Listen(Key.Up, ButtonState.Pressed, Kulma, "Käännä");
94        Keyboard.Listen(Key.Down, ButtonState.Pressed, Kulma2, "Käännä");
95
96    }
97    void Ammu()
98    {
99        pyssy.Shoot();
100       
101
102    }
103    void Kulma()
104    {
105        pyssy.Angle = Angle.FromDegrees(15);
106    }
107    void Kulma2()
108    {
109        pyssy.Angle = Angle.FromDegrees(-15);
110    }
111    /*void HeitaKranaatti()
112    {
113        kranaatti = new Grenade(4.0);
114        kranaatti.X = ukko1.X - 10;
115        kranaatti.Y = ukko1.Y + 10;
116        Add(kranaatti);
117        heittoVoima = Vector.FromLengthAndAngle(-8000, Angle.FromDegrees(-45));
118        kranaatti.Hit(heittoVoima);
119        kranaatti.FuseTime = TimeSpan.FromSeconds(1.5);
120    }*/
121    void LuoUkko2(double x, double y, double z, double v)
122    {
123        ukko2 = new PhysicsObject(50, 50);
124        ukko2.Shape = Shape.Rectangle;
125        Add(ukko2);
126        ukko2.X = x;
127        ukko2.Y = y;
128        ukko2.Mass = z;
129        ukko2.Restitution = v;
130        ukko2.CanRotate = false;
131        ukko2.Shape = Shape.Circle;
132       
133        Keyboard.Listen(Key.A, ButtonState.Down, LiikuVasemmalle2, "Vasemmalle");
134        Keyboard.Listen(Key.D, ButtonState.Down, LiikuOikealle2, "Oikealle");
135    }
136
137    void LiikuVasemmalle()
138    {
139        ukko1.Hit(new Vector(-1000, 0));
140        if (ukko1.X <= -400)
141        {
142            ukko1.Hit(new Vector(5000, 1000));
143        }
144
145 
146    }
147    void LiikuOikealle()
148    {
149        ukko1.Hit(new Vector(1000, 0));
150        if (ukko1.X >= 400)
151        {
152            ukko1.Hit(new Vector(-5000, 1000));
153        }
154    }
155    void LiikuVasemmalle2()
156    {
157        ukko2.Hit(new Vector(-1000, 0));
158        if (ukko2.X <= -400)
159        {
160            ukko2.Hit(new Vector(5000, 1000));
161        }
162    }
163    void LiikuOikealle2()
164    {
165        ukko2.Hit(new Vector(1000, 0));
166        if (ukko2.X >= 400)
167        {
168            ukko2.Hit(new Vector(-5000, 1000));
169        }
170    }
171    void KasitteleTormays(PhysicsObject pommi, PhysicsObject kohde)
172    {
173        if (kohde == ukko1)
174        {
175            pommi.Destroy();
176            kestomittari.Value -= 10;
177        }
178        if (kohde == ukko2)
179        {
180            pommi.Destroy();
181            kestomittari2.Value -= 10;
182        }
183        if (kestomittari.Value <= 5)
184        {
185            ukko1.Destroy();
186            rajahdys = new Explosion(1000);
187            rajahdys.Position = ukko1.Position;
188            Add(rajahdys);
189        }
190        if (kestomittari2.Value <= 5)
191        {
192            ukko2.Destroy();
193            rajahdys.Position = ukko1.Position;
194            Add(rajahdys);
195        }
196        pommi.Destroy();
197        Explosion rajahdys2 = new Explosion(50);
198        rajahdys2.Position = pommi.Position;
199    }   
200
201
202    PhysicsObject LuoPommi(double leveys, double korkeus, Vector nopeus)
203    {
204        PhysicsObject pommi = new PhysicsObject(leveys, korkeus);
205        AddCollisionHandler(pommi, KasitteleTormays);
206        //pommi.Image = LoadImage(kuva);
207        double x = RandomGen.NextDouble(Level.Left, Level.Right);
208        double y = 600.0;
209        pommi.X = x;
210        pommi.Y = y;
211        pommi.Velocity = nopeus;
212        pommi.IgnoresGravity = true;
213        //pommi.Hit(tippumisvoima);
214        //pommi.Tag = vahvuus;
215        pommi.IgnoresExplosions = true;
216        pommi.CollisionIgnoreGroup = 1;
217        return pommi;
218    }
219
220}
Note: See TracBrowser for help on using the repository browser.