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

Revision 757, 9.9 KB checked in by aaolluuk, 12 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, -900);
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(-100, -40);
145            LisaaPomppivaPallo(0, -40);
146            LisaaPomppivaPallo(100, -40);
147            LisaaPomppivaPallo(200, -40);
148            LisaaPomppivaPallo(300, -40);
149            LisaaPomppivaPallo(400, -120);
150            LisaaPomppivaPallo(600, -400);
151            LisaaPomppivaPallo(550, -400);
152            LisaaPomppivaPallo(500, -300);
153
154
155            LisaaHamahakki(250, -180);
156            LisaaHamahakki(350, 270);
157
158
159            lisaaMaali();
160            lisaaPelaajat();
161        }
162        void lisaaTaso(double x, double y)
163        {
164            PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
165            taso.Color = Color.White;
166            taso.Restitution = 1.0;
167            taso.X = x;
168            taso.Y = y;
169            Add(taso);
170        }
171        void lisaaPelaajat()
172        {
173            pelaaja1 = new PlatformCharacter(40, 40);
174            pelaaja1.Mass = 4.0;
175            pelaaja1.Image = LoadImage("Apina");
176            pelaaja1.X = 0;
177            pelaaja1.Y = Level.Bottom + 120;
178            pelaaja1.Restitution = 0.1;
179
180            AddCollisionHandler(pelaaja1, osuiMaaliin);
181
182            Add(pelaaja1);
183        }
184        void lisaaMaali()
185        {
186            PhysicsObject maali = PhysicsObject.CreateStaticObject(100, 100, Shapes.Circle);
187            maali.Tag = "maali";
188            maali.IgnoresCollisionResponse = true;
189            maali.X = -650;
190            maali.Y = 150;
191            maali.Image = LoadImage("Talo");
192            Add(maali);
193        }
194        void lisaaNappaimet()
195        {
196            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
197            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
198
199            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
200            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
201            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
202
203            lisaaGamePadNappaimet(ControllerOne);
204        }
205        void lisaaGamePadNappaimet(GamePad controller)
206        {
207            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
208
209            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
210            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
211            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
212        }
213        void liikuta(PlatformCharacter hahmo, double nopeus)
214        {
215            hahmo.Walk(nopeus);
216        }
217        void hyppaa(PlatformCharacter hahmo, double voima)
218        {
219            hahmo.Jump(voima);
220        }
221        void osuiMaaliin(PhysicsObject pelaaja, PhysicsObject kohde)
222        {
223            if (kohde.Tag.ToString() == "maali")
224            {
225                this.PlaySound("maali");
226                int edellisenKentanPisteet = pisteLaskuri.Value;
227                seuraavaKentta();
228                MessageDisplay.Add("Pääsit kentän läpi " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
229            }
230            if (kohde.Tag.ToString() == "banaani")
231            {
232                kohde.Destroy();
233                pisteLaskuri.Value++;
234            }
235            if (kohde.Tag.ToString() == "piikkiaita")
236            {
237                pelaaja.Destroy();
238                seuraavaKentta();
239            }
240            if (kohde.Tag.ToString() == "Aave")
241            {
242                pelaaja.Destroy();
243                seuraavaKentta();
244            }
245           
246            }
247        void LisaaPomppivaPallo(double x, double y)
248        {
249            PhysicsObject PomppivaPallo = new PhysicsObject(10, 15);
250            //PomppivaPallo.Shape = Shapes.Circle;
251            PomppivaPallo.Tag = "PomppivaPallo";
252            PomppivaPallo.X = x;
253            PomppivaPallo.Y = y;
254            PomppivaPallo.Image = LoadImage("PomppivaPallo");
255            PomppivaPallo.Restitution = 1.0;
256            PomppivaPallo.Mass = 1;
257            AddCollisionHandler( PomppivaPallo, PallonTormays);
258            Add(PomppivaPallo);
259        }   
260        void PallonTormays(PhysicsObject PomppivaPallo, PhysicsObject kohde)
261        {
262            Explosion rajahdys = new Explosion(50.0);
263            rajahdys.Position = PomppivaPallo.Position;
264            Add(rajahdys);
265        }
266        void LisaaHamahakki(double x, double y)
267        {
268            PhysicsObject Hamahakki = PhysicsObject.CreateStaticObject(10, 30);
269            Hamahakki.Tag = "Hamahakki";
270            Hamahakki.X = x;
271            Hamahakki.Y = y;
272            Hamahakki.Image = LoadImage("Hamahakki");
273            Add(Hamahakki);
274        }
275
276
277        void LisaaAave(double x, double y)
278        {
279            PhysicsObject Aave = PhysicsObject.CreateStaticObject(30, 60);
280            Aave.Tag = "Aave";
281            Aave.X = x;
282            Aave.Y = y;
283            Aave.Image = LoadImage("Aave");
284            Add(Aave);
285        }
286        void LisaaBanaani(double x, double y)
287        {
288            PhysicsObject Banaani = PhysicsObject.CreateStaticObject(30, 10);
289            Banaani.Tag = "banaani";
290            Banaani.X = x;
291            Banaani.Y = y;
292            Banaani.Image = LoadImage("Banaani");
293            Add(Banaani);
294        }
295        void LisaaPiikkiaita(double x, double y)
296        {
297            PhysicsObject Piikkiaita = PhysicsObject.CreateStaticObject(100, 30);
298            Piikkiaita.Tag = "piikkiaita";
299            Piikkiaita.X = x;
300            Piikkiaita.Y = y;
301            Piikkiaita.Image = LoadImage("Piikkiaita");
302            Add(Piikkiaita);
303        }
304
305
306    }
307}
308 
309
Note: See TracBrowser for help on using the repository browser.