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

Revision 1450, 11.5 KB checked in by jojumuho, 11 years ago (diff)

valmis!

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