source: 2012/27/LeeviN/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 3668

Revision 3668, 9.0 KB checked in by Lenatri, 9 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Tasohyppelypeli1 : PhysicsGame
10{
11    ScoreList topLista = new ScoreList(10, false, 0);
12
13    IntMeter pisteLaskuri;
14    const double nopeus = 200;
15    const double hyppyNopeus = 1000;
16    const int RUUDUN_KOKO = 40;
17
18    PlatformCharacter pelaaja1;
19
20    Image pelaajanKuva = LoadImage("norsu");
21    Image kolikkoKuva = LoadImage("tahti");
22    Image orkkiKuva = LoadImage("Koala");
23    SoundEffect maaliAani = LoadSoundEffect("maaliaani");
24    Image MaaliKuva = LoadImage("maali");
25    int kenttanro = 1;
26
27    public override void Begin()
28    {
29        if (DataStorage.Exists("pisteet.xml"))
30            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
31        // ...
32
33       
34        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
35            "Aloita peli", "Tasot", "Parhaat pisteet", "Lopeta");
36        Add(alkuValikko);
37        alkuValikko.ItemSelected += PainettiinValikonNappia;
38
39        MediaPlayer.Play("taustamusiikki");
40        MediaPlayer.IsRepeating = true;
41    }
42
43    void LuoKentta(string kenttatiedosto)
44    {
45        TileMap kentta = TileMap.FromLevelAsset(kenttatiedosto);
46        kentta.SetTileMethod('#', LisaaTaso);
47        kentta.SetTileMethod('*', LisaaTahti);
48        kentta.SetTileMethod('N', LisaaPelaaja);
49        kentta.SetTileMethod('p', LisaaOrkki);
50        kentta.SetTileMethod('x', Lisaapiikki);
51        kentta.SetTileMethod('M', LisaaMaali);
52
53        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
54
55        Level.CreateBorders();
56        Level.Background.CreateGradient(Color.White, Color.Blue);
57    }
58
59    void Lisaapiikki(Vector paikka, double leveys, double korkeus)
60    {
61        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus - 10);
62        piikki.Position = paikka;
63        piikki.Tag = "piikki";
64        piikki.Color = Color.Black;
65        Add(piikki);
66    }
67
68    void LisaaTaso(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        taso.Position = paikka;
72        taso.Color = Color.Green;
73        Add(taso);
74    }
75
76    void LisaaTahti(Vector paikka, double leveys, double korkeus)
77    {
78        PhysicsObject kolikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        kolikko.IgnoresCollisionResponse = true;
80        kolikko.Position = paikka;
81        kolikko.Image = kolikkoKuva;
82        kolikko.Tag = "kolikko";
83        Add(kolikko);
84    }
85    void LisaaMaali(Vector paikka, double leveys, double korkeus)
86    {
87        PhysicsObject Maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
88        Maali.IgnoresCollisionResponse = true;
89        Maali.Position = paikka;
90        Maali.Tag = "Maali";
91        Maali.Image = MaaliKuva;
92        Add(Maali);
93    }
94    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
95    {
96        pelaaja1 = new PlatformCharacter(leveys, korkeus);
97        pelaaja1.Position = paikka;
98        pelaaja1.Mass = 4.0;
99        pelaaja1.Image = pelaajanKuva;
100        AddCollisionHandler(pelaaja1, "kolikko", TormaaKolikkoon);
101        AddCollisionHandler(pelaaja1, "Maali", TormaaMaaliin);
102        Add(pelaaja1);
103        pelaaja1.Tag = "pelaaja1";
104        pelaaja1.Weapon = new PlasmaCannon(20, 5);
105        pelaaja1.Weapon.InfiniteAmmo = true;
106        pelaaja1.Destroyed += pelaajakuoli;
107        AddCollisionHandler(pelaaja1, "orkki", TormaaOrkkiin);
108        AddCollisionHandler(pelaaja1, "piikki", CollisionHandler.ExplodeObject(50, true));
109    }
110    void pelaajakuoli()
111    {
112        seuraavakentta();
113    }
114    void LisaaOrkki(Vector paikka, double leveys, double korkeus)
115    {
116        PlatformCharacter orkki = new PlatformCharacter(leveys, korkeus);
117        orkki.Position = paikka;
118        orkki.Mass = 4.0;
119        orkki.Image = orkkiKuva;
120        Add(orkki);
121
122        orkki.Tag = "orkki";
123
124        FollowerBrain seuraajaAivot = new FollowerBrain("pelaaja1");
125        orkki.Brain = seuraajaAivot;
126        seuraajaAivot.Speed = 1000;
127    }
128
129    void AmmuAseella()
130    {
131        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
132
133        if (ammus != null)
134        {
135            ammus.Size *= 3;
136            AddCollisionHandler(ammus, "orkki", CollisionHandler.ExplodeTarget(50, true));
137        }
138    }
139
140
141    void LisaaNappaimet()
142    {
143        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
144
145        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
146        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
147        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
148
149        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
150        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
151        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
152
153        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
154
155        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
156        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
157        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
158
159        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
160    }
161
162    void Liikuta(PlatformCharacter hahmo, double nopeus)
163    {
164        hahmo.Walk(nopeus);
165    }
166
167    void Hyppaa(PlatformCharacter hahmo, double nopeus)
168    {
169        hahmo.Jump(nopeus);
170    }
171
172    void TormaaKolikkoon(PhysicsObject hahmo, PhysicsObject tahti)
173    {
174        maaliAani.Play();
175        MessageDisplay.Add("Keräsit Kolikon!");
176        tahti.Destroy();
177        pisteLaskuri.Value += 10;
178    }
179    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
180    {
181        ammus.Destroy();
182        kohde.Destroy();
183        Explosion rajahdys = new Explosion(10);
184        rajahdys.Position = ammus.Position;
185        Add(rajahdys);
186
187    }
188    void PainettiinValikonNappia(int valinta)
189    {
190        switch (valinta)
191        {
192            case 0:
193                seuraavakentta();
194                break;
195            case 1:
196                Tasot();
197                break;
198            case 2:
199               HighScoreWindow topIkkuna = new HighScoreWindow(
200               "Parhaat pisteet",
201               topLista );
202               topIkkuna.Closed += TallennaPisteet;
203               Add( topIkkuna );
204
205                break;
206
207            case 3:
208                Exit();
209                break;
210        }
211    }
212
213    void Tasot()
214    {
215        MultiSelectWindow tasoValikko = new MultiSelectWindow("Valitse taso",
216    "Taso 1", "Taso 2", "Taso 3");
217        Add(tasoValikko);
218        tasoValikko.ItemSelected += delegate(int valinta)
219        {
220            switch (valinta)
221            {
222                case 0:
223                    kenttanro = 1;
224                    seuraavakentta();
225                    break;
226                case 1:
227                    kenttanro = 2;
228                    seuraavakentta();
229                    break;
230                case 2:
231                    kenttanro = 3;
232                    seuraavakentta();
233                    break;
234            }
235        };
236
237    }
238
239    void seuraavakentta()
240    {
241        ClearAll();
242
243        Gravity = new Vector(0, -1000);
244
245        if (kenttanro == 1) LuoKentta("kentta1");
246        else if (kenttanro == 2) LuoKentta("kentta2");
247        else if (kenttanro == 3) LuoKentta("kentta3");
248
249        LisaaNappaimet();
250        LuoPistelaskuri();
251
252        Camera.Follow(pelaaja1);
253        Camera.ZoomFactor = 1.2;
254        Camera.StayInLevel = true;
255
256    }
257
258    void TormaaOrkkiin(PhysicsObject hahmo, PhysicsObject orkki)
259    {
260        pelaaja1.Destroy();
261
262    }
263    void TormaaMaaliin(PhysicsObject hahmo, PhysicsObject Maali)
264    {
265        kenttanro++;
266        seuraavakentta();
267    }
268    void LuoPistelaskuri()
269    {
270        pisteLaskuri = new IntMeter(0);
271
272        Label pisteNaytto = new Label();
273        pisteNaytto.X = Screen.Left + 100;
274        pisteNaytto.Y = Screen.Top - 100;
275        pisteNaytto.TextColor = Color.Black;
276        pisteNaytto.Color = Color.White;
277
278        pisteNaytto.BindTo(pisteLaskuri);
279        Add(pisteNaytto);
280
281    }
282    void TallennaPisteet(Window sender)
283    {
284        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
285
286        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
287        "Aloita peli", "Tasot", "Parhaat pisteet", "Lopeta");
288        Add(alkuValikko);
289        alkuValikko.ItemSelected += PainettiinValikonNappia;
290    }
291
292   
293    }
294   
295
Note: See TracBrowser for help on using the repository browser.