source: 2012/23/LeoL/Tasohyppelypeli1.cs @ 2815

Revision 2815, 8.3 KB checked in by lemilaht, 8 years ago (diff)

Jatkuu

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class tasohyppelypeli : PhysicsGame
10{
11    DoubleMeter  elamaMittari;
12    Image Ampujankuva = LoadImage("Ampuja");
13    Image DemoninKuva = LoadImage("Dem1.anm");
14    Image olionKuva = LoadImage("cafgar.anm");
15    Image[] pelaajanAnim = LoadImages("pelaaja", "Pelaaja2", "Pelaaja3");
16    double nopeusYlos =  1250;
17    Vector nopeusOikea = new Vector(250, 0);
18    Vector nopeusVasen = new Vector(-250, 0);
19    Image pelaajanKuva = LoadImage("pelaaja");
20   
21    PlatformCharacter pelaaja;
22
23    public override void Begin()
24    {
25       
26
27        LuoKenttä();
28        lataaKenttä();
29        AsetaOhjaimet();
30       
31       
32       
33    }
34
35    void lataaKenttä()
36    {
37    }
38
39    void LuoKenttä()
40    {
41        TileMap ruudut = TileMap.FromLevelAsset("kartta");
42        ruudut.SetTileMethod('_', LuoPalikka);
43        ruudut.SetTileMethod('.', LuoSeina);
44        ruudut.SetTileMethod('"', LuoPiikki);
45        ruudut.SetTileMethod('!', LuoPelaaja);
46        ruudut.SetTileMethod('+', LuoCafgar);
47        ruudut.SetTileMethod('#', LuoDemoni);
48        ruudut.SetTileMethod('-', LuoAmpuja);
49        ruudut.Execute(20, 20);
50        Level.Background.Color = Color.ForestGreen;
51        Camera.Follow(pelaaja);
52        Gravity = new Vector(0, -5000);
53    }
54
55    void LuoPalikka(Vector paikka, double leveys, double korkeus)
56    {
57        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
58        palikka.Position = paikka;
59        palikka.Shape = Shape.Rectangle;
60        palikka.Color = Color.DarkBrown;
61        Add(palikka);
62    }
63
64    void LuoSeina(Vector paikka, double leveys, double korkeus)
65    {
66        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
67        seina.Position = paikka;
68        seina.Shape = Shape.Rectangle;
69        seina.Color = Color.DarkBrown;
70        Add(seina);
71    }
72
73    void LuoPiikki(Vector paikka, double leveys, double korkeus)
74    {
75        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
76        piikki.Position = paikka;
77        piikki.Shape = Shape.Triangle;
78        piikki.Color = Color.Black;
79        piikki.Tag = "piikki";
80        Add(piikki);
81    }
82
83    void AsetaOhjaimet()
84    {
85        Keyboard.Listen(Key.Escape, ButtonState.Down, ConfirmExit, "Poistu pelistä");
86
87        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja liikkuu vasemmalle", pelaaja, nopeusVasen);
88        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
89        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppy, "Pelaaja 1: Pelaaaja hyppää  ylös", pelaaja, nopeusYlos);
90        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Pelaaja Liikkuu Oikealle", pelaaja, nopeusOikea);
91        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
92        Keyboard.Listen(Key.E, ButtonState.Pressed, PelaajaLyo, null);
93    }
94
95    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
96    {
97        pelaaja = new PlatformCharacter(20, 40);
98        pelaaja.Position = paikka;
99       
100        pelaaja.Color = Color.Aquamarine;
101        pelaaja.Image = pelaajanKuva;
102        pelaaja.CanRotate = false;
103        AddCollisionHandler(pelaaja, "piikki", PelaajaKuolee);
104        AddCollisionHandler(pelaaja, "vihu", PelaajaMenettaa);
105        AddCollisionHandler(pelaaja, "Ampuja", PelaajaMenettaa2);
106        AddCollisionHandler(pelaaja, "cafgar", PelaajaMenettaa2);
107        PelaajanElamat();
108        pelaaja.Mass = 5000;
109         
110        Add(pelaaja);
111    }
112
113    void AsetaNopeus(PhysicsObject Pelaaja, Vector nopeus)
114    {
115        Pelaaja.Velocity = nopeus;
116    }
117
118   
119   
120    void PelaajaKuolee(PhysicsObject pelaaja, PhysicsObject kohde )
121    {
122        pelaaja.Destroy();
123       
124    }
125    void LuoCafgar(Vector paikka, double leveys, double korkeus)
126    {
127        PhysicsObject Cafgar = PhysicsObject.CreateStaticObject(20, 40);
128        Cafgar.Position = paikka;
129        Cafgar.Image = olionKuva;
130        Cafgar.Color = Color.Black;
131        Cafgar.Tag = "cafgar";
132        Cafgar.Brain = Aivot();
133        Add(Cafgar);
134    }
135    void LuoDemoni(Vector paikka, double leveys, double korkeus)
136    {
137        PhysicsObject Demoni = PhysicsObject.CreateStaticObject(20, 40);
138        Demoni.Position = paikka;
139        Demoni.Image = DemoninKuva;
140        Demoni.Color = Color.Black;
141        Demoni.Tag = "vihu";
142        Demoni.Brain = Aivot();
143        AddCollisionHandler(Demoni, "piikki", DemoniKuolee);
144        AddCollisionHandler(Demoni, "Ampuja", DemoniKuolee);
145        Demoni.Mass = 500;
146        Add(Demoni);
147    }
148    void Hyppy(PlatformCharacter pelaaja, double hypynVoima)
149    {
150        pelaaja.Jump(hypynVoima);
151    }
152    Brain Aivot()
153    {
154        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
155    seuraajanAivot.Speed = 150; 
156    seuraajanAivot.TargetFollowDistance = 200; 
157    seuraajanAivot.FollowAlways = true; 
158    seuraajanAivot.TargetCloseDistance = 20; 
159 
160
161   
162    seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella;
163    return seuraajanAivot;
164    }
165
166   
167   void mitaTapahtuuKunOllaanLahella(object lahettajaAivot, EventArgs e)
168   {
169   }
170   void DemoniKuolee(PhysicsObject Demoni, PhysicsObject kohde)
171   {
172     
173       Explosion rajahdys = new Explosion(50);
174       rajahdys.Position = Demoni.Position;
175       Add(rajahdys);
176       Demoni.Destroy();
177   }
178   Brain AivotAmpuja()
179   {
180       FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
181       seuraajanAivot.Speed = 0; 
182       seuraajanAivot.TargetFollowDistance = 200; 
183       seuraajanAivot.FollowAlways = true; 
184       seuraajanAivot.TargetCloseDistance = 200; 
185       
186
187       
188       seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella2;
189       return seuraajanAivot;
190   }
191
192   
193   void mitaTapahtuuKunOllaanLahella2 (object lahettajaAivot, EventArgs e)
194   {
195       ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
196       PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
197       if (ammus != null)
198       {
199           AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
200           AddCollisionHandler(ammus, "vihu", DemoniKuolee);
201       }
202   }
203   void LuoAmpuja(Vector paikka, double leveys, double korkeus)
204   {
205       
206       PlatformCharacter Ampuja = new PlatformCharacter(20, 20);
207       Ampuja.IgnoresGravity = true;
208       Ampuja.IgnoresPhysicsLogics = true;
209       Ampuja.MaxVelocity = 0.0;
210       Ampuja.Position = paikka;
211       Ampuja.Image = Ampujankuva;
212       Ampuja.Color = Color.Black;
213       Ampuja.Tag = "Ampuja";
214       Ampuja.Brain = AivotAmpuja();
215       Ampuja.Weapon = new PlasmaCannon(5, 3);
216       Ampuja.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(1);
217       Add(Ampuja);
218   }
219   void PelaajaMenettaa()
220   { 
221   }
222   void PelaajanElamat()
223   {
224       elamaMittari = new DoubleMeter(20);
225       elamaMittari.MaxValue = 10;
226       ProgressBar elamaPalkki = new ProgressBar(150, 10);
227       elamaPalkki.BindTo(elamaMittari);
228       Add(elamaPalkki);
229
230       elamaPalkki.X = Screen.Right - 150;
231       elamaPalkki.Y = Screen.Top - 20;
232       elamaPalkki.Angle = Angle.RightAngle;
233       elamaPalkki.BarColor = Color.Green;
234       elamaPalkki.BorderColor = Color.White;
235       elamaPalkki.Angle = Angle.FromDegrees(90);
236       elamaMittari.Value = 20;
237       
238       elamaMittari.LowerLimit += PelaajaTuhoutuu;
239       
240   }
241   void PelaajaMenettaa(PhysicsObject pelaaja, PhysicsObject kohde)
242   {
243       elamaMittari.Value -= 3;
244   }
245
246   void PelaajaTuhoutuu(double mittarinArvo)
247   {
248       pelaaja.Destroy();
249       MessageDisplay.Add("Dead");
250   }
251   void PelaajaMenettaa2(PhysicsObject pelaaja, PhysicsObject kohde)
252   {
253       elamaMittari.Value -= 5;
254   }
255   void PelaajaLyo()
256   {
257       pelaaja.Animation = new Animation(pelaajanAnim);
258       pelaaja.Animation.Start();
259       pelaaja.Animation.Played += new Action(AnimValm);
260       pelaaja.Animation.FPS = 5;
261   }
262   void AnimValm()
263   {
264       pelaaja.Animation.Stop();
265   }
266   
267}
268
Note: See TracBrowser for help on using the repository browser.