source: 2010/27/akrauhan/Wooden Warfare/Peli.cs @ 1194

Revision 1194, 8.9 KB checked in by akrauhan, 10 years ago (diff)

Kuvia piirrelty, pommeja lisäilty jne.

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Physics2DDotNet.Ignorers;
5using Jypeli.Assets;
6using Jypeli.Effects;
7using System.Collections.Generic;
8
9public class Peli : PhysicsGame
10{
11    PhysicsObject varsijousi;
12    PhysicsObject kuormaauto;
13    LaserGun pyssy;
14    const int ruudunLeveys = 50;
15    const int ruudunKorkeus = 50;
16    IntMeter pisteLaskuri;
17    ExplosionSystem rajahdys;
18    PhysicsObject PistePalikka;
19    Timer powerup;
20    Timer pomminPudotusAjastin;
21    ObjectIgnorer ignorer = new ObjectIgnorer();
22
23
24    protected override void Begin()
25    {   
26        LuoKentta();
27        pomminPudotusAjastin = new Timer();       
28        KaynnistaPomminpudotusAjastin();
29        Ohjaimet();
30        // aikaLaskuri.Start();     
31        LataaRajahdykset();
32        LuoAikaLaskuri();
33        LuoPisteLaskuri();
34
35    }
36
37    private void LataaRajahdykset()
38    {
39        Image expl = LoadImage("Red");
40        rajahdys = new ExplosionSystem(expl, 1000);
41        Add(rajahdys);
42    }
43
44    void KaynnistaPomminpudotusAjastin()
45    {
46        pomminPudotusAjastin.Interval = 2;
47        pomminPudotusAjastin.Trigger += Pommeja;
48        Add(pomminPudotusAjastin);
49        pomminPudotusAjastin.Start();
50    }
51
52    void NopeutaPommienPutoamista()
53    {
54        pomminPudotusAjastin.Interval /= 1.5;
55    }
56
57    void Pommeja(Timer ajastin)
58    {
59        Add(LuoPommi(20, 40, new Vector(0, -200), "pommi"));
60        Add(LuoPommi(30, 50, new Vector(0, -100), "pommi2"));
61        Add(LuoPommi(50, 70, new Vector(0, -50), "pommi3"));
62    }
63    void PowerUp(Timer powerup)
64    {
65        //Add(KerattavaEsine);
66    }
67   
68
69   
70
71    void LuoKentta()
72    {
73        varsijousi = new PhysicsObject(75, 30);
74        varsijousi.CollisionIgnorer = ignorer;
75        varsijousi.Shape = Shapes.Rectangle;
76        varsijousi.X = 0;
77        varsijousi.Y = -200;
78        varsijousi.IgnoresCollisionResponse = true;
79        varsijousi.Image = LoadImage("jousi1");
80        Add(varsijousi);
81
82        PhysicsObject KerattavaEsine = new PhysicsObject(40,40);
83
84        pyssy = new LaserGun(20, 5);
85       
86        varsijousi.Add(pyssy);
87
88        powerup = new Timer();
89        powerup.Interval = 30;
90        powerup.Trigger += PowerUp;
91        kuormaauto = new PhysicsObject(200.0, 100.0);
92        kuormaauto.X = -550.0;
93        kuormaauto.Y = -250.0;
94        Add(kuormaauto);
95        PathFollowerBrain tietaseuraavatAivot = new PathFollowerBrain();
96        kuormaauto.Brain = tietaseuraavatAivot;
97        List<Vector> polku = new List<Vector>();
98        polku.Add(new Vector(-800.0, -250.0));
99        polku.Add(new Vector(800.0, -250.0));
100        tietaseuraavatAivot.Path = polku;
101        tietaseuraavatAivot.Speed = 100;
102        kuormaauto.IgnoresCollisionResponse = true;
103        TileMap ruudut = TileMap.FromFile("kenttä");
104        ruudut['-'] = LuoPalikKaksi;
105        ruudut['='] = LuoPalikka;
106        PistePalikka = new PhysicsObject(30, 30);
107        PistePalikka.X = -800.0;
108        PistePalikka.Y = -250.0;
109        Add(PistePalikka);
110        ruudut.Insert(40.0, 40.0);
111        Level.Background.Image = LoadImage("Winter");
112        Level.Background.FitToLevel();
113        AddCollisionHandler(kuormaauto, KasitteleTormays4);
114        AddCollisionHandler(varsijousi, KasitteleTormays5);
115
116    }
117    void KasitteleTormays5(PhysicsObject varsijousi, PhysicsObject kohde)
118    {
119       // if (kohde == //KerattavaEsine)
120       
121
122       
123    }
124    void KasitteleTormays4(PhysicsObject kuormaauto, PhysicsObject kohde)
125    {
126        if (kohde == PistePalikka)
127        {
128            pisteLaskuri.Value += 100;
129        }
130    }
131
132    void Ohjaimet()
133    {
134        Keyboard.Listen(Key.Up, ButtonState.Down, LiikuEteen, "Liiku eteenpäin");
135        Keyboard.Listen(Key.Up, ButtonState.Up, Pysahdy, "Pysayta");
136        Keyboard.Listen(Key.Down, ButtonState.Pressed, LiikuTaakse, "Liiku taaksepäin");
137        Keyboard.Listen(Key.Down, ButtonState.Released, Pysahdy, "Pysayta");
138        Keyboard.Listen(Key.Left, ButtonState.Down, KaannyMyotapaivaan, "Käänny Oikealle");
139        Keyboard.Listen(Key.Left, ButtonState.Released, Pysahdy2, "Pysayta");
140        Keyboard.Listen(Key.Right, ButtonState.Down, KaannyVastapaivaan, "Käänny Vasemmalle");
141        Keyboard.Listen(Key.Right, ButtonState.Released, Pysahdy2, "Käänny Vasemmalle");
142        Keyboard.Listen(Key.Space, ButtonState.Down, Ammu, "Käytä asetta");
143    }
144
145    void Ammu()
146    {
147        PhysicsObject ammus = pyssy.Shoot();
148        if (ammus != null)
149        {
150            ammus.Color = Color.Brown;
151            ammus.Width *= 4;
152            ammus.Height *= 4;
153            ammus.CollisionIgnorer = new ObjectIgnorer();
154            ammus.Image = LoadImage("nuoli");
155        }
156    }
157
158    void LiikuEteen()
159    {
160        Vector suunta = Vector.FromLengthAndAngle(1.0, varsijousi.Angle);
161        varsijousi.Velocity = suunta * 100;
162        if (varsijousi.Y >= Level.Top)
163        {
164            varsijousi.Velocity = Vector.Zero;
165            return;
166        }
167    }
168    void LiikuTaakse()
169    {
170        Vector suunta = Vector.FromLengthAndAngle(1.0, varsijousi.Angle);
171        varsijousi.Velocity = suunta * -100;
172
173    }
174
175    void Pysahdy()
176    {
177        varsijousi.Stop();
178    }
179    void KaannyMyotapaivaan()
180    {
181        varsijousi.Angle += Angle.Degrees(5);
182
183    }
184    void KaannyVastapaivaan()
185    {
186        varsijousi.Angle += Angle.Degrees(-5);
187    }
188
189
190    void Pysahdy2()
191    {
192    }
193
194
195    PhysicsObject LuoPalikKaksi()
196    {
197        PhysicsObject palikka2 = PhysicsObject.CreateStaticObject(100.0, 50.0);
198        palikka2.Shape = Shapes.Rectangle;
199        palikka2.Color = Color.Brown;
200        return palikka2;
201    }
202    PhysicsObject LuoPalikka()
203    {
204        PhysicsObject palikka = PhysicsObject.CreateStaticObject(100.0, 50.0);
205        palikka.Shape = Shapes.Rectangle;
206        palikka.Color = Color.White;
207        return palikka;
208
209    }
210
211    PhysicsObject LuoPommi(double leveys, double korkeus, Vector tippumisvoima, String kuva)
212    {
213        PhysicsObject pommi = new PhysicsObject(leveys, korkeus);
214        pommi.CollisionIgnorer = ignorer;
215        AddCollisionHandler(pommi, KasitteleTormays);
216        pommi.Image = LoadImage(kuva);
217        double x = RandomGen.NextDouble(Level.Left, Level.Right);
218        double y = 600.0;
219        pommi.X = x;
220        pommi.Y = y;
221        pommi.Hit(tippumisvoima);
222        return pommi;
223    }
224
225
226
227    void Rajayta(double x, double y)
228    {
229        rajahdys.AddEffect(x, y, 30);
230    }
231
232
233    void KasitteleTormays(PhysicsObject heikkopommi, PhysicsObject kohde)
234    {
235        Rajayta(heikkopommi.X, heikkopommi.Y);
236        heikkopommi.Destroy();
237    }
238
239
240
241    void KasitteleTormays2(PhysicsObject normaalipommi, PhysicsObject kohde)
242    {
243        normaalipommi.Destroy();
244        Explosion rajahdys = new Explosion(70);
245        rajahdys.Position = normaalipommi.Position;
246        Add(rajahdys);
247    }
248
249   
250    void KasitteleTormays3(PhysicsObject vahvapommi, PhysicsObject kohde)
251    {
252        vahvapommi.Destroy();
253        Explosion rajahdys = new Explosion(100);
254        rajahdys.Position = vahvapommi.Position;
255        Add(rajahdys);
256    }
257
258    Timer aikaLaskuri;
259
260    void LuoAikaLaskuri()
261    {
262        aikaLaskuri = new Timer();
263        Add(aikaLaskuri);
264        aikaLaskuri.Start();
265
266        Label aikaNaytto = new Label("Aikaa kulunut:");
267        aikaNaytto.TextColor = Color.Red;
268        aikaNaytto.DecimalPlaces = 1;
269        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
270        aikaNaytto.X = 400;
271        aikaNaytto.Y = 400;
272
273        Add(aikaNaytto);
274    }
275
276   
277
278    void LuoPisteLaskuri()
279    {
280        pisteLaskuri = new IntMeter(0);
281
282        Label pisteNaytto = new Label();
283        pisteNaytto.X = Screen.Left + 100;
284        pisteNaytto.Y = Screen.Top - 100;
285        pisteNaytto.TextColor = Color.Red;
286
287        pisteNaytto.BindTo(pisteLaskuri);
288        Add(pisteNaytto);
289
290        Label pisteTeksti = new Label("Pisteitä:");
291        pisteTeksti.X = Screen.Left + 50;
292        pisteTeksti.Y = Screen.Top - 100;
293        pisteTeksti.TextColor = Color.Red;
294        Add(pisteTeksti);
295
296        if (pisteLaskuri.Value >= 300)
297        {
298            NopeutaPommienPutoamista();
299        }
300        if (pisteLaskuri.Value >= 600)
301        {
302            NopeutaPommienPutoamista();
303        }
304        if (pisteLaskuri.Value >= 1000)
305        {
306            NopeutaPommienPutoamista();
307        }
308    }
309
310
311    void LuoEnergia()
312    {
313        Energiamittari = new IntMeter(100);
314
315        Label EnergiaNaytto = new Label();
316        EnergiaNaytto.X = 0.0;
317        EnergiaNaytto.Y = Screen.Bottom + 100;
318        EnergiaNaytto.TextColor = Color.Green;
319
320        EnergiaNaytto.BindTo(Energiamittari);
321        Add(EnergiaNaytto);
322
323        if (LuoEnergia.Value <= 1)
324        {
325            kuormaauto.Destroy;
326        }
327    }
328   
329
330   
331
332   
333}
334
Note: See TracBrowser for help on using the repository browser.