source: 2010/24/timisahe/Makkarajahti/Peli.cs @ 907

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