source: 2013/27/LeoL/Hounted Hause/Hounted Hause/Hounted Hause/Hounted_Hause.cs @ 4433

Revision 4433, 8.6 KB checked in by leoliukk, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Hounted_Hause : PhysicsGame
10{
11    Image PelaajaKuva = LoadImage("Char");
12    Image avainKuva = LoadImage("Avain");
13    Image örkkiKuva = LoadImage("Ghost");
14    Color tasoväri;
15
16    PhysicsObject pelaaja;
17
18    //Pelin alussa ollaan kentässä 1
19    int kenttaNro = 1;
20
21    int avaimet = 0;
22
23
24
25    Vector ylos = new Vector(0, 100);
26    Vector alas = new Vector(0, -100);
27    Vector vasen = new Vector(-100, 0);
28    Vector oikea = new Vector(100, 0);
29
30    public override void Begin()
31    {
32        MediaPlayer.Play("aloitusmusa");
33
34        Level.Size = Screen.Size;
35        Level.Background.Image = LoadImage("tausta");
36        Level.Background.FitToLevel();
37        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
38"Aloita peli", "Lopeta");
39        Add(alkuValikko);
40        alkuValikko.AddItemHandler(0, SeuraavaKentta);
41        alkuValikko.AddItemHandler(1, Exit);
42    }
43    void SeuraavaKentta()
44    {
45        ClearAll();
46
47        avaimet = 0;
48        MediaPlayer.Play("taustamusiikki");
49
50        if (kenttaNro == 1)
51        {
52            tasoväri = Color.Green;
53            LuoKentta("kentta1");
54        }
55        else if (kenttaNro == 2)
56        {
57            tasoväri = Color.Yellow;
58            LuoKentta("kentta2");
59        }
60        else if (kenttaNro == 3)
61        {
62            tasoväri = Color.Red;
63            LuoKentta("kentta3");
64        }
65        else if (kenttaNro == 4)
66        {
67            tasoväri = Color.Blue;
68            LuoKentta("kentta4");
69        }
70        else if (kenttaNro == 5)
71        {
72            tasoväri = Color.Orange;
73            LuoKentta("kentta5");
74        }
75        else if (kenttaNro == 6)
76        {
77            tasoväri = Color.Snow;
78            LuoKentta("kentta6");
79
80        }
81        else if (kenttaNro == 7)
82        {
83            tasoväri = Color.Pink;
84            LuoKentta("kentta7");
85        }
86        else if (kenttaNro == 8)
87        {
88            tasoväri = Color.Violet;
89            LuoKentta("kentta8");
90        }
91        else if (kenttaNro == 9)
92        {
93            tasoväri = Color.Aqua;
94            LuoKentta("kentta9");
95        }
96        else if (kenttaNro == 10)
97        {
98            tasoväri = Color.Brown;
99            LuoKentta("kentta10");
100        }
101        else if (kenttaNro == 11)
102        {
103            tasoväri = Color.DarkGray;
104            LuoKentta("kentta11");
105        }
106        else if (kenttaNro == 12)
107        {
108            tasoväri = Color.BloodRed;
109            LuoKentta("kentta12");
110        }
111        else if (kenttaNro > 12)
112        {
113
114            kenttaNro = 1;
115            MediaPlayer.Stop(); DoNextUpdate(Begin);
116            return;
117        }
118
119
120        Camera.Follow(pelaaja);
121        Camera.ZoomFactor = 1.0;
122        Camera.StayInLevel = true;
123
124        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-100, 0), pelaaja);
125        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, LiikutaPelaajaa, null, new Vector(100, 0), pelaaja);
126        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 100), pelaaja);
127        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -100), pelaaja);
128
129        PhoneBackButton.Listen(PauseValikko, "Lopeta peli");
130        Keyboard.Listen(Key.Escape, ButtonState.Pressed, PauseValikko, "Lopeta peli");
131    }
132
133    void PauseValikko()
134    {
135        IsPaused = true;
136
137        MultiSelectWindow pauseValikko = new MultiSelectWindow("Pause",
138"Jatka", "Lopeta");
139        Add(pauseValikko);
140        pauseValikko.AddItemHandler(0, JatkaPelia);
141        pauseValikko.AddItemHandler(1, MeneValikkoon);
142    }
143
144    void JatkaPelia()
145    {
146        IsPaused = false;
147    }
148
149    void MeneValikkoon()
150    {
151        IsPaused = false;
152        ClearAll();
153        DoNextUpdate(Begin);
154    }
155
156    void LiikutaPelaajaa(Vector vektori, PhysicsObject pelaaja)
157    {
158        pelaaja.Velocity = vektori;
159
160    }
161
162    void LuoKentta(string kentat)
163    {
164        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
165        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kentat);
166
167        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
168        ruudut.SetTileMethod("FFD800", LuoPelaaja);
169        ruudut.SetTileMethod(Color.Black, LuoTaso);
170        ruudut.SetTileMethod("FF0000", LuoAvain);
171        ruudut.SetTileMethod("B6FF00", LuoÖrkki);
172
173        //3. Execute luo kentän
174        //   Parametreina leveys ja korkeus
175        ruudut.Execute(40, 40);
176    }
177
178    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
179    {
180        pelaaja = new PhysicsObject(39, 39);
181        pelaaja.Shape = Shape.Circle;
182        pelaaja.Image = PelaajaKuva;
183        pelaaja.CanRotate = false;
184        pelaaja.Position = paikka;
185        pelaaja.Restitution = 0.0;
186        pelaaja.Tag = "pelaaja";
187        pelaaja.KineticFriction = 0.0;
188        AddCollisionHandler(pelaaja, "avain", TormaaAvaimeen);
189        AddCollisionHandler(pelaaja, "orkki", TormaaOrkkiin);
190        Add(pelaaja);
191    }
192
193    void LuoÖrkki(Vector paikka, double leveys, double korkeus)
194    {
195        PhysicsObject orkki = new PhysicsObject(30, 30);
196        orkki.Shape = Shape.Rectangle;
197        orkki.Image = örkkiKuva;
198        orkki.CanRotate = false;
199        orkki.Position = paikka;
200        orkki.Restitution = 0.0;
201        orkki.KineticFriction = 0.0;
202        orkki.Tag = "orkki";
203        //orkki.CollisionIgnoreGroup = 1;
204        orkki.IgnoresCollisionResponse = true;
205        //AddCollisionHandler(orkki, "pelaaja", Tormaaorkkiin);
206        AddCollisionHandler(orkki, "taso", TormaaSeinaan);
207        Add(orkki);
208        //SatunnainenSuunta(orkki);
209
210        FollowerBrain aivot = new FollowerBrain("pelaaja");
211        orkki.Brain = aivot;
212        aivot.Speed = 50.50;
213    }
214
215    void SatunnainenSuunta(PhysicsObject orkki)
216    {
217        Vector nopeus = orkki.Velocity;
218
219        if (orkki.Velocity.X >= 0)
220        {
221            orkki.X -= 2;
222            nopeus = RandomGen.SelectOne(ylos, alas, vasen);
223        }
224        else if (orkki.Velocity.X < 0)
225        {
226            orkki.X += 2;
227            nopeus = RandomGen.SelectOne(ylos, alas, oikea);
228        }
229        //        orkki.Velocity = RandomGen.SelectOne(ylos, alas, vasen, oikea);
230        else if (orkki.Velocity.Y >= 0)
231        {
232            orkki.Y -= 2;
233            nopeus = RandomGen.SelectOne(alas, oikea, vasen);
234        }
235        else if (orkki.Velocity.Y < 0)
236        {
237            orkki.Y += 2;
238            nopeus = RandomGen.SelectOne(ylos, oikea, vasen);
239        }
240        orkki.Stop();
241        orkki.Acceleration = Vector.Zero;
242        orkki.Velocity = nopeus;
243
244
245    }
246
247    void TormaaSeinaan(PhysicsObject orkki, PhysicsObject taso)
248    {
249        SatunnainenSuunta(orkki);
250    }
251
252    void TormaaAvaimeen(PhysicsObject pelaaja, PhysicsObject avain)
253    {
254        avain.Destroy();
255        avaimet++;
256
257        if (avaimet == 3)
258        {
259            kenttaNro++;
260            SeuraavaKentta();
261        }
262    }
263
264    void LuoTaso(Vector paikka, double leveys, double korkeus)
265    {
266        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
267        taso.Position = paikka;
268        Level.BackgroundColor = Color.Black;
269        //taso.Color = new Color(15,3,11);
270        taso.Color = tasoväri;
271        taso.CollisionIgnoreGroup = 1;
272        taso.Restitution = 0.0;
273        taso.Tag = "taso";
274        Add(taso);
275    }
276    void LuoAvain(Vector paikka, double leveys, double korkeus)
277    {
278        PhysicsObject tahti = new PhysicsObject(leveys, korkeus);
279        tahti.IgnoresCollisionResponse = true;
280        tahti.Position = paikka;
281        tahti.Image = avainKuva;
282        tahti.Tag = "avain";
283        Add(tahti, 1);
284    }
285
286    IntMeter pisteLaskuri;
287
288    void LuoPistelaskuri()
289    {
290        pisteLaskuri = new IntMeter(0);
291
292        Label pisteNaytto = new Label();
293        pisteNaytto.X = Screen.Left + 100;
294        pisteNaytto.Y = Screen.Top - 100;
295        pisteNaytto.TextColor = Color.Violet;
296        pisteNaytto.Color = Color.Red;
297
298        pisteNaytto.BindTo(pisteLaskuri);
299        Add(pisteNaytto);
300    }
301    void TormaaOrkkiin(PhysicsObject tormaaja, PhysicsObject kohde)
302    {
303        SeuraavaKentta();
304    }
305}
Note: See TracBrowser for help on using the repository browser.