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

Revision 7360, 8.5 KB checked in by eemjohla, 7 years ago (diff)

Alkuvalikko tehty, lukuunottamatta peliohjeita

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