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

Revision 1429, 8.3 KB checked in by jojumuho, 11 years ago (diff)

jatkuu viimene päivä

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("");
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
95        PlasmaCannon plasmaTykki = new PlasmaCannon(180, 100);
96        plasmaTykki.PlasmaParticleCollision = PlasmaPalloOsuu;
97        plasmaTykki.TimeBetweenUse = new TimeSpan(3000000);
98
99        LaserGun laserPyssy = new LaserGun(190, 80);
100        laserPyssy.LaserCollision = LaserSadeOsuu;
101        laserPyssy.TimeBetweenUse = new TimeSpan(1000000);
102
103        Cannon tykki = new Cannon(200, 90);
104        tykki.Tag = "tykki";
105        tykki.Power.Value += 10000000000;
106        tykki.CannonBallCollision = KuulaOsuu;
107        tykki.TimeBetweenUse = new TimeSpan(10000000);
108
109        AssaultRifle pyssy = new AssaultRifle(170, 85);
110        pyssy.BulletCollision = AmmusOsuu;
111        pyssy.Ammo.Value = int.MaxValue; 
112
113        Grenade grenade = new Grenade(60.50);
114        pelaajan1aseet = new List<Weapon>();
115        pelaajan1aseet.Add(pyssy);
116        pelaajan1aseet.Add(tykki);
117        pelaajan1aseet.Add(plasmaTykki);
118        pelaajan1aseet.Add(laserPyssy);
119
120        //pelaajan2aseet = pelaajan1aseet.c
121
122        // Tässä asetetaan pelaajan alussa oleva ase.
123        pelaaja1.Weapon = pyssy;
124        valitunAseenNumero = 0;
125
126        pelaaja1.Restitution = 0.1;
127        pelaaja1.Image = pelaajan1Kuva;
128
129
130    }
131
132    void LisaaNappaimet()
133    {
134
135        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
136        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
137        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
138        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
139
140        Keyboard.Listen(Key.J, ButtonState.Pressed, tahtain, "tähtäys alas", pelaaja1);
141        Keyboard.Listen(Key.L, ButtonState.Pressed, tahtain, "tähtäys ylös", pelaaja1);
142        Keyboard.Listen(Key.K, ButtonState.Down, Ammu, "ampu tulee", pelaaja1);
143        Keyboard.Listen(Key.O, ButtonState.Pressed, vaihto, "aseen vaihto", pelaaja1);
144        Keyboard.Listen(Key.U, ButtonState.Pressed, granaatti, "kranun heitto", pelaaja1);
145        Keyboard.Listen(Key.I, ButtonState.Down, jetpack, "lentoon", pelaaja1);
146    }
147
148    void liikuta(PlatformCharacter pelaaja, double nopeus)
149    {
150        pelaaja.Walk(nopeus);
151    }
152
153    void hyppaa(PlatformCharacter pelaaja, double voima)
154    {
155        pelaaja.Jump(voima);
156    }
157    void tahtain(PlatformCharacter pelaaja)
158    {
159
160    }
161
162    void vaihto(PlatformCharacter pelaaja)
163    {
164        Weapon vanhaAse = pelaaja.Weapon;
165        pelaaja.Remove(vanhaAse);
166        Remove(pelaaja);
167
168        valitunAseenNumero++;
169        if (valitunAseenNumero >= pelaajan1aseet.Count)
170        {
171            valitunAseenNumero = 0;
172        }
173
174        pelaaja.Weapon = pelaajan1aseet[valitunAseenNumero];
175        //Add(pelaaja);
176
177        Timer pelaajaTakas = new Timer();
178        pelaajaTakas.Interval = 0;
179        pelaajaTakas.Tag = pelaaja;
180        pelaajaTakas.Start(1);
181        pelaajaTakas.Trigger += PelaajaTakasinAseenVaihdonJalkeen;
182    }
183
184    void PelaajaTakasinAseenVaihdonJalkeen(Timer ajastin)
185    {
186        PlatformCharacter pelaaja = (PlatformCharacter)ajastin.Tag;
187        Add(pelaaja);
188    }
189
190
191
192    void Ammu(PlatformCharacter pelaaja)
193    {
194        PhysicsObject ammus = pelaaja.Weapon.Shoot();
195        Cannon c;
196        if (ammus != null)
197        {
198            ammus.Tag = pelaaja;
199            ammus.Size = new Vector(50, 50);
200            if (pelaaja.Weapon.Tag.ToString() == "tykki")
201            {
202                ammus.IgnoresGravity = true; // Tykin ammuksella ei painovoimaa
203                c = pelaaja.Weapon as Cannon;
204                c.Power.Value += 1000000000;
205                ammus.Velocity = new Vector(ammus.Velocity.X * 4, ammus.Velocity.Y * 2);
206            }
207            else
208                ammus.Velocity = new Vector(ammus.Velocity.X * 2, ammus.Velocity.Y * 2);
209            ammus.MaximumLifetime = new TimeSpan(10000000);
210            AddCollisionHandler(ammus, KuulaOsuu);
211        }
212    }
213
214    void PlasmaPalloOsuu(PhysicsObject ammus, PhysicsObject kohde)
215    {
216        if (ammus.Tag != kohde && kohde.Tag.ToString() != "palikka")
217        {
218            kohde.Destroy();
219        }
220    }
221
222    void LaserSadeOsuu(PhysicsObject ammus, PhysicsObject kohde)
223    {
224        if (ammus.Tag != kohde && kohde.Tag.ToString() != "palikka")
225        {
226            kohde.Destroy();
227        }
228    }
229    void KuulaOsuu(PhysicsObject ammus, PhysicsObject kohde)
230    {
231        if (ammus.Tag != kohde && kohde.Tag.ToString() != "palikka")
232        {
233            kohde.Destroy();
234        }
235    }
236
237    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
238    {
239        if (ammus.Tag != kohde && kohde.Tag.ToString() != "palikka")
240        {
241            kohde.Destroy();
242        }
243    }
244
245    void granaatti(PhysicsObject pelaaja1)
246    {
247        if (granaatti1valmis)
248        {
249            Grenade kranaatti = new Grenade(4.0);
250            kranaatti.X = pelaaja1.X + 10;
251            kranaatti.Y = pelaaja1.Y + 10;
252            Add(kranaatti);
253            Vector heittoVoima = Vector.FromLengthAndAngle(30000, Angle.Degrees(35));
254            kranaatti.Hit(heittoVoima);
255            kranaatti.Size = new Vector(50, 50);
256            kranaatti.ExplosionRadius = 300;
257            granaatti1valmis = false;
258            granaatinValmistumisAjastin.Start();
259        }
260
261    }
262
263    void GranaattiValmistui(Timer t)
264    {
265        granaatti1valmis = true;
266        granaatinValmistumisAjastin.Stop();
267        granaatinValmistumisAjastin.Reset();
268    }
269
270    void jetpack(PlatformCharacter pelaaja)
271    {
272        pelaaja.Push(new Vector(0, 50000));
273    }
274
275}
Note: See TracBrowser for help on using the repository browser.