source: 2013/30/VilleF/Lentokone/Lentokone/Lentokone/Lentokone.cs @ 4659

Revision 4659, 12.2 KB checked in by totakahe, 7 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Lentokone : PhysicsGame
10{ 
11    private Animation rasa;
12    private Animation sauruksenLento;
13    private Animation juusto;
14    private Animation miesa;
15    Image rasse = LoadImage("rasse");
16    Image ukkeliPi = LoadImage("ukkeli");
17    Image pommik = LoadImage("pommi");
18    Image maisema = LoadImage("havutausta");
19    Image havusaurus = LoadImage("havusauruskuva");
20
21    Vector nopeusYlos = new Vector(0, 1000);
22    Vector nopeusAlas = new Vector(0, -1000);
23   
24    PhysicsObject pelaaja;
25    PhysicsObject pommi;
26    PhysicsObject Rasa;
27    Cannon RasasenTykki;
28
29    Timer komboLaskurinAjastin;
30    IntMeter pisteLaskuri;
31    IntMeter KomboLaskuri;
32
33    public override void Begin()
34    {
35        Label tekstikentta = new Label("Havupommitus V 0.1");
36        tekstikentta.X = Screen.Left + 105;
37        tekstikentta.Y = Screen.Top - 10;
38        Add(tekstikentta);
39        LuoPistelaskuri();
40        miesa = LoadAnimation("blingbling");
41        juusto = LoadAnimation("ukkeli");
42        sauruksenLento = LoadAnimation("animaatio");
43        rasa = LoadAnimation("rasanen");
44
45        Level.Width = 1920;
46        Level.Height = 1080;
47        Gravity = new Vector(0.0, -500);
48        //MediaPl-ayer.Play("
49        LuoKomboLaskuri();
50        LuoPelaaja();
51        LuoKentta();
52        LisaaVihollinen();
53        LisaaVihollinen();
54        pelaaja.Animation = sauruksenLento;
55        pelaaja.Animation.Start();
56        pelaaja.Animation.FPS = 3;
57        Camera.ZoomToLevel();
58        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
59        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
60        Keyboard.Listen(Key.Left, ButtonState.Down, HidastaPelaajaa, null);
61        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, 1);
62        Keyboard.Listen(Key.Up, ButtonState.Down, KaannaPelaajaa, null, 3.0);
63        Keyboard.Listen(Key.Up, ButtonState.Released, KaannaPelaajaa, null, 0.0);
64        Keyboard.Listen(Key.Down, ButtonState.Down, KaannaPelaajaa, null, -3.0);
65        Keyboard.Listen(Key.Down, ButtonState.Released, KaannaPelaajaa, null, 0.0);
66        Keyboard.Listen(Key.Space, ButtonState.Released, TiputaPommi, "Ammu");
67        Keyboard.Listen(Key.R, ButtonState.Released, LuoPelaaja, "Ammu");
68        Keyboard.Listen(Key.V, ButtonState.Released, LisaaVihollinen, "Ammu");
69        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
70        Keyboard.Listen(Key.NumPad4, ButtonState.Down, LiikutaRasasta, null, -1);
71        Keyboard.Listen(Key.NumPad6, ButtonState.Down, LiikutaRasasta, null, 1);
72        Keyboard.Listen(Key.NumPad5, ButtonState.Released, RasanenPommi, "Saarnaa");
73        Keyboard.Listen(Key.B, ButtonState.Released, tiputamuu, "Luo Rasa");
74       
75
76    }
77
78    void LuoKentta()
79    {
80        Level.Background.Image = maisema;
81        Level.Background.FitToLevel();
82        Surface alareuna = new Surface(Level.Width, 50, 20, 60, 60);
83        alareuna.Color = Color.Green;
84        alareuna.Bottom = Level.Bottom;
85        Add(alareuna);
86
87        PhysicsObject oikeaReuna = Level.CreateRightBorder();
88        oikeaReuna.CollisionIgnoreGroup = 2;
89
90        PhysicsObject vasenReuna = Level.CreateLeftBorder();
91        vasenReuna.CollisionIgnoreGroup = 2;
92
93
94    }
95
96    void LuoPelaaja()
97    {
98        pelaaja = new PhysicsObject(100.0, 120.0);
99        pelaaja.Shape = Shape.FromImage(havusaurus);
100        pelaaja.Image = havusaurus;
101        pelaaja.LinearDamping = 0.99;
102        pelaaja.CollisionIgnoreGroup = 2;
103        //pelaaja.MirrorImage();
104        pelaaja.Animation = sauruksenLento;
105        pelaaja.Animation.Start();
106        pelaaja.Animation.FPS = 3;
107        Add(pelaaja);
108        AddCollisionHandler(pelaaja, CollisionHandler.ExplodeObject(200, true));
109        AddCollisionHandler(pelaaja, "vihollinen", CollisionHandler.ExplodeTarget(50, true));
110        pelaaja.MaxVelocity = 600;
111        Timer ajastin = new Timer();
112        ajastin.Interval = 0.1;
113        ajastin.Timeout += KaannaKohtiMaata;
114        ajastin.Start();
115        pisteLaskuri.Value = -10;
116    }
117
118    void tiputamuu()
119    {
120        if (Rasa != null) return;
121        Rasa = new PhysicsObject(100, 100);
122        Rasa.Shape = Shape.FromImage(rasse);
123        Rasa.Position = pelaaja.Position;
124        Rasa.Animation = rasa;
125        Rasa.Animation.Start();
126        Rasa.Animation.FPS = 3;
127        Rasa.CollisionIgnoreGroup = 2;
128        Add(Rasa);
129
130        RasasenTykki = new Cannon(50, 10);
131        RasasenTykki.Ammo.Value = 999;
132        RasasenTykki.ProjectileCollision = AmmusOsui;
133
134        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
135        Keyboard.Listen(Key.NumPad8, ButtonState.Released, AmmuAseella, "Ammu", RasasenTykki);
136
137        Rasa.Add(RasasenTykki);
138    }
139
140    void TiputaPommi()
141    {
142
143        pommi = new PhysicsObject(50, 50);
144        //pommi.Shape = Shape.FromImage("pommik");
145        pommi.Image = pommik;
146        pommi.Position = pelaaja.Position;
147
148        pommi.CollisionIgnoreGroup = pelaaja.CollisionIgnoreGroup;
149
150
151        Add(pommi);
152
153        AddCollisionHandler(pommi, PommiOsuu);
154    }
155
156    void LisaaVihollinen()
157    {
158        int n = 0;
159        while (n < 10)
160        {
161
162
163            double x = RandomGen.NextDouble(Level.Right, Level.Left);
164            PhysicsObject ukkeli1 = new PhysicsObject(40, 60);
165            ukkeli1.Animation = RandomGen.SelectOne(juusto, miesa);
166            ukkeli1.Animation.Start();
167            ukkeli1.Animation.FPS = 5;
168            ukkeli1.Tag = "vihollinen";
169            ukkeli1.X = x;
170            ukkeli1.Y = Level.Bottom + 80;
171            Add(ukkeli1);
172            n++;
173            Timer ajastin = new Timer();
174            ajastin.Interval = RandomGen.NextDouble(0.2, 2);
175            ajastin.Timeout += delegate
176            {
177
178                ukkeli1.Velocity = new Vector(RandomGen.SelectOne(-200, 200), 0);
179            };
180            ajastin.Start();
181        }
182    }
183
184    void LuoPistelaskuri()
185    {
186        pisteLaskuri = new IntMeter(0);
187
188        Label pisteNaytto = new Label();
189        pisteNaytto.X = Screen.Right - 100;
190        pisteNaytto.Y = Screen.Top - 100;
191        pisteNaytto.TextColor = Color.Green;
192        //pisteNaytto.Color = Color.White;
193        pisteNaytto.IntFormatString = "Pisteitä: {0:D1}";
194        pisteNaytto.BindTo(pisteLaskuri);
195        Add(pisteNaytto);
196    }
197
198    void LuoKomboLaskuri()
199    {
200        KomboLaskuri = new IntMeter(0);
201
202        Label komboNaytto = new Label();
203        komboNaytto.X = Screen.Right - 200;
204        komboNaytto.Y = Screen.Top - 200;
205        komboNaytto.TextColor = Color.Green;
206        //pisteNaytto.Color = Color.White;
207        komboNaytto.IntFormatString = "COMBO: {0:D1}";
208        komboNaytto.BindTo(KomboLaskuri);
209        Add(komboNaytto);
210
211        komboLaskurinAjastin = new Timer();
212        komboLaskurinAjastin.Interval = 5;
213        komboLaskurinAjastin.Timeout += delegate { KomboLaskuri.Reset(); };
214        komboLaskurinAjastin.Start();
215
216        KomboLaskuri.Changed += delegate { Kombot(); };
217
218
219
220
221    }
222
223    void Kombot()
224    {
225        if (KomboLaskuri.Value == 10)
226        {
227            Label tekstikentta = new Label("Fatality");
228            Add(tekstikentta);
229            //   PommiOsuu(100);
230
231        }
232
233        if (KomboLaskuri.Value > 6) { }
234
235
236    }
237
238    void RasanenPommi()
239    {
240        PhysicsObject Raamattu = new PhysicsObject(30, 30);
241        Raamattu.Image = pommik;
242        Rasa.Throw(Raamattu, Angle.FromDegrees(30), 500);
243        Raamattu.CollisionIgnoreGroup = Rasa.CollisionIgnoreGroup;
244        AddCollisionHandler(Raamattu, RaamattuOsuu);
245        Add(Raamattu);
246       
247    }
248
249    void Tahtaa(AnalogState hiirenLiike)
250    {
251        Vector suunta = (Mouse.PositionOnWorld - RasasenTykki.AbsolutePosition).Normalize();
252        RasasenTykki.Angle = suunta.Angle;
253    }
254
255    void AmmuAseella(Cannon RasasenTykki)
256    {
257        PhysicsObject ammus = RasasenTykki.Shoot();
258
259        if (ammus != null)
260        {
261            ammus.Size *= 6;
262            //ammus.Image = ...
263            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
264        }
265    }
266
267    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
268    {
269        if (kohde.Tag.Equals("vihollinen"))
270        {
271            kohde.Destroy();
272            pisteLaskuri.Value += 1;
273            KomboLaskuri.Value += 1;
274            komboLaskurinAjastin.Reset();
275        }
276    }
277
278    void RaamattuOsuu(PhysicsObject pommi, PhysicsObject kohde)
279    {
280        if (kohde.Tag.Equals("vihollinen"))
281        {
282            kohde.Destroy();
283            pisteLaskuri.Value += 1;
284            KomboLaskuri.Value += 1;
285            komboLaskurinAjastin.Reset();
286        }
287        if (KomboLaskuri > 3)
288        {
289            Explosion o = new Explosion(120);
290            o.Position = pommi.Position;
291            pommi.Destroy();
292            Add(o);
293            o.ShockwaveReachesObject += delegate(IPhysicsObject rKohde, Vector v)
294            {
295                if (rKohde.Tag.Equals("vihollinen")) rKohde.Destroy(); 
296            };
297        }
298        else
299        {
300            Explosion o = new Explosion(60);
301            o.Position = pommi.Position;
302            pommi.Destroy();
303            Add(o);
304            o.ShockwaveReachesObject += delegate(IPhysicsObject rKohde, Vector v) { if (rKohde.Tag.Equals("vihollinen")) rKohde.Destroy(); };
305            //pisteet++;}
306        }
307       
308
309       
310       
311    }
312
313    void PommiOsuu(PhysicsObject pommi, PhysicsObject kohde)
314    {
315        if (kohde.Tag.Equals("vihollinen"))
316        {
317            kohde.Destroy();
318            pisteLaskuri.Value += 1;
319            KomboLaskuri.Value += 1;
320            komboLaskurinAjastin.Reset();
321        }
322        if (KomboLaskuri > 3)
323        {
324            Explosion e = new Explosion(120);
325            e.Position = pommi.Position;
326            pommi.Destroy();
327            Add(e);
328            e.ShockwaveReachesObject += delegate(IPhysicsObject rKohde, Vector v)
329            {
330                if (rKohde.Tag.Equals("vihollinen")) rKohde.Destroy();
331            };
332        }
333        else
334        {
335            Explosion o = new Explosion(60);
336            o.Position = pommi.Position;
337            pommi.Destroy();
338            Add(o);
339            o.ShockwaveReachesObject += delegate(IPhysicsObject rKohde, Vector v) { if (rKohde.Tag.Equals("vihollinen")) rKohde.Destroy(); };
340            //pisteet++;}
341        }
342
343
344
345
346    }
347
348    void KaannaPelaajaa(double kaannos)
349    {
350        pelaaja.AngularVelocity = kaannos;
351    }
352
353    protected override void Update(Time time)
354    {
355        base.Update(time);
356        if (pelaaja != null)
357        {
358            if (pelaaja.Position.X > Level.Right) pelaaja.Position = new Vector(Level.Left, pelaaja.Position.Y);
359            if (pelaaja.Position.X < Level.Left) pelaaja.Position = new Vector(Level.Right, pelaaja.Position.Y);
360        }
361    }
362
363    void HidastaPelaajaa()
364    {
365        pelaaja.Velocity = new Vector(pelaaja.Velocity.X * 0.95, pelaaja.Velocity.Y);
366
367    }
368
369    void PelaajaTormasi(PhysicsObject tormaaja, PhysicsObject kohde)
370    {
371
372    }
373
374    void LiikutaPelaajaa(int suunta)
375    {
376        pelaaja.Push(Vector.FromLengthAndAngle(3000 * suunta, pelaaja.Angle));
377    }
378
379    void KaannaKohtiMaata()
380    {
381        if ((pelaaja.Angle.Degrees > 70) && (pelaaja.Angle.Degrees < 110))
382            return;
383        if ((pelaaja.Angle.Degrees >= 110) || (pelaaja.Angle.Degrees <= -90))
384            pelaaja.Angle = Angle.FromDegrees(pelaaja.Angle.Degrees + 0.4);
385        else
386            pelaaja.Angle = Angle.FromDegrees(pelaaja.Angle.Degrees - 0.4);
387    }
388
389    void LiikutaRasasta(int suunta)
390    {
391        Rasa.Push(new Vector(suunta* 400, 0));
392        if (Rasa.Position.X > Level.Right)
393        {
394
395            Rasa.Position = new Vector(Level.Left, Rasa.Position.Y);
396            return;
397        }
398        if (Rasa.Position.X <Level.Left)
399        {
400
401            Rasa.Position = new Vector(Level.Right, Rasa.Position.Y);
402            return;
403        }
404    }
405
406}
Note: See TracBrowser for help on using the repository browser.