source: 2010/23/aaolluuk/ApinaJaBanaani 2/Peli.cs @ 727

Revision 727, 9.2 KB checked in by aaolluuk, 11 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7namespace ApinaJaBanaani_2
8{
9    class Tasohyppely : PhysicsGame
10    {
11        const double nopeus = 200;
12        const double hyppyVoima = 4000;
13
14        IntMeter pisteLaskuri;
15        ValueDisplay pisteNaytto;
16
17        PlatformCharacter pelaaja1;
18
19        int kenttaNro; // monesko kenttä on menossa
20
21        protected override void Begin()
22        {
23            kenttaNro = 0;
24            Level.Width = 2000;
25            Level.Height = 1000;
26
27            // Zoomataan lähemmäksi
28            Camera.ZoomFactor = 2.0;
29
30            Camera.StayInLevel = true;
31
32            seuraavaKentta();
33            MessageDisplay.Add("Etsi reitti kotiin!");
34        }
35        void seuraavaKentta()
36        {
37            ClearAll();
38
39            // Luodaan pistelaskuri
40            pisteLaskuri = new IntMeter(0);
41
42            // luodaan pistelaskunäyttö
43            pisteNaytto = new ValueDisplay();
44            pisteNaytto.Text = "Pisteitä: ";
45            pisteNaytto.X = Screen.RightSafe - 250;
46            pisteNaytto.Y = Screen.TopSafe - 50;
47            pisteNaytto.BindTo(pisteLaskuri);
48            // lisätään peliin
49            pisteNaytto.ValueColor = Color.White;
50            Add(pisteNaytto);
51
52            pisteLaskuri.Reset();
53
54            kenttaNro += 1; // lisätään kenttänumeroa yhdellä
55            MessageDisplay.Add("Kenttä " + kenttaNro);
56
57            // Asetetaan painovoima
58            Gravity = new Vector(0, -1000);
59
60            luoKentta();
61            lisaaNappaimet();
62            Camera.Follow(pelaaja1);
63        }
64        void luoKentta()
65        {
66            Level.CreateBorders();
67            Level.Background.CreateGradient(Color.White, Color.Black);
68
69            lisaaTaso(-200, -350);
70            lisaaTaso(0, -200);
71            lisaaTaso(250, -150);
72            lisaaTaso(520, -50);
73            lisaaTaso(260, -150);
74            lisaaTaso(550, 100);
75            lisaaTaso(500, 200);
76            lisaaTaso(640, 100);
77            lisaaTaso(350, 300);
78            lisaaTaso(225, 250);
79            lisaaTaso(100, 200);
80            lisaaTaso(-210, 250);
81            lisaaTaso(-480, 200);
82            lisaaTaso(-480, 50);
83            lisaaTaso(-650, 100);
84
85            lisaaTaso(-500, -450);
86            lisaaTaso(-500, -480);
87            lisaaTaso(-300, -450);
88            lisaaTaso(-300, -480);
89            lisaaTaso(-200, -480);
90            lisaaTaso(-100, -480);
91            lisaaTaso(0, -450);
92            lisaaTaso(0, -480);
93            lisaaTaso(200, -450);
94            lisaaTaso(200, -480);
95            lisaaTaso(400, -450);
96            lisaaTaso(400, -480);
97            lisaaTaso(600, -450);
98            lisaaTaso(600, -480);
99
100
101            LisaaPiikkiaita(-400, -480);
102            LisaaPiikkiaita(100, -480);
103            LisaaPiikkiaita(300, -480);
104            LisaaPiikkiaita(500, -480);
105
106
107            LisaaBanaani(-200, -329);
108            LisaaBanaani(0, -179);
109            LisaaBanaani(250, -129);
110            LisaaBanaani(520, -29);
111            LisaaBanaani(500, 221);
112            LisaaBanaani(640, 121);
113            LisaaBanaani(350, 321);
114            LisaaBanaani(100, 221);
115            LisaaBanaani(-480, 71);
116            LisaaBanaani(-480, 221);
117            LisaaBanaani(-210, 271);
118            LisaaBanaani(0, 0);
119            LisaaBanaani(200, 0);
120            LisaaBanaani(-200, 0);
121            LisaaBanaani(-200, -200);
122            LisaaBanaani(0, -300);
123            LisaaBanaani(150, -300);
124            LisaaBanaani(300, -300);
125            LisaaBanaani(450, -300);
126            LisaaBanaani(600, -300);
127            LisaaBanaani(450, -150);
128            LisaaBanaani(600, -150);
129
130
131
132            LisaaAave(225, 320);
133            LisaaAave(300, 150);
134            LisaaAave(-300, 150);
135            LisaaAave(120, -150);
136            LisaaAave(-380, -150);
137            LisaaAave(-50, 100);
138            LisaaAave(0, -250);
139            LisaaAave(400, -50);
140            LisaaAave(650, 250);
141            LisaaAave(640, 0);
142
143
144            LisaaPomppivaPallo(0, 0);
145
146
147            LisaaHamahakki(250, -180);
148            LisaaHamahakki(350, 270);
149
150
151            lisaaMaali();
152            lisaaPelaajat();
153        }
154        void lisaaTaso(double x, double y)
155        {
156            PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
157            taso.Color = Color.White;
158            taso.X = x;
159            taso.Y = y;
160            Add(taso);
161        }
162        void lisaaPelaajat()
163        {
164            pelaaja1 = new PlatformCharacter(40, 40);
165            pelaaja1.Mass = 4.0;
166            pelaaja1.Image = LoadImage("Apina");
167            pelaaja1.X = 0;
168            pelaaja1.Y = Level.Bottom + 120;
169
170            AddCollisionHandler(pelaaja1, osuiMaaliin);
171
172            Add(pelaaja1);
173        }
174        void lisaaMaali()
175        {
176            PhysicsObject maali = PhysicsObject.CreateStaticObject(100, 100, Shapes.Circle);
177            maali.Tag = "maali";
178            maali.IgnoresCollisionResponse = true;
179            maali.X = -650;
180            maali.Y = 150;
181            maali.Image = LoadImage("Talo");
182            Add(maali);
183        }
184        void lisaaNappaimet()
185        {
186            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
187            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
188
189            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
190            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
191            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
192
193            lisaaGamePadNappaimet(ControllerOne);
194        }
195        void lisaaGamePadNappaimet(GamePad controller)
196        {
197            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
198
199            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
200            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
201            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
202        }
203        void liikuta(PlatformCharacter hahmo, double nopeus)
204        {
205            hahmo.Walk(nopeus);
206        }
207        void hyppaa(PlatformCharacter hahmo, double voima)
208        {
209            hahmo.Jump(voima);
210        }
211        void osuiMaaliin(PhysicsObject pelaaja, PhysicsObject kohde)
212        {
213            if (kohde.Tag.ToString() == "maali")
214            {
215                this.PlaySound("maali");
216                int edellisenKentanPisteet = pisteLaskuri.Value;
217                seuraavaKentta();
218                MessageDisplay.Add("Pääsit kentän läpi " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
219            }
220            if (kohde.Tag.ToString() == "banaani")
221            {
222                kohde.Destroy();
223                pisteLaskuri.Value++;
224            }
225            if (kohde.Tag.ToString() == "piikkiaita")
226            {
227                pelaaja.Destroy();
228                seuraavaKentta();
229            }
230            if (kohde.Tag.ToString() == "Aave")
231            {
232                pelaaja.Destroy();
233                seuraavaKentta();
234            }
235        }
236        void LisaaPomppivaPallo(double x, double y)
237        {
238            PhysicsObject PomppivaPallo = PhysicsObject.CreateStaticObject(10, 15);
239            PomppivaPallo.Tag = "PomppivaPallo";
240            PomppivaPallo.X = x;
241            PomppivaPallo.Y = y;
242            PomppivaPallo.Image = LoadImage("PomppivaPallo");
243            PomppivaPallo.Restitution = 1.0;
244            PomppivaPallo.Mass = 10.0;
245            Add(PomppivaPallo);
246        }   
247        void LisaaHamahakki(double x, double y)
248        {
249            PhysicsObject Hamahakki = PhysicsObject.CreateStaticObject(10, 30);
250            Hamahakki.Tag = "Hamahakki";
251            Hamahakki.X = x;
252            Hamahakki.Y = y;
253            Hamahakki.Image = LoadImage("Hamahakki");
254            Add(Hamahakki);
255        }
256
257
258        void LisaaAave(double x, double y)
259        {
260            PhysicsObject Aave = PhysicsObject.CreateStaticObject(30, 60);
261            Aave.Tag = "Aave";
262            Aave.X = x;
263            Aave.Y = y;
264            Aave.Image = LoadImage("Aave");
265            Add(Aave);
266        }
267        void LisaaBanaani(double x, double y)
268        {
269            PhysicsObject Banaani = PhysicsObject.CreateStaticObject(30, 10);
270            Banaani.Tag = "banaani";
271            Banaani.X = x;
272            Banaani.Y = y;
273            Banaani.Image = LoadImage("Banaani");
274            Add(Banaani);
275        }
276        void LisaaPiikkiaita(double x, double y)
277        {
278            PhysicsObject Piikkiaita = PhysicsObject.CreateStaticObject(100, 30);
279            Piikkiaita.Tag = "piikkiaita";
280            Piikkiaita.X = x;
281            Piikkiaita.Y = y;
282            Piikkiaita.Image = LoadImage("Piikkiaita");
283            Add(Piikkiaita);
284        }
285
286
287    }
288}
289 
290
Note: See TracBrowser for help on using the repository browser.