source: 2014/27/NoelV/turhakepeli/turhakepeli/turhakepeli/turhakepeli.cs @ 5292

Revision 5292, 9.5 KB checked in by novaanan, 6 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class turhakepeli : PhysicsGame
10{
11    PhysicsObject pelaaja;
12    Image hahmo = LoadImage("pelaaja");
13    Image valikonKuva = LoadImage("valikko");
14    Image hyokkauksenKuva = LoadImage("hyokkaus");
15    Image alaseina = LoadImage("ala");
16    Image sivuseina = LoadImage("sivu");
17    Image oikeayla = LoadImage("oikeaYla");
18    Image oikeaSeina = LoadImage("sivuOikea");
19    Image OikeaAla = LoadImage("oikeaAla");
20    Image VasenAla = LoadImage("vasenAla");
21    Image VasenYla = LoadImage("vasenYla");
22    Image hahmoHyokkaa = LoadImage("pelaajaHyokkaa");
23
24    private Image[] hahmonLiikeAlas = LoadImages("hahmo01", "hahmo02");
25    private Image[] hahmonLiikeYlos = LoadImages("hahmo01", "hahmo02");
26    Image taustaKuva = LoadImage("maa");
27     
28
29    public override void Begin()
30    {
31
32        Level.Background.Image = taustaKuva;
33        Level.Background.TileToLevel();
34
35
36
37        GameObject taustaPilvet = new GameObject(10000, 10000);
38        taustaPilvet.Image = taustaKuva;
39        Add(taustaPilvet, -3);
40        //Layers[-3].RelativeTransition = new Vector(0.5, 0.5);
41
42     
43
44        SmoothTextures = false;
45        Level.Background.Color = Color.Brown;
46
47        //hahmonLiike = LoadAnimation("hahmo");
48
49        LuoKentta();
50       
51        LisaaOhjaimet();
52
53     
54       
55
56
57        Camera.Zoom(4);
58        Camera.FollowedObject = pelaaja;
59
60        PhysicsObject turhake = new PhysicsObject(10, 10);
61        turhake.Color = Color.Gray;
62        Add(turhake);
63
64
65       
66    }
67
68
69    void LisaaOhjaimet()
70    {
71        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
72
73
74        Keyboard.Listen(Key.S, ButtonState.Down, HahmonAnimaatio, null, hahmonLiikeAlas);
75        Keyboard.Listen(Key.S, ButtonState.Released, AnimaatioLopetus, null);
76
77        Keyboard.Listen(Key.W, ButtonState.Down, HahmonAnimaatio, null, hahmonLiikeYlos);
78        Keyboard.Listen(Key.W, ButtonState.Released, AnimaatioLopetus, null);
79
80        Keyboard.Listen(Key.W, ButtonState.Down, Liiku, null, new Vector(0, 900));
81        Keyboard.Listen(Key.W, ButtonState.Released, Liiku, null, Vector.Zero);
82        Keyboard.Listen(Key.S, ButtonState.Down, Liiku, null, new Vector(0, -900));
83        Keyboard.Listen(Key.S, ButtonState.Released, Liiku, null, Vector.Zero);
84        Keyboard.Listen(Key.D, ButtonState.Down, Liiku, null, new Vector(900, 0));
85        Keyboard.Listen(Key.D, ButtonState.Released, Liiku, null, Vector.Zero);
86        Keyboard.Listen(Key.A, ButtonState.Down, Liiku, null, new Vector(-900, 0));
87        Keyboard.Listen(Key.A, ButtonState.Released, Liiku, null, Vector.Zero);
88        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyokkaa, null);
89
90        Keyboard.Listen(Key.Escape, ButtonState.Pressed, KysyPoistumista, "Lopeta peli");
91    }
92           
93
94    void Liiku(Vector vektori)
95    {
96        if (vektori == Vector.Zero)
97        {
98            int apu = 0;
99            int kierrokset = 4;
100            Timer pelaajanPysayttaja = new Timer();
101            pelaajanPysayttaja.Interval = 0.1;
102            pelaajanPysayttaja.Timeout += delegate 
103                {
104                    apu++;
105                    pelaaja.Velocity = pelaaja.Velocity / 2;
106                    if (apu == kierrokset) pelaaja.Velocity = Vector.Zero;
107                };
108            pelaajanPysayttaja.Start(kierrokset);
109           
110        }
111        else pelaaja.Push(vektori);
112    }
113    void KysyPoistumista()
114    {
115        IsPaused = true;
116        MultiSelectWindow valikko = new MultiSelectWindow("menu", "back to game", "quit game");
117        valikko.AddItemHandler(1, Exit);
118        valikko.AddItemHandler(0, delegate { IsPaused = false; });
119        valikko.Color = Color.Black;
120        valikko.Color = Color.Transparent;
121        valikko.SelectionColor = Color.Black;
122        valikko.Image = valikonKuva;
123        Add(valikko);
124    }
125   
126
127    void LuoKentta()
128    {
129        Image taustaKuva = LoadImage("kuvanNimi");
130        Level.Background.TileToLevel();
131
132        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
133        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta");
134
135        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
136        ruudut.SetTileMethod(Color.Blue, LuoPelaaja);
137        ruudut.SetTileMethod(Color.Black, LuoSivuseina);
138        ruudut.SetTileMethod(Color.Red, LuoAlaseina);
139        ruudut.SetTileMethod(Color.White, LuoOikeaYla);
140        ruudut.SetTileMethod(Color.Yellow, LuoOikea);
141        ruudut.SetTileMethod(new Color(138, 138, 138), LuoOikeaAla);
142        ruudut.SetTileMethod(new Color(155, 0, 255), LuoVasenAla);
143        ruudut.SetTileMethod(new Color(255, 145, 0), LuoVasenYla);
144
145
146        //3. Execute luo kentän
147        //   Parametreina leveys ja korkeus
148        ruudut.Execute(20, 20);
149
150
151       
152
153        Timer vihunLuontiAjastin = new Timer();
154        vihunLuontiAjastin.Interval = 10.0;
155        vihunLuontiAjastin.Timeout += delegate { LuoVihollinen(new Vector(RandomGen.NextDouble(Level.Left, Level.Right), Level.Top)); };
156        vihunLuontiAjastin.Start();
157
158    }
159    void LuoAlaseina(Vector paikka, double leveys, double korkeus)
160    {
161        PhysicsObject ala = PhysicsObject.CreateStaticObject(leveys, korkeus);
162        ala.Position = paikka;
163        ala.CollisionIgnoreGroup = 1;
164        ala.Image = alaseina;
165        Add(ala);
166
167
168    }
169    void LuoVasenAla(Vector paikka, double leveys, double korkeus)
170    {
171        PhysicsObject vasenAla = PhysicsObject.CreateStaticObject(leveys, korkeus);
172        vasenAla.Position = paikka;
173        vasenAla.CollisionIgnoreGroup = 1;
174        vasenAla.Image = VasenAla;
175        Add(vasenAla);
176
177
178    }
179
180    void LuoVasenYla(Vector paikka, double leveys, double korkeus)
181    {
182        PhysicsObject vasenYla = PhysicsObject.CreateStaticObject(leveys, korkeus);
183        vasenYla.Position = paikka;
184        vasenYla.CollisionIgnoreGroup = 1;
185        vasenYla.Image = VasenYla;
186        Add(vasenYla);
187
188
189    }
190
191
192    void LuoOikeaAla(Vector paikka, double leveys, double korkeus)
193    {
194        PhysicsObject oikeaAla = PhysicsObject.CreateStaticObject(leveys, korkeus);
195        oikeaAla.Position = paikka;
196        oikeaAla.CollisionIgnoreGroup = 1;
197        oikeaAla.Image = OikeaAla;
198        Add(oikeaAla);
199
200
201    }
202
203    void LuoOikea(Vector paikka, double leveys, double korkeus)
204    {
205        PhysicsObject oikea = PhysicsObject.CreateStaticObject(leveys, korkeus);
206        oikea.Position = paikka;
207        oikea.CollisionIgnoreGroup = 1;
208        oikea.Image = oikeaSeina;
209        Add(oikea);
210
211
212    }
213   
214
215
216    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
217    {
218        pelaaja = new PhysicsObject(leveys, korkeus);
219        pelaaja.Image = hahmo;
220        pelaaja.Position = paikka;
221        pelaaja.CanRotate = false;
222        pelaaja.Restitution = 0;
223        pelaaja.MaxVelocity = 300;
224        Add(pelaaja);
225     
226    }
227
228
229    void LuoSivuseina(Vector paikka, double leveys, double korkeus)
230    {
231        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
232        taso.Position = paikka;
233        taso.CollisionIgnoreGroup = 1;
234        taso.Image = sivuseina;
235        Add(taso);
236    }
237    void LuoOikeaYla(Vector paikka, double leveys, double korkeus)
238    {
239         PhysicsObject ala = PhysicsObject.CreateStaticObject(leveys, korkeus);
240        ala.Position = paikka;
241        ala.CollisionIgnoreGroup = 1;
242        ala.Image = oikeayla;
243        Add(ala);
244
245    }
246
247
248    private void LuoVihollinen(Vector vektori)
249    {
250        PhysicsObject vihollinen = new PhysicsObject(20, 20);
251       
252       
253
254        Add(vihollinen);
255        vihollinen.Restitution = 1.5;
256        vihollinen.Tag = "vihu";
257
258        //vihollinen.MoveTo(new Vector(RandomGen.NextDouble(Level.Left, Level.Right), Level.Bottom - 250), 500); //{ vihollisLaskuri.Value++; });
259        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
260        seuraajanAivot.Speed = 50.0;
261        seuraajanAivot.DistanceClose = 200;
262        seuraajanAivot.TargetClose += delegate
263        {
264            seuraajanAivot.Active = true;
265            vihollinen.Hit(new Vector(0, -5000));
266
267        };
268
269        vihollinen.Brain = seuraajanAivot;
270
271    }
272    void Hyokkaa()
273    {
274     
275        PhysicsObject hyokkaus = new PhysicsObject(30, 30);
276        hyokkaus.Position = pelaaja.Position;
277        hyokkaus.Image = hyokkauksenKuva;
278        hyokkaus.CollisionIgnoreGroup = 1;
279        Add(hyokkaus);
280        hyokkaus.CanRotate = false;
281        AxleJoint liitos = new AxleJoint(pelaaja, hyokkaus); 
282        Add(liitos);
283        pelaaja.Image = hahmoHyokkaa;
284        //pelaaja.
285
286        Timer.SingleShot(0.5, delegate { 
287            hyokkaus.Destroy(); 
288            pelaaja.Image = hahmo; 
289            //if (pelaaja.Animation != null) pelaaja.Animation.Start();
290        });
291        //AddCollisionHandler(hyokkaus, "vihu", );
292
293    }
294
295
296    void HahmonAnimaatio(Image[] hahmonLiike)
297    {
298        if (pelaaja.Velocity != Vector.Zero) return;
299        pelaaja.Animation = new Animation(hahmonLiike);
300        pelaaja.Animation.FPS = 5;
301        pelaaja.Animation.Start();
302    }
303
304
305    void AnimaatioLopetus()
306    {
307        pelaaja.Animation.Stop();
308        pelaaja.Image = hahmo;
309    }
310   
311
312}
Note: See TracBrowser for help on using the repository browser.