source: 2010/30/lesejuku/Somalia 1993/Peli.cs @ 1459

Revision 1459, 7.7 KB checked in by lesejuku, 10 years ago (diff)

Valmis

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using Jypeli.Effects;
6
7public class Tasohyppely : PhysicsGame
8{
9    Image[] oikealleLento = LoadImages("Black Hawk1", "Black Hawk2");
10    Image[] vasemmalleLento;
11
12    //Image[] lentäminenVasemmalle = LoadImages("Black Hawk1", "Black Hawk2");
13    //Image[] lentäminenOikealle;
14
15    Image kentänKuva = LoadImage("kenttä.txt");
16
17    PhysicsObject helikopteri;
18    //double helikopterinNopeus;
19    //Image helikopterinKuva = LoadImage("Black Hawk1");
20    //Image helikopterinKuva2;
21    //PhysicsObject pelaaja1;
22    AssaultRifle machinegun;
23    const double pallonNopeus = 500;
24    ExplosionSystem rajahdys;
25
26   
27   
28
29    Animation oikeaLiike;
30    Animation vasenLiike;
31
32    GameObject tahtain;
33
34    const int ruudunLeveys = 50;
35    const int ruudunKorkeus = 50;
36
37    protected override void Begin()
38    {
39        rajahdys = new ExplosionSystem(LoadImage("rajahdys"), 200);
40        Add(rajahdys);
41
42        LuoKentta();
43        //pelaaja1 = new PhysicsObject(40, 40);
44        //helikopterinKuva2 = Image.Mirror(LoadImage("Black Hawk1"));
45        //Add(pelaaja1);
46
47        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-100, 0));
48        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(100, 0));
49        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 100));
50        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -100));
51        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
52        Keyboard.Listen(Key.Space, ButtonState.Down, Ammu, "Ammu");
53        Keyboard.Listen(Key.Right, ButtonState.Down, KallistaHelikopteria, null, (-2.0));
54        Keyboard.Listen(Key.Left, ButtonState.Down, KallistaHelikopteria, null, (2.0));
55       
56
57        Gravity = new Vector(0.0, -0.0);
58
59        LuoAnimaatio();
60    }
61
62
63
64    void Ammu()
65    {
66        PhysicsObject ammus = machinegun.Shoot();
67        if (ammus != null)
68        {
69            ammus.Width = 15;
70            ammus.Height = 4;
71            ammus.Color = Color.Black;
72            ammus.Tag = "ammus";
73
74        }
75    }
76
77    void LuoKentta()
78    {
79        TileMap ruudut = TileMap.FromFile("kentta.txt");
80        ruudut['='] = LuoMaasto;
81        ruudut['X'] = LuoAloitus;
82        ruudut['M'] = LuoSomali;
83        ruudut['Z'] = LuoTeknikaali;
84        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
85        LuoSomali();
86        LuoTeknikaali();
87        helikopteri = new PhysicsObject(150.0, 55.0);
88        helikopteri.Shape = Shapes.Rectangle;
89        helikopteri.Mass = 1.0;
90        //helikopteri.Image = helikopterinKuva;
91        helikopteri.Color = Color.Gray;
92        helikopteri.X = -200.0;
93        helikopteri.Y = 0.0;
94        //helikopterinNopeus = 10;
95        helikopteri.LinearDamping = 1.0;
96        helikopteri.CanRotate = false;
97        Add(helikopteri);
98
99        machinegun = new AssaultRifle(20, 20);
100        machinegun.Use();
101        Add(machinegun);
102        machinegun.Ammo.Value = int.MaxValue;
103        machinegun.IsVisible = false;
104        machinegun.BulletCollision = LuotiOsuu;
105        machinegun.Angle = helikopteri.Angle;
106        helikopteri.Add(machinegun);
107
108
109        int pMaxMaara = 200;
110
111        Tahtain();
112
113        ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("rajahdys"), pMaxMaara);
114        double x = 0;
115        double y = 0;
116        int pMaara = 50;
117        rajahdys.AddEffect(x, y, pMaara);
118
119        Camera.Follow(helikopteri);
120        helikopteri.Restitution = 0.1;
121        helikopteri.AngularDamping = 0.95;
122        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
123
124    }
125
126    void LuotiOsuu(PhysicsObject ammus, PhysicsObject mihinOsuttiin)
127    {
128        if (mihinOsuttiin != helikopteri)
129        {
130            rajahdys.MinVelocity = 10;
131            rajahdys.MaxVelocity = 200;
132            rajahdys.MinScale = 0.01;
133            rajahdys.MinLifetime = 0.1;
134            rajahdys.MaxLifetime = 1.0;
135            rajahdys.MaxScale = 0.5;
136            rajahdys.AddEffect(ammus.X, ammus.Y, 80);
137            ammus.Destroy();
138        }
139    }
140
141
142    protected override void Update(Time time)
143    {
144        if (helikopteri.Velocity.X < 0)
145        {
146            tahtain.Position = helikopteri.Position - Vector.FromLengthAndAngle(200, machinegun.Angle);
147            helikopteri.Angle = -Angle.Degrees(180);
148            //helikopteri.Image = Image.Flip(helikopterinKuva);
149            helikopteri.Animation = vasenLiike;
150        }
151        else
152        {
153            tahtain.Position = helikopteri.Position - Vector.FromLengthAndAngle(-200, machinegun.Angle);
154            helikopteri.Angle = Angle.Degrees(0);
155            //helikopteri.Image = helikopterinKuva;
156            helikopteri.Animation = oikeaLiike;
157        }
158
159        base.Update(time);
160    }
161
162    void LiikutaPelaajaa(Vector vektori)
163    {
164        helikopteri.Hit(vektori);
165    }
166
167    void LiikutaPelaajaa(AnalogState tatinTila)
168    {
169        Vector tatinAsento = tatinTila.StateVector;
170    }
171
172    void KallistaHelikopteria(double kaanto)
173    {
174        machinegun.Angle = Angle.Degrees(machinegun.Angle.Degree + kaanto);
175    }
176
177    PhysicsObject LuoMaasto()
178    {
179        PhysicsObject maasto = PhysicsObject.CreateStaticObject(50.0, 50.0);
180        maasto.Shape = Shapes.Rectangle;
181        maasto.Color = Color.Green;
182        return maasto;
183    }
184
185    GameObject LuoAloitus()
186    {
187        GameObject Aloitus = new GameObject(20.0, 1.0);
188        return Aloitus;
189    }
190    PhysicsObject LuoVihollinen()
191    {
192        PhysicsObject Vihollinen = new PhysicsObject(2.0, 20.0);
193        return Vihollinen;
194
195    }
196
197    GameObject Tahtain()
198    {
199        tahtain = new GameObject(100, 100);
200        Add(tahtain);
201        tahtain.Image = LoadImage("tahtain");
202        return tahtain;
203
204    }
205    void LuoAnimaatio()
206    {
207        //vasemmalleLento = Image.Mirror(oikealleLento);
208        vasemmalleLento = new Image[2];
209        vasemmalleLento[0] = Image.Flip(oikealleLento[0]);
210        vasemmalleLento[1] = Image.Flip(oikealleLento[1]);
211
212        oikeaLiike = new Animation(oikealleLento);
213        vasenLiike = new Animation(vasemmalleLento);
214
215        oikeaLiike.FPS = 4;
216        vasenLiike.FPS = 4;
217        oikeaLiike.Start();
218        vasenLiike.Start();
219    }
220
221    PhysicsObject LuoSomali()
222    {
223     Image somalinKuva = LoadImage("somali");
224     PhysicsObject somali = new PhysicsObject(70, 95);
225     somali.Shape = Shapes.Rectangle;
226     somali.Mass = 1000.0;
227     Add(somali);
228     somali.Shape = Shapes.Rectangle;
229     AddCollisionHandler(somali, KasitteleSomalinTormays);
230
231     somali.Image = somalinKuva;
232     
233     
234       
235         return somali;
236     }
237    void KasitteleSomalinTormays(PhysicsObject somali, PhysicsObject kohde)
238    {
239        if (kohde.Tag.ToString() == "ammus")
240        {
241            somali.Destroy();
242        }
243    }
244   
245      PhysicsObject LuoTeknikaali()
246    {
247     Image teknikaalinKuva = LoadImage("teknikaali");
248     PhysicsObject teknikaali = new PhysicsObject(140, 95);
249     teknikaali.Shape = Shapes.Rectangle;
250     teknikaali.Mass = 1000.0;
251     Add(teknikaali);
252     teknikaali.Shape = Shapes.Rectangle;
253     AddCollisionHandler(teknikaali, KasitteleTeknikaalinTormays);
254
255     teknikaali.Image = teknikaalinKuva;
256     
257     
258       
259         return teknikaali;
260     }
261      void KasitteleTeknikaalinTormays(PhysicsObject Teknikaali, PhysicsObject kohde)
262      {
263          if (kohde.Tag.ToString() == "ammus")
264          {
265              Teknikaali.Destroy();
266          }
267
268      }
269     
270}
Note: See TracBrowser for help on using the repository browser.