source: 2012/24/MattiV/Space Battle/Space Battle/Space Battle/Space_Battle.cs @ 3031

Revision 3031, 8.4 KB checked in by matvirkk, 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
9class PeliHahmo : PhysicsObject
10{
11    public IntMeter Elamat = new IntMeter(3);
12    public IntMeter HP = new IntMeter(100);
13
14    public PeliHahmo(double leveys, double korkeus)
15        : base(leveys, korkeus)
16    {
17        HP.LowerLimit += new Meter<int>.OnLimitHandler(HP_LowerLimit);
18    }
19
20    void HP_LowerLimit(int value)
21    {
22        Explosion rajahdy = new Explosion(100);
23        rajahdy.Position = this.Position;
24        Game.Add(rajahdy);
25        Elamat.Value--;
26        HP.Value = 100;
27    }
28}
29
30class Ase : PhysicsObject
31{
32    public Weapon Weapon;
33    public int Damage = 10;
34
35    public Ase(Weapon weapon, int damage)
36        : base(weapon.Width, weapon.Height)
37    {
38        Weapon = weapon;
39        Image = weapon.Image;
40        Damage = damage;
41    }
42}
43
44public class Space_Battle : PhysicsGame
45{
46    Image taustaKuva = LoadImage("space");
47    Image olionKuva = LoadImage("alus 1");
48    Image Kuva = LoadImage("alus2");
49    Image Astr = LoadImage("Ast");
50    PeliHahmo alus1;
51    PeliHahmo alus2;
52    double nopeusYlos = 200;
53    double nopeusAlas = -200;
54    double Pyoriminen = 7.0;
55    Weapon pysy;
56    Weapon pyssy;
57    Weapon oletusase1;
58    Weapon oletusase2;
59
60    void AlustaPeli()
61    {
62        Alukset();
63        AsetaOhjaimet();
64        Level.Background.Image = taustaKuva;
65        Level.Height = 1000;
66        Level.Width = 1000;
67
68
69        Cannon tykki = new Cannon(10, 10);
70        tykki.Power.DefaultValue = 10000;
71
72        PlasmaCannon plasmaTykki = new PlasmaCannon(10, 10);
73
74        LaserGun laserPyssy = new LaserGun(10, 10);
75
76        Ase tykkiAse = new Ase(tykki, 30);
77        tykki.Ammo.Value = 20;
78        Add(tykkiAse);
79        AddCollisionHandler(alus1, tykkiAse, PelaajaOsuu);
80        AddCollisionHandler(alus2, tykkiAse, PelaajaOsuu);
81        tykkiAse.Position = RandomGen.NextVector(500, -500);
82
83        Ase laserAse = new Ase(laserPyssy, 1);
84        laserPyssy.Ammo.Value = 700;
85        Add(laserAse);
86        AddCollisionHandler(alus1, laserAse, PelaajaOsuu);
87        AddCollisionHandler(alus2, laserAse, PelaajaOsuu);
88        laserAse.Position = RandomGen.NextVector(500, -500);
89
90        Ase plasmaAse = new Ase(plasmaTykki, 2);
91        plasmaTykki.Ammo.Value = 200;
92        Add(plasmaAse);
93        AddCollisionHandler(alus1, plasmaAse, PelaajaOsuu);
94        AddCollisionHandler(alus2, plasmaAse, PelaajaOsuu);
95        plasmaAse.Position = RandomGen.NextVector(500, -500);
96
97        tykki.Tag = tykkiAse;
98        laserPyssy.Tag = laserAse;
99        plasmaTykki.Tag = plasmaAse;
100        int i = 0;
101
102        while (i < 20)
103        {
104            PhysicsObject Asteroid = new PhysicsObject(30, 70);
105            Asteroid.Image = Astr;
106            Asteroid.Mass = 50;
107            Asteroid.Width = RandomGen.NextDouble(50, 150);
108            Asteroid.Position = RandomGen.NextVector(500, -500);
109            Add(Asteroid);
110            i++;
111        }
112    }
113
114    public override void Begin()
115    {
116        AlustaPeli();
117    }
118    void Kuolema(int hp)
119    {
120        ClearAll();
121        int Elamat1 = alus1.Elamat.Value;
122        int Elamat2 = alus2.Elamat.Value;
123        AlustaPeli();
124        alus1.Elamat.Value = Elamat1;
125        alus2.Elamat.Value = Elamat2;
126        Camera.ZoomToLevel(-200);
127    }
128    void AsetaOhjaimet()
129    {
130        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", alus1, nopeusYlos);
131        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", alus1, nopeusAlas);
132        Keyboard.Listen(Key.D, ButtonState.Down, Kaanto, "Pelaaja 1: Liikuta mailaa ", alus1, -Pyoriminen);
133        Keyboard.Listen(Key.D, ButtonState.Released, Kaanto, null, alus1, 0.0);
134        Keyboard.Listen(Key.A, ButtonState.Down, Kaanto, "Pelaaja 1: Liikuta mailaa alas", alus1, Pyoriminen);
135        Keyboard.Listen(Key.A, ButtonState.Released, Kaanto, null, alus1, 0.0);
136        Keyboard.Listen(Key.Q, ButtonState.Down, AmmuAseella, "Ammu");
137
138
139
140        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", alus2, nopeusYlos);
141        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", alus2, nopeusAlas);
142        Keyboard.Listen(Key.Right, ButtonState.Down, Kaanto, "Pelaaja 2: Liikuta mailaa ylös", alus2, -Pyoriminen);
143        Keyboard.Listen(Key.Right, ButtonState.Released, Kaanto, null, alus2, 0.0);
144        Keyboard.Listen(Key.Left, ButtonState.Down, Kaanto, "Pelaaja 2: Liikuta mailaa alas", alus2, Pyoriminen);
145        Keyboard.Listen(Key.Left, ButtonState.Released, Kaanto, null, alus2, 0.0);
146        Keyboard.Listen(Key.K, ButtonState.Down, AmmuAseella2, "Ammu");
147
148
149        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
150        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
151    }
152    void AsetaNopeus(PhysicsObject alus, double nopeus)
153    {
154        alus.Push(Vector.FromLengthAndAngle(nopeus, alus.Angle));
155    }
156    void Kaanto(PhysicsObject alus, double Pyoriminen)
157    {
158        alus.AngularVelocity = Pyoriminen;
159
160    }
161    void Alukset()
162    {
163        alus1 = new PeliHahmo(35, 20);
164        alus1.X = -400;
165        alus1.Y = -300;
166        alus1.Restitution = 0;
167        alus1.Image = olionKuva;
168        pyssy = new AssaultRifle(1, 1);
169        pyssy.Tag = new Ase(pyssy, 5);
170        pyssy.ProjectileCollision = AmmusOsui;
171        pyssy.Ammo.Value = 50000000;
172        alus1.Add(pyssy);
173        alus1.HP.LowerLimit += Kuolema;
174        Add(alus1);
175
176        alus2 = new PeliHahmo(35, 20);
177        alus2.X = 400;
178        alus2.Y = 300;
179        alus2.Image = Kuva;
180        alus2.Restitution = 0.5;
181        pysy = new AssaultRifle(1,1);
182        pysy.Tag = new Ase(pysy, 5);
183        pysy.ProjectileCollision = AmmusOsui;
184        pysy.Ammo.Value = 500000000;
185        alus2.Add(pysy);
186        alus2.HP.LowerLimit += Kuolema;
187        Add(alus2);
188
189        oletusase1 = pyssy;
190        oletusase2 = pysy;
191
192        alus1.Elamat.LowerLimit += new Meter<int>.OnLimitHandler(Elamat_LowerLimit);
193        alus2.Elamat.LowerLimit += new Meter<int>.OnLimitHandler(Elamat_LowerLimit);
194
195        AddCollisionHandler(alus1, alus2, PelaajatTormaavat);
196
197        Level.CreateBorders(1.0, false);
198        Camera.ZoomToLevel();
199    }
200    void Elamat_LowerLimit(int value)
201    {
202        Exit();
203    }
204    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
205    {
206        ammus.Destroy();
207        Explosion rajahdys = new Explosion(0);
208        rajahdys.Position = ammus.Position;
209        Add(rajahdys);
210
211        PeliHahmo kohdeHahmo = kohde as PeliHahmo;
212        if (kohdeHahmo != null)
213        {
214            kohdeHahmo.HP.Value -= (int)ammus.Tag;
215        }
216    }
217    void AmmuAseella()
218    {
219        PhysicsObject ammus = pyssy.Shoot();
220
221        if (ammus != null)
222        {
223            ammus.Tag = ((Ase)pyssy.Tag).Damage;
224            ammus.Size *= 0.5;
225        }
226    }
227    void AmmuAseella2()
228    {
229        PhysicsObject ammus = pysy.Shoot();
230
231        if (ammus != null)
232        {
233            ammus.Tag = ((Ase)pysy.Tag).Damage;
234            ammus.Size *= 0.5;
235        }
236    }
237    void JokuTormasi(PhysicsObject tormaaja, PhysicsObject kohde)
238    {
239
240    }
241    void PelaajatTormaavat(IPhysicsObject tormaaja, IPhysicsObject kohde)
242    {
243        MessageDisplay.Add("Bump!");
244
245    }
246    void musiikit()
247    {
248
249    }
250    void PelaajaOsuu(PhysicsObject pelaaja, PhysicsObject kohde)
251    {
252        if (pelaaja == alus1)
253        {
254            alus1.Remove(pyssy);
255            pyssy = ((Ase)kohde).Weapon;
256            pyssy.ProjectileCollision = AmmusOsui;
257            alus1.Add(pyssy);
258            pyssy.Ammo.LowerLimit += PalautaAse1;
259        }
260
261        else if (pelaaja == alus2)
262        {
263            alus2.Remove(pysy);
264            pysy = ((Ase)kohde).Weapon;
265            pysy.ProjectileCollision = AmmusOsui;
266            alus2.Add(pysy);
267            pysy.Ammo.LowerLimit += PalautaAse2;
268        }
269
270        Remove(kohde);
271    }
272    void PalautaAse1(int panokset)
273    {
274        alus1.Remove(pyssy);
275        pyssy = oletusase1;
276        alus1.Add(pyssy);
277    }
278    void PalautaAse2(int panokset)
279    {
280        alus2.Remove(pysy);
281        pysy = oletusase2;
282        alus2.Add(pysy);
283    }
284
285
286
287
288
289
290}
Note: See TracBrowser for help on using the repository browser.