source: 2010/23/elalylon/Ball Wars/Peli.cs @ 739

Revision 739, 13.4 KB checked in by paaaanro, 12 years ago (diff)

viimeistelin peliä ja lisäsin toisen vihollisen.

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7namespace Ball_Wars
8{
9    class Tasohyppely : PhysicsGame
10    {
11        const double nopeus = 200;
12        const double hyppyVoima = 8000;
13        int enemyHitpoints = 10;
14        int enemyHitpoints2 = 10;
15        int pelaajaHitpoints = 10;
16        bool glockenabled = false;
17        Vector enemyshootvector;
18        Vector enemyshootvector2;
19        Vector tahtaa;
20        Vector vasemmalle = new Vector(-100, 0);
21        Vector oikealle = new Vector(100, 0);
22
23        GameObject tahtain;
24        PhysicsObject Glock17;
25        IntMeter pisteLaskuri;
26        ValueDisplay pisteNaytto;
27        ValueDisplay ammoNaytto;
28        PlatformCharacter pelaaja1;
29        PlatformCharacter vihollinen;
30        PlatformCharacter vihollinen2;
31        AssaultRifle m16;
32        AssaultRifle Glock;
33        AssaultRifle Glock2;
34
35
36        protected override void Begin()
37        {
38            Level.Width = 2000;
39            Level.Height = 1000;
40
41            // Luodaan pistelaskuri
42            pisteLaskuri = new IntMeter(0);
43
44            //Luodaan tähtäin
45            tahtain = new GameObject(30, 30, Shapes.Circle); /////////////////////////////////////////////////
46            tahtain.Image = LoadImage("Tahtain");
47            Add(tahtain);
48            //tahtain.
49            //tahtain.IgnoresCollisionResponse = true;
50            //Add(tahtain);
51
52            // luodaan pistelaskunäyttö
53            pisteNaytto = new ValueDisplay();
54            pisteNaytto.Text = "Pisteitä: ";
55            pisteNaytto.X = Screen.RightSafe - 250;
56            pisteNaytto.Y = Screen.TopSafe - 50;
57            pisteNaytto.BindTo(pisteLaskuri);
58            Add(pisteNaytto);    // lisätään peliin
59
60            ammoNaytto = new ValueDisplay();
61            ammoNaytto.X = Screen.RightSafe - 250;
62            ammoNaytto.Y = Screen.TopSafe - 50;
63            Add(ammoNaytto);
64
65
66            // Ajastin, jonka avulla ajastetaan vihollisen toiminta,
67            // mm. ampuminen säännöllisin väliajoin
68            Timer aly = new Timer();
69            aly.Interval = 0.01; // 0.1 sekuntia
70            aly.Trigger += enemyshoot;
71            aly.Trigger += enemymove;
72            aly.Trigger += enemyshoot2;
73            aly.Trigger += enemymove2;
74            Add(aly);
75            aly.Start();
76
77            // Zoomataan lähemmäksi
78            Camera.ZoomFactor = 2.0;
79
80            Camera.StayInLevel = true;
81
82            luoKentta();
83
84        }
85
86        void enemyshoot(Timer t)
87        {
88            enemyshootvector = pelaaja1.Position - vihollinen.Position;
89            vihollinen.Weapon.Angle = enemyshootvector.Angle;
90            if (pelaaja1.Position.X < vihollinen.Position.X)
91            {
92                vihollinen.Image = LoadImage("enemy2");
93                Glock.Image = LoadImage("Glock 17_2");
94            }
95            if (pelaaja1.Position.X < vihollinen.Position.X)
96            {
97                vihollinen.Image = LoadImage("enemy");
98                Glock.Image = LoadImage("Glock 17");
99            }
100            PhysicsObject luoti = Glock.Shoot();
101            if (luoti != null)
102            {
103                luoti.IgnoresCollisionResponse = true;
104                luoti.IgnoresGravity = true;
105                luoti.Mass = 50.0;
106            }
107        }
108        void enemyshoot2(Timer t)//////////////////////////////////////////////
109        {
110            enemyshootvector2 = pelaaja1.Position - vihollinen2.Position;
111            vihollinen2.Weapon.Angle = enemyshootvector2.Angle;
112            if (pelaaja1.Position.X < vihollinen2.Position.X)
113            {
114                vihollinen2.Image = LoadImage("enemy2");
115                Glock2.Image = LoadImage("Glock 17_2");
116            }
117            if (pelaaja1.Position.X < vihollinen2.Position.X)
118            {
119                vihollinen2.Image = LoadImage("enemy");
120                Glock2.Image = LoadImage("Glock 17");
121            }
122            PhysicsObject luoti = Glock2.Shoot();
123            if (luoti != null)
124            {
125                luoti.IgnoresCollisionResponse = true;
126                luoti.IgnoresGravity = true;
127                luoti.Mass = 10.0;
128            }
129        }
130        void enemymove(Timer t)
131        {
132
133            if (pelaaja1.Position.X < (vihollinen.Position.X - 150))
134            {
135                vihollinen.Hit(vasemmalle);
136                return;
137            }
138            else if (pelaaja1.Position.X > (vihollinen.Position.X + 150))
139            {
140                vihollinen.Hit(oikealle);
141                return;
142            }
143            else
144            {
145                if (pelaaja1.Position.Y > -350)
146                {
147                    return;
148                }
149                vihollinen.Jump(hyppyVoima);
150            }
151        }
152        void enemymove2(Timer t)
153        {
154
155            if (pelaaja1.Position.X < (vihollinen2.Position.X - 300))
156            {
157                vihollinen2.Hit(vasemmalle);
158                return;
159            }
160            else if (pelaaja1.Position.X > (vihollinen2.Position.X + 300))
161            {
162                vihollinen2.Hit(oikealle);
163                return;
164            }
165        }
166
167
168        void luoKentta()
169        {
170            Level.CreateBorders();
171            Level.Background.CreateGradient(Color.Blue, Color.Red);
172            Gravity = new Vector(0, -1000);
173
174
175            lisaaTaso(-200, -400);
176            lisaaTaso(0, -300);
177            lisaaTaso(-450, -300);
178            lisaaTaso(800, -400);
179            lisaaTaso(600, -400);
180            lisaaTaso(700, -250);
181            lisaaTaso(450, -300);
182            lisaaTaso(200, -250);
183            lisaaTaso(-750,-300); 
184            lisaaTaso(-1025,-300);
185
186            lisaaPelaajat();
187            LuoVihollinen();
188            LuoVihollinen2();
189            Camera.Follow(pelaaja1);
190            lisaaNappaimet();
191        }
192
193        void lisaaTaso(double x, double y)
194        {
195            PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
196            taso.Color = Color.Gray;
197            taso.X = x;
198            taso.Tag = "taso";
199            taso.Y = y;
200            taso.Image = LoadImage("Kuva2");
201            Add(taso);
202        }
203
204        void lisaaPelaajat()
205        {
206            pelaaja1 = new PlatformCharacter(50, 50);
207            pelaaja1.Mass = 10.0;
208            pelaaja1.Image = LoadImage("Hero");
209            pelaaja1.X = 0;
210            pelaaja1.Y = Level.Bottom + 120;
211            pelaaja1.Tag = "pelaaja1";
212            Add(pelaaja1);
213
214            Image[] JA = LoadImages(
215                "Hero_2",
216                "Hero_3",
217                "Hero_4",
218                "Hero_3",
219                "Hero_2",
220                "Hero"
221            );
222            Animation JumpAnim = new Animation(JA);
223            JumpAnim.FPS = 10;
224            pelaaja1.Animation = JumpAnim;
225
226
227            m16 = new AssaultRifle(100, 30);
228            m16.Ammo.Value = 10000;
229            pelaaja1.Add(m16);
230            m16.Image = LoadImage("m16_levea");
231            m16.TimeBetweenUse = new TimeSpan(1500000);
232            m16.BulletCollision = LuotiOsuu;
233            pelaaja1.Weapon = m16;
234        }
235        void LuotiOsuu(PhysicsObject ammus, PhysicsObject kohde)
236        {
237            if (kohde.Tag.ToString() == "vihollinen")
238            {
239                enemyHitpoints -= 1;
240                if (enemyHitpoints == 0)
241                {
242                    Explosion PAM = new Explosion(100);
243                    PAM.Force = 100;
244                    PAM.MaxRadius = 100;
245                    PAM.Position = vihollinen.Position;
246                    Add(PAM);
247                    pisteLaskuri.Value += 10;
248                    if (glockenabled == true)
249                    {
250                        Glock17 = new PhysicsObject(100, 30, Shapes.Rectangle);
251                        Glock17.Position = vihollinen.Position;
252                        Glock17.Image = LoadImage("Glock 17");
253                        Add(Glock17);
254                        AddCollisionHandler(Glock17, KeraaAse);
255                    }
256                    vihollinen.Destroy();
257                    LuoVihollinen();
258                }
259            }
260             else if (kohde.Tag.ToString() == "vihollinen2")
261            {
262                enemyHitpoints2 -= 1;
263                if (enemyHitpoints2 == 0)
264                {
265                    Explosion PAM = new Explosion(100);
266                    PAM.Force = 100;
267                    PAM.MaxRadius = 100;
268                    PAM.Position = vihollinen2.Position;
269                    Add(PAM);
270                    pisteLaskuri.Value += 10;
271                    if (glockenabled == true)
272                    {
273                        Glock17 = new PhysicsObject(100, 30, Shapes.Rectangle);
274                    Glock17.Position = vihollinen2.Position;
275                    Glock17.Image = LoadImage("Glock 17");
276                    Add(Glock17);
277                    AddCollisionHandler(Glock17, KeraaAse);
278                    }
279                    vihollinen2.Destroy();
280                    LuoVihollinen2();
281                }
282            }
283            if (kohde.Tag.ToString() != "pelaaja1")
284            {
285                ammus.Destroy();
286            }
287        }
288        void KeraaAse(PhysicsObject Glock17, PhysicsObject kohde)
289        {
290            if (kohde == pelaaja1)
291            {
292                Glock17.Destroy();
293                glockenabled = true;
294            }
295
296        }
297        void LuotiOsuux(PhysicsObject ammus, PhysicsObject kohde)
298        {
299            if (kohde.Tag.ToString() == "pelaaja1")
300            {
301                pelaajaHitpoints -= 1;
302                if (pelaajaHitpoints == 0)
303                {
304                    Explosion PAM = new Explosion(100);
305                    PAM.Force = 100;
306                    PAM.MaxRadius = 150;
307                    PAM.Position = pelaaja1.Position;
308                    Add(PAM);
309                    pelaaja1.Destroy();
310                }
311            }
312
313            if (kohde.Tag.ToString() != "vihollinen" && kohde.Tag.ToString() != "vihollinen2")
314            {
315                ammus.Destroy();
316            }
317
318        }
319
320        void LuoVihollinen()
321        {
322            vihollinen = new PlatformCharacter(50, 50);
323            vihollinen.Mass = 10.0;
324            vihollinen.Image = LoadImage("enemy");
325            vihollinen.X = 950;
326            vihollinen.Y = Level.Bottom + 120;
327            vihollinen.Tag = "vihollinen";
328            Add(vihollinen);
329
330            Glock = new AssaultRifle(100, 30);
331            Glock.Ammo.Value = 10000;
332            Glock.Image = LoadImage("Glock 17");
333            Glock.TimeBetweenUse = TimeSpan.FromSeconds(0.3);
334            vihollinen.Weapon = Glock;
335            Glock.BulletCollision = LuotiOsuux;
336
337        }
338        void LuoVihollinen2()
339        {
340            vihollinen2 = new PlatformCharacter(50, 50);
341            vihollinen2.Mass = 10.0;
342            vihollinen2.Image = LoadImage("enemy");
343            vihollinen2.X = -950;
344            vihollinen2.Y = Level.Bottom + 120;
345            vihollinen2.Tag = "vihollinen2";
346            Add(vihollinen2);
347
348            Glock2 = new AssaultRifle(100, 30);
349            Glock2.Ammo.Value = 10000;
350            Glock2.Image = LoadImage("Glock 17");
351            Glock2.TimeBetweenUse = TimeSpan.FromSeconds(0.7);
352            vihollinen2.Weapon = Glock2;
353            Glock2.BulletCollision = LuotiOsuux;
354
355        }
356        void lisaaNappaimet()
357        {
358            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
359            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
360
361            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
362            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
363            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
364            Mouse.Listen(MouseButton.Left, ButtonState.Down, shoot, "ammu");
365            Mouse.ListenMovement(0.0, tahtax_, null); // 0.0 tarkottaa että hiirtä ei tarvi liikuttaa, että aliohjelmaa tahtax_ kutsutaan
366        }
367        void tahtax_(AnalogState tila)
368        {
369
370            tahtain.Position = Mouse.PositionOnWorld;
371            if (tahtain.Position.X < pelaaja1.Position.X)
372            {
373                pelaaja1.Image = LoadImage("Hero2");
374                m16.Image = LoadImage("m16_levea2");
375            }
376            else if (tahtain.Position.X > pelaaja1.Position.X)
377            {
378                pelaaja1.Image = LoadImage("Hero");
379                m16.Image = LoadImage("m16_levea");
380            }
381            tahtaa = Mouse.PositionOnWorld - pelaaja1.Position;
382            m16.Angle = tahtaa.Angle;
383        }
384
385        void shoot()
386        {
387            PhysicsObject luoti = m16.Shoot();
388            if (luoti != null)
389            {
390                luoti.IgnoresGravity = true;
391                luoti.Mass = 10.0;
392            }
393        }
394
395        void liikuta(PlatformCharacter hahmo, double nopeus)
396        {
397            hahmo.Walk(nopeus);
398        }
399
400        void hyppaa(PlatformCharacter hahmo, double voima)
401        {
402            hahmo.Jump(voima);
403            pelaaja1.Animation.Start(1);
404        }
405    }
406}
Note: See TracBrowser for help on using the repository browser.