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

Revision 1423, 7.1 KB checked in by jojumuho, 11 years ago (diff)

hahaaa

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    double nopeus = 600;
14    double hyppyVoima = 10000;
15    Image pelaajanKuva = LoadImage("hahmo 2");
16    bool granaatti1valmis = true;
17    Timer granaatinValmistumisAjastin;
18
19    List<Weapon> aseet;
20    int valitunAseenNumero;
21
22    protected override void Begin()
23    {
24        LuoPelaaja();
25        LuoKentta();
26        LuoPalikka();
27
28        Gravity = new Vector(0, -1200);
29
30        LisaaNappaimet();
31
32        Camera.ZoomToLevel();
33
34        Level.CreateBorders(1.0, false);
35        Level.BackgroundColor = Color.Black;
36        granaatinValmistumisAjastin = new Timer();
37        granaatinValmistumisAjastin.Interval = 5;
38        granaatinValmistumisAjastin.Trigger += GranaattiValmistui;
39    }
40
41
42    void LuoKentta()
43    {
44        TileMap ruudut = TileMap.FromFile("kentta.txt");
45        ruudut['='] = LuoPalikka;
46        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
47
48
49
50
51    }
52    PhysicsObject LuoPalikka()
53    {
54        PhysicsObject palikka = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
55        palikka.Image = palikanKuva;
56        palikka.Tag = "palikka";
57        palikka.Restitution = 0.1;
58        return palikka;
59
60    }
61
62    PhysicsObject LuoPelaaja()
63    {
64        pelaaja1 = new PlatformCharacter(150, 150);
65        pelaaja1.Shape = Shapes.Rectangle;
66        pelaaja1.Mass = 4.0;
67        Add(pelaaja1);
68        pelaaja1.X = -200;
69        pelaaja1.Y = -800;
70        pelaaja1.Color = Color.Lime;
71        pelaaja1.CanRotate = false;
72
73        PlasmaCannon plasmaTykki = new PlasmaCannon(180, 100);
74        plasmaTykki.PlasmaParticleCollision = PlasmaPalloOsuu;
75        plasmaTykki.TimeBetweenUse = new TimeSpan(3000000);
76
77
78
79        LaserGun laserPyssy = new LaserGun(190, 80);
80        laserPyssy.LaserCollision = LaserSadeOsuu;
81        laserPyssy.TimeBetweenUse = new TimeSpan(1000000);
82
83        Cannon tykki = new Cannon(200, 90);
84        tykki.Power.Value += 1000;
85        tykki.CannonBallCollision = KuulaOsuu;
86        tykki.TimeBetweenUse = new TimeSpan(100000000);
87
88
89
90        AssaultRifle pyssy = new AssaultRifle(170, 85);
91        pyssy.BulletCollision = AmmusOsuu;
92
93        Grenade grenade = new Grenade(60.50);
94
95
96
97        aseet = new List<Weapon>();
98        aseet.Add(pyssy);
99        aseet.Add(tykki);
100        aseet.Add(plasmaTykki);
101        aseet.Add(laserPyssy);
102
103        // Tässä asetetaan pelaajan alussa oleva ase.
104        pelaaja1.Weapon = pyssy;
105        valitunAseenNumero = 0;
106
107        pelaaja1.Restitution = 0.1;
108        pelaaja1.Image = pelaajanKuva;
109
110        Image pelaajaOikealle = pelaajanKuva;
111        Image pelaajaVasemmalle = Image.Mirror(pelaajaOikealle);
112
113
114        pelaaja1.LeftIdleAnimation = new Animation(pelaajaVasemmalle);
115        pelaaja1.RightIdleAnimation = new Animation(pelaajaOikealle);
116
117        pelaaja1.LeftWalkingAnimation = new Animation(pelaajaVasemmalle);
118        pelaaja1.RightWalkingAnimation = new Animation(pelaajaOikealle);
119
120        return pelaaja1;
121    }
122
123    void LisaaNappaimet()
124    {
125
126        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
127        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
128        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
129        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
130
131        Keyboard.Listen(Key.J, ButtonState.Pressed, tahtain, "tähtäys alas", pelaaja1);
132        Keyboard.Listen(Key.L, ButtonState.Pressed, tahtain, "tähtäys ylös", pelaaja1);
133        Keyboard.Listen(Key.K, ButtonState.Down, Ammu, "ampu tulee", pelaaja1);
134        Keyboard.Listen(Key.O, ButtonState.Pressed, vaihto, "aseen vaihto", pelaaja1);
135        Keyboard.Listen(Key.U, ButtonState.Pressed, granaatti, "kranun heitto", pelaaja1);
136    }
137
138    void liikuta(PlatformCharacter pelaaja, double nopeus)
139    {
140        pelaaja.Walk(nopeus);
141    }
142
143    void hyppaa(PlatformCharacter pelaaja, double voima)
144    {
145        pelaaja.Jump(voima);
146    }
147    void tahtain(PlatformCharacter pelaaja)
148    {
149
150    }
151
152    void vaihto(PlatformCharacter pelaaja)
153    {
154        Weapon vanhaAse = pelaaja.Weapon;
155        pelaaja.Remove(vanhaAse);
156        Remove(pelaaja);
157
158        valitunAseenNumero++;
159        if (valitunAseenNumero >= aseet.Count)
160        {
161            valitunAseenNumero = 0;
162        }
163
164        pelaaja.Weapon = aseet[valitunAseenNumero];
165        //Add(pelaaja);
166
167        Timer pelaajaTakas = new Timer();
168        pelaajaTakas.Interval = 0;
169        pelaajaTakas.Tag = pelaaja;
170        pelaajaTakas.Start(1);
171        pelaajaTakas.Trigger += PelaajaTakasinAseenVaihdonJalkeen;
172    }
173
174    void PelaajaTakasinAseenVaihdonJalkeen(Timer ajastin)
175    {
176        PlatformCharacter pelaaja = (PlatformCharacter)ajastin.Tag;
177        Add(pelaaja);
178    }
179
180
181
182    void Ammu(PlatformCharacter pelaaja)
183    {
184        PhysicsObject ammus = pelaaja.Weapon.Shoot();
185        if (ammus != null)
186        {
187            ammus.Tag = pelaaja;
188            ammus.Size = new Vector(30, 30);
189            ammus.Velocity = new Vector(ammus.Velocity.X * 2, ammus.Velocity.Y * 2);
190            ammus.MaximumLifetime = new TimeSpan(10000000);
191            AddCollisionHandler(ammus, KuulaOsuu);
192        }
193    }
194
195    void PlasmaPalloOsuu(PhysicsObject ammus, PhysicsObject kohde)
196    {
197        if (ammus.Tag != kohde && kohde.Tag.ToString() != "palikka")
198        {
199            kohde.Destroy();
200        }
201    }
202
203    void LaserSadeOsuu(PhysicsObject ammus, PhysicsObject kohde)
204    {
205        if (ammus.Tag != kohde && kohde.Tag.ToString() != "palikka")
206        {
207            kohde.Destroy();
208        }
209    }
210    void KuulaOsuu(PhysicsObject ammus, PhysicsObject kohde)
211    {
212        if (ammus.Tag != kohde && kohde.Tag.ToString() != "palikka")
213        {
214            kohde.Destroy();
215        }
216    }
217
218    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
219    {
220        if (ammus.Tag != kohde && kohde.Tag.ToString() != "palikka")
221        {
222            kohde.Destroy();
223        }
224    }
225
226    void granaatti(PhysicsObject pelaaja1)
227    {
228        if (granaatti1valmis)
229        {
230            Grenade kranaatti = new Grenade(4.0);
231            kranaatti.X = pelaaja1.X + 10;
232            kranaatti.Y = pelaaja1.Y + 10;
233            Add(kranaatti);
234            Vector heittoVoima = Vector.FromLengthAndAngle(30000, Angle.Degrees(35));
235            kranaatti.Hit(heittoVoima);
236            kranaatti.Size = new Vector(50, 50);
237            kranaatti.ExplosionRadius = 300;
238            granaatti1valmis = false;
239            granaatinValmistumisAjastin.Start();
240        }
241
242    }
243
244    void GranaattiValmistui(Timer t)
245    {
246        granaatti1valmis = true;
247        granaatinValmistumisAjastin.Stop();
248        granaatinValmistumisAjastin.Reset();
249    }
250}
Note: See TracBrowser for help on using the repository browser.