source: 2010/30/mikrkana/HelicopterHavoc/Peli.cs @ 1420

Revision 1420, 6.5 KB checked in by mikrkana, 11 years ago (diff)

Melkein valmis HelicopterHavoc?(viholliset kesken)

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using Physics2DDotNet.Ignorers;
6
7public class HelicopterHavoc : PhysicsGame
8{
9    PhysicsObject helikopteri;
10    Vector nopeusYlos = new Vector(0, 16000);
11    Vector nopeusSivulle = new Vector(12000, 0);
12    Image olionkuva = LoadImage("helikopteri");
13    Image olionkuvaPeilattu;
14    Image tankinkuva = LoadImage("tankki");
15    //ClusterGrenade clusterkranaatti;
16    //Grenade kranaatti;
17
18    DoubleMeter voimaMittari;
19
20    AssaultRifle pyssy;
21    Image pyssyKuva;
22    Image pyssyKuvaPeilattu;
23
24    protected override void Begin()
25    {
26        olionkuvaPeilattu = Image.Mirror(olionkuva);
27
28        LuoKenttä();
29        LisääHelikopteri();
30        LisääOhjaimet();
31        LuoViholliset();
32    }
33
34    void LuoKenttä()
35    {
36        Level.Width = 8000.0;
37        Level.Height = 1000.0;
38        Level.CreateBorders(0.0, false);
39        Gravity = new Vector(0.0, -500.0);
40        Level.CreateGround(0, 400, 20);
41        Camera.StayInLevel = true;
42
43        //ObjectIgnorer ignorer = new ObjectIgnorer();
44        //helikopteri.CollisionIgnorer = ignorer;
45        //ClusterGrenade.CollisionIgnorer = ignorer;
46        //Grenade.CollisionIgnorer = ignorer;
47
48    }
49
50    void LisääHelikopteri()
51    {
52        helikopteri = new PhysicsObject(300.0, 100.0);
53        helikopteri.Mass = 3.0;
54        helikopteri.Image = olionkuva;
55        helikopteri.LinearDamping = 0.8;
56        helikopteri.CanRotate = false;
57        //AddCollisionHandler(helikopteri, KasitteleHelikopterinTormays);
58        Camera.Follow(helikopteri);
59        Add(helikopteri);
60
61        pyssy = new AssaultRifle(100, 20);       
62        pyssyKuva = pyssy.Image;
63        pyssyKuvaPeilattu = Image.Mirror(pyssy.Image);
64        helikopteri.Add(pyssy);
65        pyssy.Position = new Vector(helikopteri.-10, helikopteri.Y-40);
66        pyssy.IsVisible = false;
67        pyssy.Ammo.Value = 1000;
68
69        voimaMittari = new DoubleMeter(4000);
70        voimaMittari.MaxValue = 4000;
71        BarGauge voimaPalkki = new BarGauge(20, 150);
72        voimaPalkki.BindTo(voimaMittari);
73        Add(voimaPalkki);
74
75        voimaPalkki.X = (0.8 * Screen.RightSafe);
76        voimaPalkki.Y = (0.8 * Screen.TopSafe);
77        voimaPalkki.BarColor = Color.Green;
78        voimaPalkki.BorderColor = Color.White;
79        voimaPalkki.Angle = Angle.Degrees(180);
80
81        // Kun voima loppuu, kutsutaan VoimaLoppui-aliohjelmaa
82        voimaMittari.LowerLimit += VoimaLoppui;
83
84
85    }
86
87    void LisääOhjaimet()
88    {
89        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, -nopeusSivulle);
90        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, nopeusSivulle);
91        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, nopeusYlos);
92        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, -nopeusYlos);
93        Keyboard.Listen(Key.Q, ButtonState.Down, KallistaHelikopteria, null, 2.0);
94        Keyboard.Listen(Key.E, ButtonState.Down, KallistaHelikopteria, null, -2.0);
95        Keyboard.Listen(Key.Space, ButtonState.Down, Ammu, "Ammu");
96        Keyboard.Listen(Key.V, ButtonState.Pressed, HeitaClusterKranaatti, "HeitaClusterKranaatti");
97        Keyboard.Listen(Key.B, ButtonState.Pressed, HeitaKranaatti, "HeitaKranaatti");
98        Keyboard.Listen(Key.W, ButtonState.Down, VahennaVoimia, "Vähennä pelaajan voimia");
99        Keyboard.Listen(Key.A, ButtonState.Down, VahennaVoimia, "Vähennä pelaajan voimia");
100        Keyboard.Listen(Key.S, ButtonState.Down, VahennaVoimia, "Vähennä pelaajan voimia");
101    }
102
103    void Ammu()
104    {
105        PhysicsObject ammus = pyssy.Shoot();
106        if (ammus != null)
107        {
108            ammus.Size = new Vector(20, 4);
109            ammus.MaximumLifetime = new TimeSpan(0, 0, 2);
110        }
111    }
112
113    void LiikutaPelaajaa(Vector vektori)
114    {
115        helikopteri.Push(vektori);
116    }
117    void LuoViholliset()
118    {
119        PhysicsObject tankki = new PhysicsObject(256, 256);
120        tankki.Image = tankinkuva;
121        tankki.X = 2100.0; //RandomGen.NextDouble(4000.0, 4000.0);
122        tankki.Y = 800.0; //RandomGen.NextDouble(800.0, 900.0);
123        Add(tankki);
124    }
125   
126
127
128    protected override void Update(Time time)
129    {
130        if (helikopteri.Velocity.X <= 0)
131        {
132            helikopteri.Image = olionkuvaPeilattu;
133            pyssy.Angle = Angle.Radians(Math.PI);
134        }
135        if (helikopteri.Velocity.X > 0)
136        {
137            helikopteri.Image = olionkuva;
138            pyssy.Angle = Angle.Radians(0);
139        }
140        base.Update(time);
141    }
142
143
144    void KallistaHelikopteria(double kaanto)
145    {
146        helikopteri.Angle = Angle.Degrees(helikopteri.Angle.Degree + kaanto);
147    }
148
149    void HeitaClusterKranaatti()
150    {
151        ClusterGrenade kranaatti = new ClusterGrenade(12.0, 3);
152        kranaatti.X = helikopteri.X + 10;
153        kranaatti.Y = helikopteri.Y + 10;
154        kranaatti.NumberOfClusters = 4;
155        //AddCollisionHandler(ClusterGrenade, KasitteleClusterkranaatinTormays );
156        kranaatti.FuseTime = TimeSpan.FromSeconds(3.0);
157        Vector heittoVoima = Vector.FromLengthAndAngle(8000, Angle.Degrees(45));
158        kranaatti.Hit(heittoVoima);
159        Add(kranaatti); 
160    }
161
162    void HeitaKranaatti()
163    {
164        Grenade kranaatti = new Grenade(12.0);
165        kranaatti.X = helikopteri.X + 10;
166        kranaatti.Y = helikopteri.Y + 10;
167        //AddCollisionHandler(Grenade, KasitteleKranaatinTormays);
168        kranaatti.FuseTime = TimeSpan.FromSeconds(3 );
169        Vector heittoVoima = Vector.FromLengthAndAngle(8000, Angle.Degrees(45));
170        kranaatti.Hit(heittoVoima);
171         
172        Add(kranaatti);
173    }
174
175    void VahennaVoimia()
176    {
177        voimaMittari.Value--;
178    }
179
180    void VoimaLoppui(double mittarinArvo)
181    {
182        Explosion rajahdys = new Explosion(800);
183        rajahdys.Position = helikopteri.Position;
184        rajahdys.Speed = 600.0;
185        rajahdys.Force = 20000;
186        Add(rajahdys);
187        helikopteri.Destroy();
188
189 
190    }
191
192
193
194
195    //void KasitteleHelikopterinTormays(PhysicsObject helikopteri, PhysicsObject kohde)
196    //{
197        //Explosion rajahdys = new Explosion(800);
198        // rajahdys.Position = helikopteri.Position;
199        //rajahdys.Speed = 600.0;
200        //rajahdys.Force = 20000;
201        //Add(rajahdys);
202
203  //  }
204
205    //void KasitteleClusterkranaatinTormaus()
206    //{
207
208    //}
209
210    //void KasitteleKranaatinTormaus()
211    //{
212
213    //}
214
215
216
217
218
219
220
221}
Note: See TracBrowser for help on using the repository browser.