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

Revision 916, 6.7 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);
41
42        // Zoomataan lähemmäksi
43        Camera.ZoomFactor = 2.0;
44
45        Camera.StayInLevel = true;
46
47        seuraavaKentta();
48        MessageDisplay.Add("Etsi kaikki 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 makkara = PhysicsObject.CreateStaticObject(50.0, 50.0);
110        makkara.Color = Color.Orange;
111        makkara.Image = LoadImage("Makkara");
112        Add(makkara);
113        PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Circle);
114        makkara.Tag = "maali";
115        maali.IgnoresCollisionResponse = true;
116     
117
118        return makkara;
119    }
120
121
122    PhysicsObject piikit()
123    {
124        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0, 50.0);
125        taso.Tag = "piikit";
126        taso.Color = Color.Orange;
127        taso.Image = LoadImage("piikit");
128        Add(taso);
129
130        return taso;
131    }
132
133    PhysicsObject tasoend()
134    {
135        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0, 50.0);
136        taso.Color = Color.Orange;
137        taso.Image = LoadImage("maaend");
138        Add(taso);
139
140        return taso;
141    }
142
143
144
145
146    PhysicsObject lisaaTasoend()
147    {
148        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0, 50.0);
149        taso.Color = Color.Orange;
150        taso.Image = LoadImage("lattiaend");
151        Add(taso);
152
153        return taso;
154    }
155
156    PhysicsObject taso ()
157    {
158        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0,50.0);
159        taso.Color = Color.Orange;
160        taso.Image = LoadImage("maa");
161        Add(taso);
162
163        return taso;
164    }
165
166
167
168    PhysicsObject lisaaTaso()
169    {
170        PhysicsObject taso = PhysicsObject.CreateStaticObject(50.0, 50.0);
171        taso.Color = Color.Orange;
172        taso.Image = LoadImage("lattia");
173        Add(taso);
174
175        return taso;
176    }
177    PhysicsObject lisaaPyoreataso()
178    {
179        PhysicsObject pyoreataso = PhysicsObject.CreateStaticObject(50.0, 50.0,Shapes.Circle);
180        pyoreataso.Color = Color.Black;
181        pyoreataso.Image = LoadImage("kivi");
182        Add(pyoreataso);
183
184        return pyoreataso;
185       
186    }
187        PlatformCharacter lisaaPelaajat()
188    {
189        pelaaja1 = new PlatformCharacter(40, 60);
190        pelaaja1.Mass = 8.0;
191        pelaaja1.Image = LoadImage("Bulla");
192
193        AddCollisionHandler(pelaaja1, osuiMaaliin);
194
195        Add(pelaaja1);
196
197        return pelaaja1;
198
199
200    }
201
202        PhysicsObject seina()
203        {
204            PhysicsObject seina = PhysicsObject.CreateStaticObject(50.0, 50.0);
205            seina.Color = Color.Gray;
206            Add(seina);
207            seina.Image = LoadImage("seina");
208
209            return seina;
210        }
211
212
213
214    void lisaaNappaimet()
215    {
216        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
217        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
218
219        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
220        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
221        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
222       
223
224       
225        lisaaGamePadNappaimet(ControllerOne);
226    }
227
228    void lisaaGamePadNappaimet(GamePad controller)
229    {
230        controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
231
232        controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
233        controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
234        controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
235    }
236
237    void liikuta(PlatformCharacter hahmo, double nopeus)
238    {
239        hahmo.Walk(nopeus);
240    }
241
242    void hyppaa(PlatformCharacter hahmo, double voima)
243    {
244        hahmo.Jump(voima);
245        ControllerOne.Vibrate(0.5, 0.5, 0.0, 0.0, 0.2);
246    }
247
248    void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
249    {
250        if (otherObject.Tag.ToString() == "maali")
251        {
252            this.PlaySound("maali");
253            int edellisenKentanPisteet = pisteLaskuri.Value;
254            seuraavaKentta();
255            MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Makkaroita: " + edellisenKentanPisteet);
256        }
257    }
258
259
260    void Kasittelepelaaja1Tormays(PhysicsObject pelaaja1, PhysicsObject kohde)
261    {
262        if (kohde.Tag == "piikit") 
263        {
264            pelaaja1.Position = aloituspaikka;
265            ControllerOne.Vibrate(010.0, 10.0, 0.0, 0.0, 0.7);
266
267        }
268    }
269
270
271
272
273
274
275}
Note: See TracBrowser for help on using the repository browser.