source: 2013/24/NataliaP/omenajahti/omenajahti/omenajahti/omenajahti.cs @ 4161

Revision 4161, 9.4 KB checked in by naperiai, 7 years ago (diff)

Talletus.

Line 
1
2using System;
3using System.Collections.Generic;
4using Jypeli;
5using Jypeli.Assets;
6using Jypeli.Controls;
7using Jypeli.Effects;
8using Jypeli.Widgets;
9
10public class omenajahti : PhysicsGame
11{
12    int kenttaNro = 1;
13    ScoreList topLista = new ScoreList(10, false, 0);
14    const double nopeus = 400;
15    const double hyppyNopeus = 750;
16    const int RUUDUN_KOKO = 40;
17
18    DoubleMeter elamaLaskuri;
19    IntMeter pisteLaskuri;
20
21    PlatformCharacter pelaaja1;
22
23    Image pelaajanKuva = LoadImage("pig3");
24    Image omenaKuva = LoadImage("omena");
25    Image piikkiKuva = LoadImage("piikki");
26    Image angrybirdsKuva = LoadImage("angry birds photo");
27    Image goldeneggKuva = LoadImage("golden egg");
28   
29    SoundEffect maaliAani = LoadSoundEffect("maali");
30   
31
32    public override void Begin()
33    {
34        topLista = DataStorage.TryLoad<ScoreList>(topLista, "pisteet.xml");
35        SetWindowSize(1024, 768, true);
36        Level.Background.Image = LoadImage("angry birds photo");
37        Level.Background.FitToLevel();
38        Level.BackgroundColor = Color.White;
39        Camera.ZoomToLevel();
40        SmoothTextures = true;
41        Alkuvalikko();
42        MediaPlayer.Play("angry birds theme song");
43        MediaPlayer.IsRepeating = true;
44
45    }
46
47    void Alkuvalikko()
48    {
49        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
50"Aloita peli", "Parhaat pisteet", "Lopeta");
51        Add(alkuValikko);
52        alkuValikko.AddItemHandler(0, AloitaPeli);
53        alkuValikko.AddItemHandler(1, ParhaatPisteet);
54        alkuValikko.AddItemHandler(2, Exit);
55    }
56
57    void AloitaPeli()
58    {
59        SeuraavaKentta();
60    }
61
62    void SeuraavaKentta()
63    {
64        ClearAll();
65
66        Gravity = new Vector(0, -1000);
67        LuoPistelaskuri();
68        if (kenttaNro == 1) LuoKentta("kentta1");
69        else if (kenttaNro == 2) LuoKentta("kentta2");
70        else if (kenttaNro == 3) LuoKentta("kentta3");
71        else if (kenttaNro == 4) LuoKentta("kentta4");
72        else if (kenttaNro == 5) LuoKentta("kentta5");
73        else if (kenttaNro == 6) LuoKentta("kentta6");
74        else if (kenttaNro == 7) LuoKentta("kentta7");
75        else if (kenttaNro == 8) LuoKentta("kentta8");
76        else if (kenttaNro == 9) LuoKentta("kentta9");
77        else if (kenttaNro == 10) LuoKentta("kentta10");
78        else if (kenttaNro > 10)
79        {
80            Level.Background.Image = goldeneggKuva;
81            Level.Background.FitToLevel();
82            Label tekstikentta = new Label("Läpäisit pelin!!! mahtavaa!!!");
83            Add(tekstikentta);
84            //Exit();
85        }
86
87       
88    }
89
90    void LuoKentta(string kenttaTiedostonNimi)
91    {
92        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
93        kentta.SetTileMethod('#', LisaaTaso);
94        kentta.SetTileMethod('O', LisaaOmena);
95        kentta.SetTileMethod('N', LisaaPelaaja);
96        kentta.SetTileMethod('M', LisaaMaali);
97        kentta.SetTileMethod('P', LisaaPiikki);
98        kentta.SetTileMethod('!', LisaaLoppuMaali);
99        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
100        Level.CreateBorders();
101        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
102
103        LisaaNappaimet();
104        LuoElamaLaskuri();
105
106        Camera.Follow(pelaaja1);
107        Camera.StayInLevel = true;
108        Camera.ZoomTo(pelaaja1.X, Level.Bottom, pelaaja1.X, Level.Top);
109
110    }
111
112    void LisaaTaso(Vector paikka, double leveys, double korkeus)
113    {
114        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
115        taso.Position = paikka;
116        taso.Color = Color.DarkBrown;
117        Add(taso);
118    }
119    void LisaaMaali(Vector paikka, double leveys, double korkeus)
120    {
121        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
122        maali.Position = paikka;
123        maali.Color = Color.Black;
124        maali.Tag = "maali";
125        Add(maali);
126    }
127
128    void LisaaLoppuMaali(Vector paikka,double leveys, double korkeus)
129    {
130        PhysicsObject loppumaali = PhysicsObject.CreateStaticObject(leveys, korkeus);
131        loppumaali.Position = paikka;
132        loppumaali.Color = Color.Red;
133        loppumaali.Tag = "loppumaali";
134        Add(loppumaali);
135    }
136
137    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
138    {
139        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
140        //piikki.IgnoresCollisionResponse = true;
141        piikki.Position = paikka;
142        piikki.Image = piikkiKuva;
143        piikki.Tag = "piikki";
144        Add(piikki);
145    }
146
147    void LisaaOmena(Vector paikka, double leveys, double korkeus)
148    {
149        PhysicsObject omena = PhysicsObject.CreateStaticObject(leveys, korkeus);
150        //omena.IgnoresCollisionResponse = true;
151        omena.Position = paikka;
152        omena.Image = omenaKuva;
153        omena.Tag = "omena";
154        Add(omena);
155
156        PhysicsObject susi = PhysicsObject.CreateStaticObject(leveys, korkeus);
157    }
158
159    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
160    {
161        pelaaja1 = new PlatformCharacter(leveys, 1.21 * leveys);
162        //pelaaja1 = new PlatformCharacter(256, 310);
163        pelaaja1.Position = paikka;
164        pelaaja1.Mass = 4.0;
165        pelaaja1.Image = pelaajanKuva;
166        AddCollisionHandler(pelaaja1, "omena", TormaaOmenaan);
167        AddCollisionHandler(pelaaja1, "omena", CollisionHandler.AddMeterValue(pisteLaskuri, 1));
168        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
169        AddCollisionHandler(pelaaja1, "piikki", TormaaPiikkiin);
170        Add(pelaaja1);
171    }
172
173    void LisaaNappaimet()
174    {
175        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
176        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
177
178        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
179        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
180        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
181
182        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
183
184        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
185        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
186        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
187
188
189        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
190        //MediaPlayer.PlayFromURL("http://www.youtube.com/results?search_query=angry+birds+rap&oq=angry+birds&gs_l=youtube.1.9.0l10.1244.3448.0.6531.11.7.0.4.4.0.71.437.7.7.0...0.0...1ac.1.11.youtube.vfJqBqK7PJk");
191
192    }
193
194    void Liikuta(PlatformCharacter hahmo, double nopeus)
195    {
196        hahmo.Walk(nopeus);
197
198    }
199
200    void Hyppaa(PlatformCharacter hahmo, double nopeus)
201    {
202        hahmo.Jump(nopeus);
203    }
204
205    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
206    {
207        SeuraavaKentta();
208
209
210
211    }
212
213
214    void TormaaOmenaan(PhysicsObject hahmo, PhysicsObject omena)
215    {
216        maaliAani.Play();
217        MessageDisplay.Add("Keräsit omenan!");
218        omena.Destroy();
219        //olio.Size = new Vector(1150.0, 1150.0);
220    }
221
222    void TormaaMaaliin(PhysicsObject hahmo, PhysicsObject omena)
223    {
224        maaliAani.Play();
225        MessageDisplay.Add("törmäsit maaliin!");
226        kenttaNro++;
227        SeuraavaKentta();
228    }
229
230    void LuoElamaLaskuri()
231    {
232        elamaLaskuri = new DoubleMeter(10);
233        elamaLaskuri.MaxValue = 10;
234        elamaLaskuri.LowerLimit += ElamaLoppui;
235
236        ProgressBar elamaPalkki = new ProgressBar(150, 20);
237        elamaPalkki.X = Screen.Left + 150;
238        elamaPalkki.Y = Screen.Top - 20;
239        elamaPalkki.BindTo(elamaLaskuri);
240        Add(elamaPalkki);
241    }
242
243    void ElamaLoppui()
244    {
245        MessageDisplay.Add("Elämät loppuivat, voi voi.");
246    }
247
248    void LuoPistelaskuri()
249    {
250        pisteLaskuri = new IntMeter(0);
251
252        Label pisteNaytto = new Label();
253        pisteNaytto.X = Screen.Left + 100;
254        pisteNaytto.Y = Screen.Top - 100;
255        pisteNaytto.TextColor = Color.Black;
256        pisteNaytto.Color = Color.White;
257
258        pisteNaytto.BindTo(pisteLaskuri);
259        Add(pisteNaytto);
260        pisteNaytto.Title = "Pisteet";
261    }
262
263    void PelaajaKuoli()
264    {
265        pelaaja1.Destroy();
266    }
267
268    void TopTen()
269    {
270        HighScoreWindow topIkkuna = new HighScoreWindow(
271                                     "Parhaat pisteet",
272                                     "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:",
273                                     topLista, pisteLaskuri.Value);
274        topIkkuna.Closed += TallennaPisteet;
275        topIkkuna.Closed += delegate { ClearAll(); Alkuvalikko(); };
276        Add(topIkkuna);
277    }
278
279    void ParhaatPisteet()
280    {
281        HighScoreWindow topIkkuna = new HighScoreWindow(
282                                      "Parhaat pisteet",
283                                      topLista);
284        topIkkuna.Closed += delegate { ClearAll(); Alkuvalikko(); };
285        Add(topIkkuna);
286    }
287
288    void TallennaPisteet(Window sender)
289    {
290        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
291    }
292
293   
294}
Note: See TracBrowser for help on using the repository browser.