source: 2016/24/EemeliL/JumpingOnPlatforms/JumpingOnPlatforms/JumpingOnPlatforms/JumpingOnPlatforms.cs @ 7445

Revision 7445, 10.1 KB checked in by eemjohla, 4 years ago (diff)

17.6. Muutoksia muutoksia...

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class JumpingOnPlatforms  : PhysicsGame
10{
11    double nopeus = 500;
12    double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter Papukaija;
16    IntMeter pisteLaskuri;
17
18    int osumat = 0;
19    ScoreList topLista = new ScoreList(10, true, 1000);
20
21    Timer aikaLaskuri;
22
23
24    Image pelaajanKuva = LoadImage("PelaajaVAlmis");
25    Image Kirsikat = LoadImage("Kirsikat");
26
27    SoundEffect maaliAani = LoadSoundEffect("maali");
28
29    public override void Begin()
30    {
31       AlkuValikko();
32       
33    } 
34     
35    void AlkuValikko()
36    {
37        ClearAll();
38
39        //DataStorage.Delete("pisteet.xml");
40
41        topLista = DataStorage.TryLoad<ScoreList>(topLista, "pisteet.xml");
42
43       
44
45        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
46          "Aloita peli", "Parhaat pisteet", "Peliohjeet", "Lopeta");
47
48        alkuValikko.Color = Color.Gold;
49
50        alkuValikko.AddItemHandler(0, AloitaPeli);
51        alkuValikko.AddItemHandler(1, NaytaParhaatPisteet);
52        alkuValikko.AddItemHandler(2, PeliOhjeet);
53        alkuValikko.AddItemHandler(3, Exit);
54
55        Add(alkuValikko);
56
57       
58    }
59     
60    void AloitaPeli()
61    {
62        Gravity = new Vector(0, -1000);
63
64        LuoPisteLaskuri();
65        LuoKentta();
66        LisaaNappaimet();
67        LuoAikaLaskuri();
68
69        IsMouseVisible = false;
70
71        //DataStorage.Delete("pisteet.xml");
72
73
74        Camera.Follow(Papukaija);
75        Camera.ZoomFactor = 1.2;
76        Camera.StayInLevel = true;
77    }
78    void LuoKentta()
79    { 
80        TileMap kentta = TileMap.FromLevelAsset("kentta1");
81        kentta.SetTileMethod('#', LisaaTaso);
82        kentta.SetTileMethod('*', LisaaKirsikka);
83        kentta.SetTileMethod('N', LisaaPelaaja);
84        kentta.SetTileMethod('V' ,LisaaPahis);
85        kentta.SetTileMethod('A', LisaaAivoPahis);
86        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
87        Level.CreateBorders();
88        Level.Background.Image = LoadImage("Taustakuva");
89
90    } 
91       
92    void LisaaTaso(Vector paikka, double leveys, double korkeus)
93    { 
94        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus / 2);
95        taso.Position = paikka;
96        taso.Color = RandomGen.NextColor();
97            //(Color.Blue, Color.Red, Color.HotPink, Color.OrangeRed, Color.Orange, Color.RosePink, Color.Black, Color.White, Color.Violet, Color.Yellow, Color.YellowGreen);
98        Add(taso);
99    } 
100       
101    void LisaaKirsikka(Vector paikka, double leveys, double korkeus)
102    { 
103        PhysicsObject kirsikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
104        kirsikka.IgnoresCollisionResponse = true;
105        kirsikka.Position = paikka;
106        kirsikka.Image = Kirsikat;
107        kirsikka.Tag = "tahti";
108        Add(kirsikka);
109        pisteLaskuri.Value += 1;
110    } 
111       
112    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
113    { 
114        Papukaija = new PlatformCharacter(leveys, korkeus);
115        Papukaija.Position = paikka;
116        Papukaija.Tag = "Kaija";
117        Papukaija.Mass = 4.0;
118        Papukaija.Image = LoadImage("PelaajaValmis");
119        AddCollisionHandler(Papukaija, "tahti", TormaaTahteen);
120        AddCollisionHandler(Papukaija, "Vihollinen", TörmääViholliseen);
121        AddCollisionHandler(Papukaija, "Aivot", TörmääAivoihin);
122        Add(Papukaija);
123    } 
124       
125    void LisaaNappaimet()
126    { 
127        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
128        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
129       
130        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Papukaija, -1.0);
131        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Papukaija, 1.0);
132        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Papukaija);
133
134        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaAlusta, "Aloita peli alusta");
135
136        //Keyboard.Listen(Key.P, ButtonState.Pressed, Nopeuta, null, 2000.0);       
137        //Keyboard.Listen(Key.N, ButtonState.Pressed, Nopeuta, null, 300.0);
138        //Keyboard.Listen(Key.S, ButtonState.Pressed, Nopeuta, null, 30.0);
139        //
140        //Keyboard.Listen(Key.J, ButtonState.Pressed, NopeutaHyppy, null, 3000.0);
141        //Keyboard.Listen(Key.H, ButtonState.Pressed, NopeutaHyppy, null, 800.0);
142       
143        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
144       
145        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", Papukaija, -1.0);
146        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", Papukaija, 1.0);
147        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Papukaija);
148
149        ControllerOne.Listen(Button.LeftTrigger, ButtonState.Pressed, Nopeuta, null, 2000.0);
150        ControllerOne.Listen(Button.LeftTrigger, ButtonState.Released, Nopeuta, null, 300.0);
151
152        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.01, LiikutaTatilla, null, Papukaija);
153
154       
155
156
157
158        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
159    } 
160     
161    void LiikutaTatilla(AnalogState tila,PlatformCharacter hahmo)
162
163    {
164        Liikuta(hahmo, tila.StateVector.X);
165
166    }
167         
168    void Liikuta(PlatformCharacter hahmo, double suunta)
169    {
170        hahmo.Walk(nopeus*suunta);
171    } 
172       
173    void Hyppaa(PlatformCharacter hahmo)
174    { 
175        hahmo.Jump(hyppyNopeus);
176
177    } 
178       
179    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
180    { 
181        maaliAani.Play();
182        MessageDisplay.Add("Sait pisteeen!");
183        tahti.Destroy();
184        pisteLaskuri.Value -= 1;
185    } 
186       
187    void LisaaPahis(Vector paikka, double leveys, double korkeus)
188    { 
189        PlatformCharacter Pahis = new PlatformCharacter(leveys, korkeus);
190        Pahis.Tag = "Vihollinen";
191        Pahis.Position = paikka;
192        Pahis.Image = LoadImage("pirate2");
193        Add(Pahis);
194        PlatformWandererBrain aivot = new PlatformWandererBrain();
195        Pahis.Brain = aivot;
196       
197    } 
198       
199    void TörmääViholliseen(PhysicsObject pelaaja, PhysicsObject vihollinen)
200    { 
201        pelaaja.Destroy();
202        Timer.SingleShot(2.5, AloitaAlusta);
203        //AloitaAlusta();
204    } 
205
206    void TörmääAivoihin(PhysicsObject pelaaja, PhysicsObject aivot)
207    {
208        osumat++;
209        if(osumat > 5)
210        {
211            pelaaja.Destroy();
212            AloitaAlusta();
213        }
214    }
215
216    void NaytaVoittoviesti()
217    {
218        MessageDisplay.Add("Hienoa! Voitit.");
219        ParhaatPisteet();
220    }
221       
222       
223    void LuoPisteLaskuri()
224    { 
225        pisteLaskuri = new IntMeter(0);
226       
227        pisteLaskuri.LowerLimit += NaytaVoittoviesti;
228       
229        Label pisteNaytto = new Label();
230        pisteNaytto.X = Screen.Left + 100;
231        pisteNaytto.Y = Screen.Top - 100;
232        pisteNaytto.TextColor = Color.DarkGreen;
233        pisteNaytto.Color = Color.DarkOrange;
234       
235        pisteNaytto.BindTo(pisteLaskuri);
236        Add(pisteNaytto);
237    } 
238    void AloitaAlusta()
239    {
240        osumat = 0;
241        ClearAll();
242        Begin();
243    } 
244       
245    void LisaaAivoPahis(Vector paikka, double leveys, double korkeus)
246    { 
247       PhysicsObject AivoPahis = new PhysicsObject(leveys, korkeus);
248       AivoPahis.Tag = "Aivot";
249       AivoPahis.Position = paikka;
250       AivoPahis.Image = LoadImage("Golden_Angel_Wings");
251       FollowerBrain aivot = new FollowerBrain("Kaija");
252       AivoPahis.Brain = aivot;
253       aivot.Active = true;
254       aivot.Speed = 30;
255       Add(AivoPahis);
256       Keyboard.Listen(Key.X, ButtonState.Pressed, delegate { aivot.Active = true; }, null);
257    } 
258       
259    void LuoAikaLaskuri()
260    { 
261        aikaLaskuri = new Timer();
262        aikaLaskuri.Start();
263       
264        Label aikaNaytto = new Label();
265        aikaNaytto.Position = new Vector(200.0, 200.0);
266        aikaNaytto.TextColor =  Color.Gold;
267        aikaNaytto.DecimalPlaces = 1;
268        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
269        Add(aikaNaytto);
270    }
271
272    void Nopeuta(double nopeus)
273    {
274        this.nopeus = nopeus;
275    }
276
277    void NopeutaHyppy(double hyppyNopeus)
278    {
279        this.hyppyNopeus = hyppyNopeus;
280    }
281
282    void ParhaatPisteet()
283    {
284
285        HighScoreWindow topIkkuna = new HighScoreWindow(
286            "Parhaat pisteet",
287            "Onneksi olkoon, pääsit parhaiden pelaajien listaalle %p! Syötä nimesi, ole hyvä:",
288            topLista, aikaLaskuri.SecondCounter.Value);
289        topIkkuna.List.ScoreFormat = "{0:0.00}";
290        topIkkuna.Closed += TallennaPisteet;
291        topIkkuna.Closed += delegate(Window a) { AloitaAlusta(); };
292     
293        Add(topIkkuna);       
294    }
295
296    void NaytaParhaatPisteet()
297    {
298        HighScoreWindow topIkkuna = new HighScoreWindow(
299            "Parhaat pisteet",
300            topLista);
301        topIkkuna.Closed += delegate(Window a) { AlkuValikko(); };
302        Add(topIkkuna);
303    }
304
305    void TallennaPisteet(Window sender)
306    {
307        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
308    }
309
310    void PeliOhjeet()
311    {
312        Label tekstikentta = new Label("Pelin tarkoitus on auttaa papukaijaa keräämään kaikki kirsikat, ja samalla väistellä merirovoja, jotka koettavat napata sen. ");
313        Add(tekstikentta);
314        Label tekstikentta2 = new Label("Varo erityisen tarkkaan fysiikan lakien vastaisesti liikkuvaa merirosvoa, jolla on kultaiset siivet!");
315        Add(tekstikentta2);
316        tekstikentta2.Y = -25;
317
318        PushButton Nappain = new PushButton("Sulje");
319        Nappain.Position = new Vector(0, -200);
320        Add(Nappain);
321        Nappain.Clicked += AlkuValikko;
322
323        IsMouseVisible = true;
324
325    }
326   
327}
328   
329   
330   
Note: See TracBrowser for help on using the repository browser.