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

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