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

Revision 3612, 7.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    const double nopeus = 200;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("norsu");
18    Image kolikkoKuva = LoadImage("tahti");
19    Image orkkiKuva = LoadImage("Koala");
20    SoundEffect maaliAani = LoadSoundEffect("maali");
21
22    int kenttanro = 1;
23
24    public override void Begin()
25    {
26        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
27            "Aloita peli","Tasot", "Parhaat pisteet", "Lopeta");
28        Add(alkuValikko);
29        alkuValikko.ItemSelected += PainettiinValikonNappia;
30
31        MediaPlayer.Play("taustamusiikki");
32        MediaPlayer.IsRepeating = true;
33       
34    }
35
36    void LuoKentta(string kenttatiedosto)
37    {
38        TileMap kentta = TileMap.FromLevelAsset(kenttatiedosto);
39        kentta.SetTileMethod('#', LisaaTaso);
40        kentta.SetTileMethod('*', LisaaTahti);
41        kentta.SetTileMethod('N', LisaaPelaaja);
42        kentta.SetTileMethod('p', LisaaOrkki);
43        kentta.SetTileMethod('x', Lisaapiikki);
44        kentta.SetTileMethod('M', LisaaMaali);
45
46        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
47       
48        Level.CreateBorders();
49        Level.Background.CreateGradient(Color.White, Color.Blue);
50    }
51
52    void Lisaapiikki(Vector paikka, double leveys, double korkeus)
53    {
54        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus-10);
55        piikki.Position = paikka;
56        piikki.Tag = "piikki";
57        piikki.Color = Color.Black;
58        Add(piikki);
59    }
60
61    void LisaaTaso(Vector paikka, double leveys, double korkeus)
62    {
63        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
64        taso.Position = paikka;
65        taso.Color = Color.Green;
66        Add(taso);
67    }
68
69    void LisaaTahti(Vector paikka, double leveys, double korkeus)
70    {
71        PhysicsObject kolikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
72        kolikko.IgnoresCollisionResponse = true;
73        kolikko.Position = paikka;
74        kolikko.Image = kolikkoKuva;
75        kolikko.Tag = "kolikko";
76        Add(kolikko);
77    }
78    void LisaaMaali(Vector paikka, double leveys, double korkeus)
79    {
80        PhysicsObject Maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
81        Maali.IgnoresCollisionResponse = true;
82        Maali.Position = paikka;
83        Maali.Tag = "Maali";
84        Add(Maali);
85    }
86    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
87    {
88        pelaaja1 = new PlatformCharacter(leveys, korkeus);
89        pelaaja1.Position = paikka;
90        pelaaja1.Mass = 4.0;
91        pelaaja1.Image = pelaajanKuva;
92        AddCollisionHandler(pelaaja1, "kolikko", TormaaKolikkoon);
93        AddCollisionHandler(pelaaja1, "Maali", TormaaMaaliin);
94        Add(pelaaja1);
95        pelaaja1.Weapon = new PlasmaCannon(20, 5);
96        pelaaja1.Weapon.InfiniteAmmo = true;
97        pelaaja1.Destroyed += pelaajakuoli;
98        AddCollisionHandler(pelaaja1, "orkki", TormaaOrkkiin);
99        AddCollisionHandler(pelaaja1, "piikki", CollisionHandler.ExplodeObject(50, true));
100    }
101    void pelaajakuoli()
102    {
103        seuraavakentta();
104    }
105    void LisaaOrkki(Vector paikka, double leveys, double korkeus)
106    {
107        PlatformCharacter orkki = new PlatformCharacter(leveys, korkeus);
108        orkki.Position = paikka;
109        orkki.Mass = 4.0;
110        orkki.Image =orkkiKuva;
111        Add(orkki);
112
113        orkki.Tag = "orkki";
114
115        FollowerBrain seuraajaAivot = new FollowerBrain(pelaaja1);
116        orkki.Brain = seuraajaAivot;
117        seuraajaAivot.Speed = 1000;
118    }
119
120    void AmmuAseella()
121    {
122        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
123
124        if (ammus != null)
125        {
126            ammus.Size *= 3;
127            AddCollisionHandler(ammus, "orkki", CollisionHandler.ExplodeTarget(50, true));
128        }
129    }
130
131
132    void LisaaNappaimet()
133    {
134        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
135
136        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
137        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
138        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
139
140        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
141        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
142        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
143
144        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
145
146        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
147        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
148        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
149
150        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
151    }
152
153    void Liikuta(PlatformCharacter hahmo, double nopeus)
154    {
155        hahmo.Walk(nopeus);
156    }
157
158    void Hyppaa(PlatformCharacter hahmo, double nopeus)
159    {
160        hahmo.Jump(nopeus);
161    }
162
163    void TormaaKolikkoon (PhysicsObject hahmo, PhysicsObject tahti)
164    {
165        maaliAani.Play();
166        MessageDisplay.Add("Keräsit Kolikon!");
167        tahti.Destroy();
168
169    }
170    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
171    {
172        ammus.Destroy();
173        kohde.Destroy();
174        Explosion rajahdys = new Explosion(10);
175        rajahdys.Position = ammus.Position;
176        Add(rajahdys);
177
178    }
179    void PainettiinValikonNappia(int valinta)
180    {
181        switch (valinta)
182        {
183            case 0:
184             seuraavakentta();
185                break;
186            case 1:
187                // ParhaatPisteet();
188                break;
189            case 2:
190                // Tasot();
191           
192            case 3:
193                Exit();
194                break;
195        }
196    }
197
198    void seuraavakentta()
199    {
200        ClearAll();
201
202        Gravity = new Vector(0, -1000);
203
204        if(kenttanro == 1) LuoKentta("kentta1");
205        else if (kenttanro == 2) LuoKentta("kentta2");
206        else if (kenttanro == 3) LuoKentta("kentta3");
207
208        LisaaNappaimet();
209
210        Camera.Follow(pelaaja1);
211        Camera.ZoomFactor = 1.2;
212        Camera.StayInLevel = true;
213
214    }
215
216    void TormaaOrkkiin(PhysicsObject hahmo, PhysicsObject orkki)
217    {
218        pelaaja1.Destroy();
219
220    }  void TormaaMaaliin(PhysicsObject hahmo, PhysicsObject Maali) 
221    {
222        kenttanro++;
223        seuraavakentta();
224    }
225}
Note: See TracBrowser for help on using the repository browser.