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

Revision 5281, 7.2 KB checked in by novaanan, 7 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    private Image[] hahmonLiike = LoadImages("hahmo01", "hahmo02");
19    Image taustaKuva = LoadImage("maa");
20     
21
22    public override void Begin()
23    {
24
25        Level.Background.Image = taustaKuva;
26        Level.Background.TileToLevel();
27
28
29
30        GameObject taustaPilvet = new GameObject(10000, 10000);
31        taustaPilvet.Image = taustaKuva;
32        Add(taustaPilvet, -3);
33        //Layers[-3].RelativeTransition = new Vector(0.5, 0.5);
34
35     
36
37        SmoothTextures = false;
38        Level.Background.Color = Color.Brown;
39
40        //hahmonLiike = LoadAnimation("hahmo");
41
42        LuoKentta();
43       
44        LisaaOhjaimet();
45
46     
47       
48
49
50        Camera.Zoom(4);
51        Camera.FollowedObject = pelaaja;
52
53        //PhysicsObject turhake = new PhysicsObject(10, 10);
54       // Add(turhake);
55
56
57       
58    }
59
60
61    void LisaaOhjaimet()
62    {
63        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
64
65
66        Keyboard.Listen(Key.S, ButtonState.Down, AnimaatioAlas, null);
67        Keyboard.Listen(Key.S, ButtonState.Up, AnimaatioAlasLopetus, null);
68
69        Keyboard.Listen(Key.W, ButtonState.Down, Liiku, null, new Vector(0, 1000));
70        Keyboard.Listen(Key.W, ButtonState.Released, Liiku, null, Vector.Zero);
71        Keyboard.Listen(Key.S, ButtonState.Down, Liiku, null, new Vector(0, -1000));
72        Keyboard.Listen(Key.S, ButtonState.Released, Liiku, null, Vector.Zero);
73        Keyboard.Listen(Key.D, ButtonState.Down, Liiku, null, new Vector(1000, 0));
74        Keyboard.Listen(Key.D, ButtonState.Released, Liiku, null, Vector.Zero);
75        Keyboard.Listen(Key.A, ButtonState.Down, Liiku, null, new Vector(-1000, 0));
76        Keyboard.Listen(Key.A, ButtonState.Released, Liiku, null, Vector.Zero);
77        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyokkaa, null);
78
79        Keyboard.Listen(Key.Escape, ButtonState.Pressed, KysyPoistumista, "Lopeta peli");
80    }
81           
82
83    void Liiku(Vector vektori)
84    {
85        if (vektori == Vector.Zero)
86        {
87            int apu = 0;
88            int kierrokset = 4;
89            Timer pelaajanPysayttaja = new Timer();
90            pelaajanPysayttaja.Interval = 0.1;
91            pelaajanPysayttaja.Timeout += delegate 
92                {
93                    apu++;
94                    pelaaja.Velocity = pelaaja.Velocity / 2;
95                    if (apu == kierrokset) pelaaja.Velocity = Vector.Zero;
96                };
97            pelaajanPysayttaja.Start(kierrokset);
98           
99        }
100        else pelaaja.Push(vektori);
101    }
102    void KysyPoistumista()
103    {
104        IsPaused = true;
105        MultiSelectWindow valikko = new MultiSelectWindow("menu", "back to game", "quit game");
106        valikko.AddItemHandler(1, Exit);
107        valikko.AddItemHandler(0, delegate { IsPaused = false; });
108        valikko.Color = Color.Black;
109        valikko.Color = Color.Transparent;
110        valikko.SelectionColor = Color.Black;
111        valikko.Image = valikonKuva;
112        Add(valikko);
113    }
114   
115
116    void LuoKentta()
117    {
118        Image taustaKuva = LoadImage("kuvanNimi");
119        Level.Background.TileToLevel();
120
121        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
122        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta");
123
124        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
125        ruudut.SetTileMethod(Color.Blue, LuoPelaaja);
126        ruudut.SetTileMethod(Color.Black, LuoSivuseina);
127        ruudut.SetTileMethod(Color.Red, LuoAlaseina);
128        ruudut.SetTileMethod(Color.White, LuoOikeaYla);
129
130        //3. Execute luo kentän
131        //   Parametreina leveys ja korkeus
132        ruudut.Execute(20, 20);
133
134
135       
136
137        Timer vihunLuontiAjastin = new Timer();
138        vihunLuontiAjastin.Interval = 10.0;
139        vihunLuontiAjastin.Timeout += delegate { LuoVihollinen(new Vector(RandomGen.NextDouble(Level.Left, Level.Right), Level.Top)); };
140        vihunLuontiAjastin.Start();
141
142    }
143    void LuoAlaseina(Vector paikka, double leveys, double korkeus)
144    {
145        PhysicsObject ala = PhysicsObject.CreateStaticObject(leveys, korkeus);
146        ala.Position = paikka;
147        ala.CollisionIgnoreGroup = 1;
148        ala.Image = alaseina;
149        Add(ala);
150
151
152    }
153
154
155    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
156    {
157        pelaaja = new PhysicsObject(leveys, korkeus);
158        pelaaja.Image = hahmo;
159        pelaaja.Position = paikka;
160        pelaaja.CanRotate = false;
161        pelaaja.Restitution = 0;
162        pelaaja.MaxVelocity = 300;
163        Add(pelaaja);
164     
165    }
166
167
168    void LuoSivuseina(Vector paikka, double leveys, double korkeus)
169    {
170        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
171        taso.Position = paikka;
172        taso.CollisionIgnoreGroup = 1;
173        taso.Image = sivuseina;
174        Add(taso);
175    }
176    void LuoOikeaYla(Vector paikka, double leveys, double korkeus)
177    {
178         PhysicsObject ala = PhysicsObject.CreateStaticObject(leveys, korkeus);
179        ala.Position = paikka;
180        ala.CollisionIgnoreGroup = 1;
181        ala.Image = oikeayla;
182        Add(ala);
183
184    }
185
186
187    private void LuoVihollinen(Vector vektori)
188    {
189        PhysicsObject vihollinen = new PhysicsObject(20, 20);
190       
191       
192
193        Add(vihollinen);
194        vihollinen.Restitution = 1.5;
195        vihollinen.Tag = "vihu";
196
197        //vihollinen.MoveTo(new Vector(RandomGen.NextDouble(Level.Left, Level.Right), Level.Bottom - 250), 500); //{ vihollisLaskuri.Value++; });
198        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
199        seuraajanAivot.Speed = 500.0;
200        seuraajanAivot.DistanceClose = 200;
201        seuraajanAivot.TargetClose += delegate
202        {
203            seuraajanAivot.Active = true;
204            vihollinen.Hit(new Vector(0, -5000));
205
206        };
207
208        vihollinen.Brain = seuraajanAivot;
209
210    }
211    void Hyokkaa()
212    {
213        PhysicsObject hyokkaus = new PhysicsObject(30, 30);
214        hyokkaus.Position = pelaaja.Position;
215        hyokkaus.Image = hyokkauksenKuva;
216        Add(hyokkaus);
217        AxleJoint liitos = new AxleJoint(pelaaja, hyokkaus);
218        Add(liitos);
219
220
221        Timer.SingleShot(0.5, delegate { hyokkaus.Destroy(); });
222        //AddCollisionHandler(hyokkaus, "vihu", );
223
224    }
225
226    void AnimaatioAlas()
227    {
228        if (pelaaja.Velocity != Vector.Zero) return;
229        pelaaja.Animation = new Animation(hahmonLiike);
230        pelaaja.Animation.FPS = 5;
231        pelaaja.Animation.Start();
232    }
233    void AnimaatioAlasLopetus()
234    {
235        pelaaja.Animation.Stop();
236        pelaaja.Image = hahmo;
237    }
238   
239
240}
Note: See TracBrowser for help on using the repository browser.