source: 2011/31/AkseliR/WW2/Wooden Warfare 2/Wooden Warfare 2/Wooden Warfare 2/Peli.cs @ 2537

Revision 2537, 11.1 KB checked in by akrauhan, 8 years ago (diff)

BOMS LOL

Line 
1//Akseli Rauhansalo
2
3using System;
4using Jypeli;
5using Jypeli.Widgets;
6using Physics2DDotNet.Ignorers;
7using Jypeli.Assets;
8using Jypeli.Effects;
9using System.Collections.Generic;
10
11public class Peli : PhysicsGame
12{
13    PhysicsObject varsijousi;
14    PhysicsObject kuormaauto;
15    LaserGun pyssy;
16    const int ruudunLeveys = 50;
17    const int ruudunKorkeus = 50;
18    IntMeter pisteLaskuri;
19    IntMeter Energiamittari;
20    ExplosionSystem rajahdys;
21    PhysicsObject PistePalikka;
22    PhysicsObject RandomPalikka;
23
24    Timer pomminPudotusAjastin;
25    ObjectIgnorer ignorer = new ObjectIgnorer();
26
27    Image nuolenkuva = LoadImage("nuoli");
28
29    public override void Begin()
30    {
31        LuoKentta();
32        pomminPudotusAjastin = new Timer();
33        KaynnistaPomminpudotusAjastin();
34        Ohjaimet();
35
36        LataaRajahdykset();
37        LuoAikaLaskuri();
38        LuoPisteLaskuri();
39        LuoEnergia();
40
41
42    }
43    private void LataaRajahdykset()
44    {
45        Image expl = LoadImage("Red");
46        rajahdys = new ExplosionSystem(expl, 1000);
47        Add(rajahdys);
48    }
49
50    void KaynnistaPomminpudotusAjastin()
51    {
52        pomminPudotusAjastin.Interval = 2;
53        pomminPudotusAjastin.Trigger += Pommeja;
54        //Add(pomminPudotusAjastin);
55        pomminPudotusAjastin.Start();
56    }
57
58    void NopeutaPommienPutoamista()
59    {
60        pomminPudotusAjastin.Interval /= 2;
61    }
62
63    void Pommeja(Timer ajastin)
64    {
65        Add(LuoPommi(20, 40, new Vector(0, -200), "pommi", "heikko"));
66        Add(LuoPommi(30, 50, new Vector(0, -100), "pommi2", "normaali"));
67        Add(LuoPommi(50, 70, new Vector(0, -50), "pommi3", "vahva"));
68    }
69
70
71
72    void LuoKentta()
73    {
74        varsijousi = new PhysicsObject(100, 70);
75        varsijousi.CollisionIgnorer = ignorer;
76        varsijousi.Shape = Shape.Rectangle;
77        varsijousi.X = 0;
78        varsijousi.Y = -200;
79        varsijousi.IgnoresCollisionResponse = true;
80        varsijousi.Image = LoadImage("uusjouus");
81
82        Add(varsijousi);
83
84        pyssy = new LaserGun(20, 5);
85        pyssy.Ammo.Value = 1000000;
86        pyssy.AttackSound = null;
87        pyssy.TimeBetweenUse = new TimeSpan(0, 0, 0, 2);
88        varsijousi.Add(pyssy);
89
90        kuormaauto = new PhysicsObject(200.0, 100.0);
91        kuormaauto.X = -550.0;
92        kuormaauto.Y = -250.0;
93        kuormaauto.Image = LoadImage("Rekka");
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(0.0, -250.0));
100        polku.Add(new Vector(800.0, -250.0));
101        polku.Add(new Vector(0.0, -250.0));
102        tietaseuraavatAivot.Path = polku;
103        tietaseuraavatAivot.Speed = 150;
104        kuormaauto.IgnoresCollisionResponse = true;
105        TileMap ruudut = TileMap.FromFile("kenttä.txt");
106        ruudut['-'] = LuoPalikKaksi;
107        ruudut['='] = LuoPalikka;
108        PistePalikka = new PhysicsObject(30, 30);
109        PistePalikka.X = -800.0;
110        PistePalikka.Y = -250.0;
111        RandomPalikka = new PhysicsObject(30, 30);
112        RandomPalikka.X = 799.0;
113        RandomPalikka.Y = -250.0;
114        Add(RandomPalikka);
115        Add(PistePalikka);
116        ruudut.Insert(40.0, 40.0);
117        Level.Background.Image = LoadImage("Winter");
118        Level.Background.FitToLevel();
119
120        AddCollisionHandler(kuormaauto, KasitteleTormays4);
121        AddCollisionHandler(kuormaauto, KasittelePomminTormays);
122        AddCollisionHandler(kuormaauto, KasittelePomminTormays2);
123        AddCollisionHandler(kuormaauto, KasittelePomminTormays3);
124        AddCollisionHandler(kuormaauto, KasitteleTormays5);
125
126        Camera.ZoomToLevel();
127
128    }
129    void KasitteleTormays5(PhysicsObject kuormaauto, PhysicsObject kohde6)
130    {
131        if (kohde6 == RandomPalikka)
132        {
133            kuormaauto.Image = LoadImage("Rekka2");
134        }
135    }
136
137    void KasittelePomminTormays(PhysicsObject kuormaauto, PhysicsObject kohde2)
138    {
139        if (kohde2.Tag.ToString() == "heikko")
140        {
141            Energiamittari.Value -= 10;
142        }
143
144    }
145
146    void KasittelePomminTormays2(PhysicsObject kuormaauto, PhysicsObject kohde3)
147    {
148        if (kohde3.Tag.ToString() == "normaali")
149        {
150            Energiamittari.Value -= 30;
151        }
152    }
153
154    void KasittelePomminTormays3(PhysicsObject kuormaauto, PhysicsObject kohde4)
155    {
156        if (kohde4.Tag.ToString() == "vahva")
157        {
158            Energiamittari.Value -= 50;
159        }
160    }
161
162    void KasitteleTormays4(PhysicsObject kuormaauto, PhysicsObject kohde)
163    {
164        if (kohde == PistePalikka)
165        {
166            pisteLaskuri.Value += 100;
167            kuormaauto.Image = LoadImage("rekka");
168        }
169    }
170
171    void Ohjaimet()
172    {
173        Keyboard.Listen(Key.Up, ButtonState.Down, LiikuEteen, "Liiku eteenpäin");
174        Keyboard.Listen(Key.Up, ButtonState.Up, Pysahdy, "Pysayta");
175        Keyboard.Listen(Key.Down, ButtonState.Pressed, LiikuTaakse, "Liiku taaksepäin");
176        Keyboard.Listen(Key.Down, ButtonState.Released, Pysahdy, "Pysayta");
177        Keyboard.Listen(Key.Left, ButtonState.Down, KaannyMyotapaivaan, "Käänny Oikealle");
178        Keyboard.Listen(Key.Left, ButtonState.Released, Pysahdy2, "Pysayta");
179        Keyboard.Listen(Key.Right, ButtonState.Down, KaannyVastapaivaan, "Käänny Vasemmalle");
180        Keyboard.Listen(Key.Right, ButtonState.Released, Pysahdy2, "Käänny Vasemmalle");
181        Keyboard.Listen(Key.Space, ButtonState.Down, Ammu, "Käytä asetta");
182        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu Pelistä");
183        Keyboard.Listen(Key.Enter, ButtonState.Pressed, AloitAlusta, "Aloita alusta.");
184
185    }
186
187    void Ammu()
188    {
189        PhysicsObject ammus = pyssy.Shoot();
190        if (ammus != null)
191        {
192            ammus.Color = Color.Brown;
193            ammus.Width *= 4;
194            ammus.Height *= 4;
195            //ammus.CollisionIgnorer = new ObjectIgnorer();
196            ammus.Image = nuolenkuva;
197            Image[] ampuminen = LoadImages("uusjouus", "uusjouus2", "uusjouus3");
198            varsijousi.Animation = new Animation(ampuminen);
199            varsijousi.Animation.Start(1);
200
201        }
202    }
203
204    void LiikuEteen()
205    {
206        Vector suunta = Vector.FromLengthAndAngle(1.0, varsijousi.Angle);
207        varsijousi.Velocity = suunta * 100;
208
209    }
210    void LiikuTaakse()
211    {
212        Vector suunta = Vector.FromLengthAndAngle(1.0, varsijousi.Angle);
213        varsijousi.Velocity = suunta * -100;
214
215    }
216
217    void Pysahdy()
218    {
219        varsijousi.Stop();
220    }
221    void KaannyMyotapaivaan()
222    {
223        varsijousi.Angle += Angle.FromDegrees(5);
224
225    }
226    void KaannyVastapaivaan()
227    {
228        varsijousi.Angle += Angle.FromDegrees(-5);
229    }
230
231
232    void Pysahdy2()
233    {
234    }
235
236
237    PhysicsObject LuoPalikKaksi()
238    {
239        PhysicsObject palikka2 = PhysicsObject.CreateStaticObject(100.0, 50.0);
240        palikka2.Shape = Shape.Rectangle;
241        palikka2.Color = Color.Brown;
242        return palikka2;
243    }
244    PhysicsObject LuoPalikka()
245    {
246        PhysicsObject palikka = PhysicsObject.CreateStaticObject(100.0, 50.0);
247        palikka.Shape = Shape.Rectangle;
248        palikka.Color = Color.White;
249        return palikka;
250
251    }
252
253    PhysicsObject LuoPommi(double leveys, double korkeus, Vector tippumisvoima, String kuva, String vahvuus)
254    {
255        PhysicsObject pommi = new PhysicsObject(leveys, korkeus);
256        pommi.CollisionIgnorer = ignorer;
257        AddCollisionHandler(pommi, KasitteleTormays);
258        pommi.Image = LoadImage(kuva);
259        double x = RandomGen.NextDouble(Level.Left, Level.Right);
260        double y = 600.0;
261        pommi.X = x;
262        pommi.Y = y;
263        pommi.Hit(tippumisvoima);
264        pommi.Tag = vahvuus;
265        return pommi;
266    }
267
268
269
270    void Rajayta(double x, double y)
271    {
272        rajahdys.AddEffect(x, y, 30);
273    }
274
275
276    void KasitteleTormays(PhysicsObject heikkopommi, PhysicsObject kohde)
277    {
278         Rajayta(heikkopommi.X, heikkopommi.Y);
279        heikkopommi.Destroy();
280    }
281
282
283
284    void KasitteleTormays2(PhysicsObject normaalipommi, PhysicsObject kohde)
285    {
286        normaalipommi.Destroy();
287        Explosion rajahdys = new Explosion(70);
288        rajahdys.Position = normaalipommi.Position;
289        Add(rajahdys);
290    }
291
292
293    void KasitteleTormays3(PhysicsObject vahvapommi, PhysicsObject kohde)
294    {
295        vahvapommi.Destroy();
296        Explosion rajahdys = new Explosion(100);
297        rajahdys.Position = vahvapommi.Position;
298        Add(rajahdys);
299    }
300
301    Timer aikaLaskuri;
302
303    void LuoAikaLaskuri()
304    {
305        aikaLaskuri = new Timer();
306        //Add(aikaLaskuri);
307        aikaLaskuri.Start();
308
309        Label aikaNaytto = new Label("Aikaa kulunut:");
310        aikaNaytto.TextColor = Color.Red;
311        aikaNaytto.DecimalPlaces = 1;
312        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
313        aikaNaytto.X = 400;
314        aikaNaytto.Y = 400;
315
316        Add(aikaNaytto);
317    }
318
319    void LuoPisteLaskuri()
320    {
321        pisteLaskuri = new IntMeter(0);
322
323        Label pisteNaytto = new Label();
324        pisteNaytto.X = Screen.Left + 100;
325        pisteNaytto.Y = Screen.Top - 100;
326        pisteNaytto.TextColor = Color.Red;
327
328        pisteNaytto.BindTo(pisteLaskuri);
329        Add(pisteNaytto);
330
331        Label pisteTeksti = new Label("Pisteitä:   ");
332        pisteTeksti.X = Screen.Left + 50;
333        pisteTeksti.Y = Screen.Top - 100;
334        pisteTeksti.TextColor = Color.Red;
335        Add(pisteTeksti);
336
337        if (pisteLaskuri.Value >= 200)
338        {
339            NopeutaPommienPutoamista();
340        }
341        if (pisteLaskuri.Value >= 400)
342        {
343            NopeutaPommienPutoamista();
344        }
345        if (pisteLaskuri.Value >= 700)
346        {
347            NopeutaPommienPutoamista();
348        }
349    }
350    void LuoEnergia()
351    {
352        Energiamittari = new IntMeter(100);
353        Energiamittari.MinValue = 0;
354        Energiamittari.LowerLimit += RekkaTuhoutuu;
355
356        Label EnergiaNaytto = new Label();
357        EnergiaNaytto.X = 0.0;
358        EnergiaNaytto.Y = Screen.Bottom + 100;
359        EnergiaNaytto.TextColor = Color.Green;
360
361
362        EnergiaNaytto.BindTo(Energiamittari);
363        Add(EnergiaNaytto);
364
365    }
366    void RekkaTuhoutuu(int arvo)
367    {
368        MessageDisplay.TextColor = Color.Red;
369        MessageDisplay.Add("Tuhouduit. Paina ENTER aloittaaksesi alusta.");
370        pomminPudotusAjastin.Stop();
371        Explosion rajahdys = new Explosion(300);
372        rajahdys.Position = kuormaauto.Position;
373        kuormaauto.Destroy();
374        aikaLaskuri.Stop();
375        Add(rajahdys);
376
377    }
378
379    void AloitAlusta()
380    {
381        ClearAll();
382        LuoKentta();
383        pomminPudotusAjastin = new Timer();
384        KaynnistaPomminpudotusAjastin();
385        Ohjaimet();
386
387        LataaRajahdykset();
388        LuoAikaLaskuri();
389        LuoPisteLaskuri();
390        LuoEnergia();
391
392    }
393
394}
395
Note: See TracBrowser for help on using the repository browser.