source: 2010/30/jojumuho/sYstEmErroR/Peli.cs @ 1431

Revision 1431, 11.0 KB checked in by jojumuho, 11 years ago (diff)

jatkuu tunnin verran

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using System.Collections.Generic;
6
7public class Peli : PhysicsGame
8{
9    const int ruudunLeveys = 90;
10    const int ruudunKorkeus = 90;
11    Image palikanKuva = LoadImage("Palikka");
12    PlatformCharacter pelaaja1;
13    PlatformCharacter pelaaja2;
14    double nopeus = 600;
15    double hyppyVoima = 10000;
16    Image pelaajan1Kuva = LoadImage("hahmo 2");
17    Image pelaajan2Kuva = LoadImage("hahmo 3");
18
19    bool granaatti1valmis = true;
20    Timer granaatinValmistumisAjastin;
21
22    List<Weapon> pelaajan1aseet;
23    List<Weapon> pelaajan2aseet;
24
25    int valitunAseenNumero;
26
27    protected override void Begin()
28    {
29        LuoPelaajat();
30        LuoKentta();
31        LuoPalikka();
32
33        Gravity = new Vector(0, -1200);
34
35        LisaaNappaimet();
36
37        Camera.ZoomToLevel();
38
39        Level.CreateBorders(1.0, false);
40        Level.BackgroundColor = Color.Black;
41        granaatinValmistumisAjastin = new Timer();
42        granaatinValmistumisAjastin.Interval = 5;
43        granaatinValmistumisAjastin.Trigger += GranaattiValmistui;
44    }
45
46
47    void LuoKentta()
48    {
49        TileMap ruudut = TileMap.FromFile("kentta.txt");
50        ruudut['='] = LuoPalikka;
51        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
52
53
54
55
56    }
57    PhysicsObject LuoPalikka()
58    {
59        PhysicsObject palikka = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
60        palikka.Image = palikanKuva;
61        palikka.Tag = "palikka";
62        palikka.Restitution = 0.1;
63        return palikka;
64
65    }
66
67    void LuoPelaajat()
68    {
69        // Pelaaja 1 luominen ja ulkonäkö
70        pelaaja1 = new PlatformCharacter(150, 150);
71        pelaaja1.Shape = Shapes.Rectangle;
72        pelaaja1.Mass = 4.0;
73        Add(pelaaja1);
74        pelaaja1.X = -200;
75        pelaaja1.Y = -800;
76        pelaaja1.Color = Color.Lime;
77        pelaaja1.CanRotate = false;
78        Image pelaaja1Oikealle = pelaajan1Kuva;
79        Image pelaaja1Vasemmalle = Image.Mirror(pelaaja1Oikealle);
80        pelaaja1.LeftIdleAnimation = new Animation(pelaaja1Vasemmalle);
81        pelaaja1.RightIdleAnimation = new Animation(pelaaja1Oikealle);
82        pelaaja1.LeftWalkingAnimation = new Animation(pelaaja1Vasemmalle);
83        pelaaja1.RightWalkingAnimation = new Animation(pelaaja1Oikealle);
84
85        // Pelaaja 2 luominen ja ulkonäkö
86        pelaaja2 = new PlatformCharacter(150, 150);
87        pelaaja2.Shape = Shapes.Rectangle;
88        pelaaja2.Mass = 4.0;
89        pelaaja2.Color = Color.Green;
90        Add(pelaaja2);
91        pelaaja2.X = -400;
92        pelaaja2.Y = -800;
93        pelaaja2.CanRotate = false;
94        pelaaja2.Image = pelaajan2Kuva;
95        Image pelaaja2Vasemmalle = Image.Mirror(pelaajan2Kuva);
96        Image pelaaja2oikealle = Image.Mirror(pelaajan2Kuva);
97        pelaaja2.LeftIdleAnimation = new Animation(pelaajan2Kuva);
98        pelaaja2.RightIdleAnimation = new Animation(pelaajan2Kuva);
99        pelaaja2.LeftWalkingAnimation = new Animation(pelaaja2Vasemmalle);
100        pelaaja2.RightWalkingAnimation = new Animation(pelaajan2Kuva);
101
102        PlasmaCannon plasmaTykki = new PlasmaCannon(180, 100);
103        plasmaTykki.PlasmaParticleCollision = PlasmaPalloOsuu;
104        plasmaTykki.TimeBetweenUse = new TimeSpan(3000000);
105
106        LaserGun laserPyssy = new LaserGun(190, 80);
107        laserPyssy.LaserCollision = LaserSadeOsuu;
108        laserPyssy.TimeBetweenUse = new TimeSpan(1000000);
109
110        Cannon tykki = new Cannon(200, 90);
111        tykki.Tag = "tykki";
112        tykki.Power.Value += 10000000000;
113        tykki.CannonBallCollision = KuulaOsuu;
114        tykki.TimeBetweenUse = new TimeSpan(10000000);
115
116        AssaultRifle pyssy = new AssaultRifle(170, 85);
117        pyssy.BulletCollision = AmmusOsuu;
118        pyssy.Ammo.Value = int.MaxValue; 
119
120        Grenade grenade = new Grenade(60.50);
121        pelaajan1aseet = new List<Weapon>();
122        pelaajan1aseet.Add(pyssy);
123        pelaajan1aseet.Add(tykki);
124        pelaajan1aseet.Add(plasmaTykki);
125        pelaajan1aseet.Add(laserPyssy);
126
127
128
129
130        PlasmaCannon plasmaTykki2 = new PlasmaCannon(180, 100);
131        plasmaTykki.PlasmaParticleCollision = PlasmaPalloOsuu;
132        plasmaTykki.TimeBetweenUse = new TimeSpan(3000000);
133
134        LaserGun laserPyssy2 = new LaserGun(190, 80);
135        laserPyssy.LaserCollision = LaserSadeOsuu;
136        laserPyssy.TimeBetweenUse = new TimeSpan(1000000);
137
138        Cannon tykki2 = new Cannon(200, 90);
139        tykki.Tag = "tykki";
140        tykki.Power.Value += 10000000000;
141        tykki.CannonBallCollision = KuulaOsuu;
142        tykki.TimeBetweenUse = new TimeSpan(10000000);
143
144        AssaultRifle pyssy2 = new AssaultRifle(170, 85);
145        pyssy.BulletCollision = AmmusOsuu;
146        pyssy.Ammo.Value = int.MaxValue;
147
148        Grenade grenade2 = new Grenade(60.50);
149        pelaajan1aseet = new List<Weapon>();
150        pelaajan1aseet.Add(pyssy2);
151        pelaajan1aseet.Add(tykki2);
152        pelaajan1aseet.Add(plasmaTykki2);
153        pelaajan1aseet.Add(laserPyssy2);
154
155        //pelaajan2aseet = pelaajan1aseet.c
156        pelaaja2.Weapon = tykki;
157        valitunAseenNumero = 0;
158
159        // Tässä asetetaan pelaajan alussa oleva ase.
160        pelaaja1.Weapon = pyssy;
161        valitunAseenNumero = 0;
162
163
164
165
166
167    }
168
169
170
171    void LisaaNappaimet()
172    {
173
174        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
175        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
176        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
177        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
178
179        Keyboard.Listen(Key.J, ButtonState.Pressed, tahtain, "tähtäys alas", pelaaja1);
180        Keyboard.Listen(Key.L, ButtonState.Pressed, tahtain, "tähtäys ylös", pelaaja1);
181        Keyboard.Listen(Key.K, ButtonState.Down, Ammu, "ampu tulee", pelaaja1);
182        Keyboard.Listen(Key.O, ButtonState.Pressed, vaihto, "aseen vaihto", pelaaja1);
183        Keyboard.Listen(Key.U, ButtonState.Pressed, granaatti, "kranun heitto", pelaaja1);
184        Keyboard.Listen(Key.I, ButtonState.Down, jetpack, "lentoon", pelaaja1);
185
186        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
187        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
188        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, hyppyVoima);
189
190        Keyboard.Listen(Key.H, ButtonState.Pressed, tahtain, "tähtäys alas", pelaaja2);
191        Keyboard.Listen(Key.F, ButtonState.Pressed, tahtain, "tähtäys ylös", pelaaja2);
192        Keyboard.Listen(Key.G, ButtonState.Down, Ammu, "ampu tulee", pelaaja2);
193        Keyboard.Listen(Key.Y, ButtonState.Pressed, vaihto, "aseen vaihto", pelaaja2);
194        Keyboard.Listen(Key.R, ButtonState.Pressed, granaatti, "kranun heitto", pelaaja2);
195        Keyboard.Listen(Key.T, ButtonState.Down, jetpack, "lentoon", pelaaja2);
196    }
197
198    void liikuta(PlatformCharacter pelaaja, double nopeus)
199    {
200        pelaaja.Walk(nopeus);
201    }
202
203    void hyppaa(PlatformCharacter pelaaja, double voima)
204    {
205        pelaaja.Jump(voima);
206    }
207    void tahtain(PlatformCharacter pelaaja)
208    {
209
210    }
211
212    void vaihto(PlatformCharacter pelaaja)
213    {
214        Weapon vanhaAse = pelaaja.Weapon;
215        pelaaja.Remove(vanhaAse);
216        Remove(pelaaja);
217
218        valitunAseenNumero++;
219        if (valitunAseenNumero >= pelaajan1aseet.Count)
220        {
221            valitunAseenNumero = 0;
222        }
223
224        pelaaja.Weapon = pelaajan[valitunAseenNumero];
225        //Add(pelaaja);
226
227        Timer pelaajaTakas = new Timer();
228        pelaajaTakas.Interval = 0;
229        pelaajaTakas.Tag = pelaaja;
230        pelaajaTakas.Start(1);
231        pelaajaTakas.Trigger += PelaajaTakasinAseenVaihdonJalkeen;
232    }
233
234    void PelaajaTakasinAseenVaihdonJalkeen(Timer ajastin)
235    {
236        PlatformCharacter pelaaja = (PlatformCharacter)ajastin.Tag;
237        Add(pelaaja);
238    }
239
240
241
242    void Ammu(PlatformCharacter pelaaja)
243    {
244        PhysicsObject ammus = pelaaja.Weapon.Shoot();
245        Cannon c;
246        if (ammus != null)
247        {
248            ammus.Tag = pelaaja;
249            ammus.Size = new Vector(50, 50);
250            if (pelaaja.Weapon.Tag.ToString() == "tykki")
251            {
252                ammus.IgnoresGravity = true; // Tykin ammuksella ei painovoimaa
253                c = pelaaja.Weapon as Cannon;
254                c.Power.Value += 1000000000;
255                ammus.Velocity = new Vector(ammus.Velocity.X * 4, ammus.Velocity.Y * 2);
256            }
257            else
258                ammus.Velocity = new Vector(ammus.Velocity.X * 2, ammus.Velocity.Y * 2);
259            ammus.MaximumLifetime = new TimeSpan(10000000);
260            AddCollisionHandler(ammus, KuulaOsuu);
261        }
262    }
263
264    void PlasmaPalloOsuu(PhysicsObject ammus, PhysicsObject kohde)
265    {
266        if (ammus.Tag != kohde && kohde.Tag.ToString() != "palikka")
267        {
268            kohde.Destroy();
269        }
270    }
271
272    void LaserSadeOsuu(PhysicsObject ammus, PhysicsObject kohde)
273    {
274        if (ammus.Tag != kohde && kohde.Tag.ToString() != "palikka")
275        {
276            kohde.Destroy();
277        }
278    }
279    void KuulaOsuu(PhysicsObject ammus, PhysicsObject kohde)
280    {
281        if (ammus.Tag != kohde && kohde.Tag.ToString() != "palikka")
282        {
283            kohde.Destroy();
284        }
285    }
286
287    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
288    {
289        if (ammus.Tag != kohde && kohde.Tag.ToString() != "palikka")
290        {
291            kohde.Destroy();
292        }
293    }
294
295    void granaatti(PhysicsObject pelaaja1)
296    {
297        if (granaatti1valmis)
298        {
299            Grenade kranaatti = new Grenade(4.0);
300            kranaatti.X = pelaaja1.X + 10;
301            kranaatti.Y = pelaaja1.Y + 10;
302            Add(kranaatti);
303            Vector heittoVoima;
304
305            if (((PlatformCharacter)pelaaja1).FacingDirection == Direction.Right)
306            {
307                heittoVoima = Vector.FromLengthAndAngle(30000, Angle.Degrees(35));
308                kranaatti.Hit(heittoVoima);
309            }
310
311           
312           
313           
314                if (((PlatformCharacter)pelaaja1).FacingDirection == Direction.Left)
315                { 
316                    heittoVoima = Vector.FromLengthAndAngle(30000, Angle.Degrees(145));
317                    kranaatti.Hit(heittoVoima);
318                }
319           
320            kranaatti.Size = new Vector(50, 50);
321            kranaatti.ExplosionRadius = 300;
322            granaatti1valmis = false;
323            granaatinValmistumisAjastin.Start();
324        }
325
326    }
327
328    void GranaattiValmistui(Timer t)
329    {
330        granaatti1valmis = true;
331        granaatinValmistumisAjastin.Stop();
332        granaatinValmistumisAjastin.Reset();
333    }
334
335    void jetpack(PlatformCharacter pelaaja)
336    {
337        pelaaja.Push(new Vector(0, 50000));
338    }
339
340}
Note: See TracBrowser for help on using the repository browser.