source: 2018/23/ARNOV/EkaHasuPeli/EkaHasuPeli/EkaHasuPeli.cs @ 9715

Revision 9715, 12.1 KB checked in by arvaara, 20 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using Jypeli;
5using Jypeli.Assets;
6using Jypeli.Controls;
7using Jypeli.Widgets;
8
9public class EkaHasuPeli : PhysicsGame
10{
11    const int NOPEUS = 1500;
12    const int RUUDUN_KOKO = 30;
13    Image pelaajakuva = LoadImage("pelaaja");
14    Image seina = LoadImage("seina");
15    Image alkuteksti = LoadImage("alkuteksti");
16    Image orkkikuva = LoadImage("orkki");
17    Image avainkuva = LoadImage("avain");
18    Image piilokuva = new Image(30, 30, Color.Darker(Color.DarkGray, 2));
19    Image avainpala = LoadImage("avainpala");
20    SoundEffect orkkiaani = LoadSoundEffect("orkkiaani");
21    PhysicsObject ovi;
22    PhysicsObject tahti;
23    PhysicsObject pelaaja;
24    PhysicsObject lopeta;
25    PhysicsObject este;
26    PhysicsObject avain;
27    PhysicsObject piilo;
28    PhysicsObject piilotahti;
29    PhysicsObject piilo2;
30    PhysicsObject piiloavain;
31    PhysicsObject este2;
32    int valikko = 0;
33    int tahtia = 0;
34    IntMeter pistelaskuri;
35   
36    public override void Begin()
37    {
38       
39        PaaValikko();
40
41       
42        //Keyboard.Listen(Key.Escape, ButtonState.Pressed, PauseValikko, "Lopeta peli");
43    }
44    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
45    {
46        pelaaja = new PhysicsObject(25, 25);
47        //pelaaja.Color = Color.Blue;
48        pelaaja.Image = pelaajakuva;
49        pelaaja.Shape = Shape.Circle;
50        pelaaja.AngularDamping = 0.96;
51        pelaaja.LinearDamping = 0.96;
52        AddCollisionHandler(pelaaja, "tahti", PelaajaSaaTahden);
53        AddCollisionHandler(pelaaja, "lopeta", PeliLoppuu);
54        AddCollisionHandler(pelaaja, "avain", OtaAvain);
55        AddCollisionHandler(pelaaja, "piilo", AvaaPiilo);
56        AddCollisionHandler(pelaaja, "avain2", OtaAvain2);
57        AddCollisionHandler(pelaaja, "orkki", Havisit);
58        pelaaja.Position = paikka;
59       
60        Add(pelaaja);
61       
62    }
63    void LuoOrkki(Vector paikka, double leveys, double korkeus)
64    {
65        PhysicsObject orkki = new PhysicsObject(leveys, korkeus);
66        orkki.Position = paikka;
67        orkki.Image = orkkikuva;
68        orkki.AngularDamping = 0.96;
69        orkki.Shape = Shape.Circle;
70        orkki.Tag = "orkki";
71       
72        Add(orkki);
73    }
74    void AivotPaalle()
75    {
76
77        foreach (var morko in GetObjectsWithTag("orkki"))
78        {
79            RandomMoverBrain randomaivot = new RandomMoverBrain();
80            FollowerBrain orkkiaivot = new FollowerBrain(pelaaja);
81            orkkiaivot.DistanceFar = 400;
82            orkkiaivot.FarBrain = randomaivot;
83            orkkiaivot.DistanceClose = 200;
84            orkkiaivot.DistanceToTarget.AddTrigger(200, TriggerDirection.Down, Orise);
85            orkkiaivot.Speed = 110.0;
86            morko.Brain = orkkiaivot;
87        }
88    }
89    void Orise()
90    {
91        orkkiaani.Play();
92    }
93    void PauseValikko()
94    {
95        MultiSelectWindow pausevalikko = new MultiSelectWindow("Pause", "Jatka Peliä", "Päävalikko", "Lopeta Peli");
96        pausevalikko.AddItemHandler(1, PaaValikko);
97        pausevalikko.AddItemHandler(2, LopetaPeli);
98        pausevalikko.SetButtonTextColor(Color.DarkGreen);
99        pausevalikko.Color = Color.DarkGray;
100        pausevalikko.BorderColor = Color.DarkGreen;
101       
102        Add(pausevalikko);
103
104       
105    }
106    void PaaValikko()
107    {
108        ClearAll();
109        Level.BackgroundColor = Color.DarkGray;
110        MultiSelectWindow paavalikko = new MultiSelectWindow(" ", "Aloita Peli", "Lopeta");
111        PhysicsObject teksti = PhysicsObject.CreateStaticObject(1000, 500);
112        teksti.Image = alkuteksti;
113        teksti.X = Screen.Left + 510;
114        teksti.Y = Screen.Top - 200;
115        paavalikko.AddItemHandler(0, AloitaUudelleen);
116        paavalikko.AddItemHandler(1, LopetaPeli);
117        paavalikko.Color = Color.DarkGray;
118        paavalikko.SetButtonTextColor(Color.DarkGreen);
119        Add(teksti);
120        Add(paavalikko);
121        MediaPlayer.Play("taustamusa");
122        MediaPlayer.IsRepeating = true;
123    }
124    void LuoKentta()
125    {
126        // Luo Kentän
127        Level.BackgroundColor = Color.DarkGray;
128        TileMap ruudut = TileMap.FromLevelAsset("kentta");
129        ruudut.SetTileMethod('#', LuoPalikka, seina);
130        ruudut.SetTileMethod('P', LuoPelaaja);
131        ruudut.SetTileMethod('D', LuoOvi);
132        ruudut.SetTileMethod('*', LuoTahti);
133        ruudut.SetTileMethod('T', Lopeta);
134        ruudut.SetTileMethod('E', LuoEste);
135        ruudut.SetTileMethod('A', LuoAvain);
136        ruudut.SetTileMethod('I', LuoPiilo);
137        ruudut.SetTileMethod('M', LuoEste2);
138        ruudut.SetTileMethod('S', LuoOvi2);
139        ruudut.SetTileMethod('N', LuoPiilo2);
140       
141        ruudut.SetTileMethod('O', LuoOrkki);
142        ruudut.Optimize('D');
143        ruudut.Optimize('E');
144        ruudut.Optimize('M');
145
146
147        ruudut.Execute(30, 30);
148        Camera.Follow(pelaaja);
149        Camera.Zoom(1.8);
150        Timer.SingleShot(0.5, AivotPaalle);
151
152    }
153    void Ohjaimet()
154    {
155        // Ohjaimet
156        Keyboard.Listen(Key.Up, ButtonState.Down,
157           LiikutaPelaajaa, null, new Vector(0, NOPEUS));
158        Keyboard.Listen(Key.Down, ButtonState.Down,
159           LiikutaPelaajaa, null, new Vector(0, -NOPEUS));
160        Keyboard.Listen(Key.Left, ButtonState.Down,
161           LiikutaPelaajaa, null, new Vector(-NOPEUS, 0));
162        Keyboard.Listen(Key.Right, ButtonState.Down,
163           LiikutaPelaajaa, null, new Vector(NOPEUS, 0));
164        Keyboard.Listen(Key.Escape, ButtonState.Pressed, PauseValikko, "Lopeta peli");
165    }
166    void LiikutaPelaajaa(Vector vektori)
167    {
168        //Liikuttaa Pelaajaa
169        pelaaja.Push(vektori);
170    }
171    void LuoPalikka(Vector paikka, double leveys, double korkeus, Image kuva)
172    {
173        // Tekee Kentän Seinät
174        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
175        palikka.Position = paikka;
176        palikka.Shape = Shape.Rectangle;
177        palikka.Image = kuva;
178        palikka.Restitution = 0.1;
179        Add(palikka);
180    }
181    void LuoOvi(Vector paikka, double leveys, double korkeus)
182    {
183        //Tekee oven
184        ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
185        ovi.Position = paikka;
186        ovi.Shape = Shape.Rectangle;
187        ovi.Color = Color.Brown;
188        ovi.Restitution = 0.1;
189        Add(ovi);
190    }
191    void LuoOvi2(Vector paikka,double leveys,double korkeus)
192    {
193        PhysicsObject ovi2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
194        ovi2.Position = paikka;
195        ovi2.Color = Color.Brown;
196        Add(ovi2);
197    }
198    void LuoEste(Vector paikka, double leveys, double korkeus)
199    {
200        //Luo Esteen Tähden Eteen
201        este = PhysicsObject.CreateStaticObject(leveys, korkeus);
202        este.Position = paikka;
203        este.Color = Color.Brown;
204        este.Restitution = 0.1;
205        Add(este);
206    }
207    void LuoEste2(Vector paikka, double leveys, double korkeus)
208    {
209        //Luo Esteen Tähden Eteen
210        este2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
211        este2.Position = paikka;
212        este2.Color = Color.Brown;
213        este2.Restitution = 0.1;
214        Add(este2);
215    }
216
217    void LuoTahti(Vector paikka, double leveys, double korkeus)
218    {
219        //Luo Tähdet
220        tahti = PhysicsObject.CreateStaticObject(20, 20);
221        tahti.Position = paikka;
222
223        tahti.Image = avainpala;
224        tahti.Tag = "tahti";
225        Add(tahti);
226    }
227    void LuoPiilo(Vector paikka, double leveys, double korkeus)
228    {
229        //Luo Piilotetut esineet
230        piilo = PhysicsObject.CreateStaticObject(leveys, korkeus);
231        piilo.Position = paikka;
232        piilo.Image = piilokuva;
233        piilo.Tag = "piilo";
234        piilotahti = new PhysicsObject(20, 20);
235        piilotahti.Position = paikka;
236        piilotahti.Image = avainpala;
237       
238        piilotahti.Tag = "tahti";
239        Add(piilotahti);
240        Add(piilo);
241    }
242    void LuoPiilo2(Vector paikka, double leveys, double korkeus)
243    {
244        piilo2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
245        piilo2.Image = piilokuva;
246        piilo2.Position = paikka;
247        piilo2.Tag = "piilo";
248        piiloavain = new PhysicsObject(20, 20);
249        piiloavain.Position = paikka;
250        piiloavain.Image = avainkuva;
251        piiloavain.Shape = Shape.Diamond;
252        piiloavain.Tag = "avain2";
253        Add(piiloavain);
254        Add(piilo2);
255    }
256    void LuoAvain(Vector paikka, double leveys, double korkeus)
257    {
258        //Luo Avaimen
259        avain = PhysicsObject.CreateStaticObject(20, 20);
260        avain.Position = paikka;
261        avain.Shape = Shape.Diamond;
262        avain.Image = avainkuva;
263        avain.Tag = "avain";
264        Add(avain);
265    }
266    void PelaajaSaaTahden(PhysicsObject pelaaja, PhysicsObject kohde)
267    {
268        //Rekisteröi Kun Pelaaja Saa Tähden Ja Avaa Oven Kun Tähtiä On 4
269        kohde.Destroy();
270        tahtia = tahtia + 1;
271        pistelaskuri.Value += 1;
272        if (tahtia == 10)
273        {
274            ovi.Destroy();
275            MessageDisplay.Add("Voit Nyt Mennä Ovesta");
276        }
277        else
278        {
279            MessageDisplay.Add("Sait Avaimen Palasen");
280        }
281       
282    }
283    void OtaAvain(PhysicsObject pelaaja, PhysicsObject kohde)
284    {
285        //Ottaa Avaimen
286        kohde.Destroy();
287        este.Destroy();
288        MessageDisplay.Add("Sait Avaimen, Nyt Pääset Esteen Läpi");
289    }
290    void OtaAvain2(PhysicsObject pelaaja, PhysicsObject kohde)
291    {
292        kohde.Destroy();
293        este2.Destroy();
294        MessageDisplay.Add("Sait Avaimen, Nyt Pääset Esteen Läpi");
295    }
296    void AvaaPiilo(PhysicsObject pelaaja, PhysicsObject kohde)
297    {
298        kohde.Destroy();
299        MessageDisplay.Add("Avasit Piilon");
300    }
301    void LuoPisteLaskuri()
302    {
303        pistelaskuri = new IntMeter(0);
304        Label pisteNaytto = new Label();
305        pisteNaytto.X = Screen.Right - 150;
306        pisteNaytto.Y = Screen.Top - 50;
307        pisteNaytto.TextColor = Color.White;
308       
309        pisteNaytto.Title = "Tähtiä";
310        pisteNaytto.BindTo(pistelaskuri);
311        Add(pisteNaytto);
312       
313       
314    }
315    void Havisit(PhysicsObject pelaaja, PhysicsObject kohde)
316    {
317       
318        ClearAll();
319        MultiSelectWindow haviovalikko = new MultiSelectWindow("Hävisit", "Pelaa Uudelleen","Päävalikko", "Lopeta Peli");
320        haviovalikko.AddItemHandler(0, AloitaUudelleen);
321        haviovalikko.AddItemHandler(1, PaaValikko);
322        haviovalikko.AddItemHandler(2, LopetaPeli);
323        haviovalikko.Color = Color.DarkGray;
324        haviovalikko.SetButtonTextColor(Color.DarkGreen);
325        Add(haviovalikko);
326    }
327    void Lopeta(Vector paikka, double leveys, double korkeus)
328    {
329        //Tekee lopetus tunnistimet
330        lopeta = PhysicsObject.CreateStaticObject(30, 30);
331        lopeta.Position = paikka;
332        lopeta.Color = Color.DarkGray;
333        lopeta.Tag = "lopeta";
334        Add(lopeta);
335    }
336    void PeliLoppuu(PhysicsObject pelaaja, PhysicsObject kohde)
337    {
338        //Avaa Loppuvalikon
339        ClearAll();
340        if (valikko == 0)
341        {
342           
343            MultiSelectWindow loppuvalikko = new MultiSelectWindow("Voitit!","Pelaa Uudelleen", "Päävalikko", "Lopeta Peli");
344            loppuvalikko.Color = Color.DarkGray;
345            loppuvalikko.SetButtonTextColor(Color.DarkGreen);
346            Add(loppuvalikko);
347            loppuvalikko.AddItemHandler(2, LopetaPeli);
348            loppuvalikko.AddItemHandler(1, PaaValikko);
349            loppuvalikko.AddItemHandler(0, AloitaUudelleen);
350
351            valikko = 1;
352        }
353       
354    }
355   
356    void LopetaPeli()
357    {
358        //Sulkee Pelin
359        Exit();
360    }
361    void AloitaUudelleen()
362    {
363        //Aloittaa Pelin Alusta
364        ClearAll();
365        LuoKentta();
366        Ohjaimet();
367        LuoPisteLaskuri();
368        Add(MessageDisplay);
369        tahtia = 0;
370        valikko = 0;
371        MessageDisplay.Clear();
372       
373    }
374   
375}
Note: See TracBrowser for help on using the repository browser.