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

Revision 7361, 8.9 KB checked in by eemjohla, 3 years ago (diff)

Ennen ruokailua: tekstikenttä lisätty myös, mutta siitä ei pääse pois

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 = 300;
12    const double hyppyNopeus = 750;
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        //DataStorage.Delete("pisteet.xml");
70
71
72        Camera.Follow(Papukaija);
73        Camera.ZoomFactor = 1.2;
74        Camera.StayInLevel = true;
75    }
76    void LuoKentta()
77    { 
78        TileMap kentta = TileMap.FromLevelAsset("kentta1");
79        kentta.SetTileMethod('#', LisaaTaso);
80        kentta.SetTileMethod('*', LisaaKirsikka);
81        kentta.SetTileMethod('N', LisaaPelaaja);
82        kentta.SetTileMethod('V' ,LisaaPahis);
83        kentta.SetTileMethod('A', LisaaAivoPahis);
84        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
85        Level.CreateBorders();
86        Level.Background.Image = LoadImage("Taustakuva");
87
88    } 
89       
90    void LisaaTaso(Vector paikka, double leveys, double korkeus)
91    { 
92        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus / 2);
93        taso.Position = paikka;
94        taso.Color = RandomGen.NextColor();
95        Add(taso);
96    } 
97       
98    void LisaaKirsikka(Vector paikka, double leveys, double korkeus)
99    { 
100        PhysicsObject kirsikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
101        kirsikka.IgnoresCollisionResponse = true;
102        kirsikka.Position = paikka;
103        kirsikka.Image = Kirsikat;
104        kirsikka.Tag = "tahti";
105        Add(kirsikka);
106        pisteLaskuri.Value += 1;
107    } 
108       
109    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
110    { 
111        Papukaija = new PlatformCharacter(leveys, korkeus);
112        Papukaija.Position = paikka;
113        Papukaija.Tag = "Kaija";
114        Papukaija.Mass = 4.0;
115        Papukaija.Image = LoadImage("PelaajaValmis");
116        AddCollisionHandler(Papukaija, "tahti", TormaaTahteen);
117        AddCollisionHandler(Papukaija, "Vihollinen", TörmääViholliseen);
118        AddCollisionHandler(Papukaija, "Aivot", TörmääAivoihin);
119        Add(Papukaija);
120    } 
121       
122    void LisaaNappaimet()
123    { 
124        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
125        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
126       
127        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Papukaija, -1.0);
128        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Papukaija, 1.0);
129        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Papukaija, hyppyNopeus);
130
131        Keyboard.Listen(Key.F2, ButtonState.Pressed, Nopeuta, null, 1500.0);
132        Keyboard.Listen(Key.F2, ButtonState.Released, Nopeuta, null, 300.0);
133       
134        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
135       
136        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", Papukaija, -1.0);
137        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", Papukaija, 1.0);
138        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Papukaija, hyppyNopeus);
139
140 
141       
142        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
143    } 
144       
145    void Liikuta(PlatformCharacter hahmo, double suunta)
146    {
147        hahmo.Walk(nopeus*suunta);
148    } 
149       
150    void Hyppaa(PlatformCharacter hahmo, double nopeus)
151    { 
152        hahmo.Jump(nopeus);
153    } 
154       
155    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
156    { 
157        maaliAani.Play();
158        MessageDisplay.Add("Sait pisteeen!");
159        tahti.Destroy();
160        pisteLaskuri.Value -= 1;
161    } 
162       
163    void LisaaPahis(Vector paikka, double leveys, double korkeus)
164    { 
165        PlatformCharacter Pahis = new PlatformCharacter(leveys, korkeus);
166        Pahis.Tag = "Vihollinen";
167        Pahis.Position = paikka;
168        Pahis.Image = LoadImage("pirate2");
169        Add(Pahis);
170        PlatformWandererBrain aivot = new PlatformWandererBrain();
171        Pahis.Brain = aivot;
172       
173    } 
174       
175    void TörmääViholliseen(PhysicsObject pelaaja, PhysicsObject vihollinen)
176    { 
177        pelaaja.Destroy();
178        Timer.SingleShot(2.5, AloitaAlusta);
179        //AloitaAlusta();
180    } 
181
182    void TörmääAivoihin(PhysicsObject pelaaja, PhysicsObject aivot)
183    {
184        osumat++;
185        if(osumat > 5)
186        {
187            pelaaja.Destroy();
188            AloitaAlusta();
189        }
190    }
191
192    void NaytaVoittoviesti()
193    {
194        MessageDisplay.Add("Hienoa! Voitit.");
195        ParhaatPisteet();
196    }
197       
198       
199    void LuoPisteLaskuri()
200    { 
201        pisteLaskuri = new IntMeter(0);
202       
203        pisteLaskuri.LowerLimit += NaytaVoittoviesti;
204       
205        Label pisteNaytto = new Label();
206        pisteNaytto.X = Screen.Left + 100;
207        pisteNaytto.Y = Screen.Top - 100;
208        pisteNaytto.TextColor = Color.DarkGreen;
209        pisteNaytto.Color = Color.DarkOrange;
210       
211        pisteNaytto.BindTo(pisteLaskuri);
212        Add(pisteNaytto);
213    } 
214    void AloitaAlusta()
215    {
216        osumat = 0;
217        ClearAll();
218        Begin();
219    } 
220       
221    void LisaaAivoPahis(Vector paikka, double leveys, double korkeus)
222    { 
223       PhysicsObject AivoPahis = new PhysicsObject(leveys, korkeus);
224       AivoPahis.Tag = "Aivot";
225       AivoPahis.Position = paikka;
226       AivoPahis.Image = LoadImage("Golden_Angel_Wings");
227       FollowerBrain aivot = new FollowerBrain("Kaija");
228       AivoPahis.Brain = aivot;
229       aivot.Active = true;
230       aivot.Speed = 40;
231       Add(AivoPahis);
232       Keyboard.Listen(Key.X, ButtonState.Pressed, delegate { aivot.Active = true; }, null);
233    } 
234       
235    void LuoAikaLaskuri()
236    { 
237        aikaLaskuri = new Timer();
238        aikaLaskuri.Start();
239       
240        Label aikaNaytto = new Label();
241        aikaNaytto.Position = new Vector(200.0, 200.0);
242        aikaNaytto.TextColor =  Color.Gold;
243        aikaNaytto.DecimalPlaces = 1;
244        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
245        Add(aikaNaytto);
246    }
247
248    void Nopeuta(double nopeus)
249    {
250        this.nopeus = nopeus;
251    }
252
253    void ParhaatPisteet()
254    {
255
256        HighScoreWindow topIkkuna = new HighScoreWindow(
257            "Parhaat pisteet",
258            "Onneksi olkoon, pääsit parhaiden pelaajien listaalle %p! Syötä nimesi, ole hyvä:",
259            topLista, aikaLaskuri.SecondCounter.Value);
260        topIkkuna.List.ScoreFormat = "{0:0.00}";
261        topIkkuna.Closed += TallennaPisteet;
262        topIkkuna.Closed += delegate(Window a) { AloitaAlusta(); };
263     
264        Add(topIkkuna);       
265    }
266
267    void NaytaParhaatPisteet()
268    {
269        HighScoreWindow topIkkuna = new HighScoreWindow(
270            "Parhaat pisteet",
271            topLista);
272        topIkkuna.Closed += delegate(Window a) { AlkuValikko(); };
273        Add(topIkkuna);
274    }
275
276    void TallennaPisteet(Window sender)
277    {
278        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
279    }
280
281    void PeliOhjeet()
282    {
283        Label tekstikentta = new Label("Pelin tarkoitus on auttaa papukaijaa keräämään kaikki kirsikat, ja samalla väistellä merirovoja, jotka koettavat napata sen. ");
284        Add(tekstikentta);
285        Label tekstikentta2 = new Label("Varo erityisen tarkkaan fysiikan lakien vastaisesti liikkuvaa merirosvoa, jolla on kultaiset siivet!");
286        Add(tekstikentta2);
287        tekstikentta2.Y = -25;
288    }
289
290   
291}
292   
293   
294   
Note: See TracBrowser for help on using the repository browser.