source: 2015/27/JimiS/tasohyppely/hyppely/hyppely/hyppely/hyppely.cs @ 6678

Revision 6678, 9.3 KB checked in by jivesuor, 4 years ago (diff)

Tasohyppelyyn lisätty ääniä ja kolikkolaskuria muutettu.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10
11//TODO Lisää/muokkaa äänet
12
13public class hyppely : PhysicsGame
14{
15    const double nopeus = 200;
16    const double hyppyNopeus = 1000;
17    const int RUUDUN_KOKO = 40;
18
19    PhysicsObject alaReuna;
20    PhysicsObject vasenReuna;
21    PhysicsObject oikeaReuna;
22    PhysicsObject ylaReuna;
23
24
25    PlatformCharacter pelaaja1;
26
27    Image pelaajanKuva = LoadImage("pelaajahahmo");
28    Image tahtiKuva = LoadImage("tahti");
29    Image vihukuva = LoadImage("vihu");
30    Image Kolikko = LoadImage("kolikko");
31    Image MaaPalikka = LoadImage("maapalikka");
32    Image pahiskuva = LoadImage("putoamatonvihu");
33    Image tasokuva = LoadImage("tasokuva");
34    Image PaaVihu = LoadImage("Päävihollinen");
35
36    SoundEffect osuma = LoadSoundEffect("osuma");
37
38    IntMeter pelaajan1Elamat;
39    IntMeter pelaajan1Tahdet;
40
41    Vector pelaajanaloituspaikka;
42
43
44    SoundEffect maaliAani = LoadSoundEffect("maali");
45
46    public override void Begin()
47    {
48        Gravity = new Vector(0, -1000);
49
50        LuoKentta();
51        LisaaNappaimet();
52
53        AddCollisionHandler(pelaaja1, alaReuna, KasittelePelaajanPutoaminen);
54
55        IsFullScreen = true;
56
57        Camera.Follow(pelaaja1);
58        Camera.ZoomFactor = 1.0;
59        Camera.StayInLevel = true;
60    }
61
62    void LuoKentta()
63    {
64        TileMap kentta = TileMap.FromLevelAsset("kentta1");
65        kentta.SetTileMethod('#', LisaaTaso);
66        kentta.SetTileMethod('*', LisaaKolikko);
67        kentta.SetTileMethod('N', LisaaPelaaja);
68        kentta.SetTileMethod('A', LisaaPalikka);
69        kentta.SetTileMethod('V', LisaaVihu);
70        kentta.SetTileMethod('M', LisaaMaa);
71        kentta.SetTileMethod('P', LisaaPahis);
72        kentta.SetTileMethod('B', LisaaPaaVihu);
73        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
74
75
76        alaReuna = Level.CreateBottomBorder();
77        alaReuna.Restitution = 1.0;
78        alaReuna.IsVisible = false;
79
80        vasenReuna = Level.CreateLeftBorder();
81        vasenReuna.Restitution = 1.0;
82        alaReuna.IsVisible = false;
83
84        oikeaReuna = Level.CreateRightBorder();
85        oikeaReuna.Restitution = 1.0;
86        oikeaReuna.IsVisible = false;
87
88        ylaReuna = Level.CreateTopBorder();
89        ylaReuna.Restitution = 1.0;
90        ylaReuna.IsVisible = false;
91
92
93        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
94    }
95
96    void LisaaPaaVihu(Vector paikka, double leveys, double korkeus)
97    {
98        PlatformCharacter paavihu = new PlatformCharacter(leveys, korkeus);
99        paavihu.Position = paikka;
100        paavihu.Tag = "pahis";
101        paavihu.Image = PaaVihu;
102        Add(paavihu);
103
104        PlatformWandererBrain paavihuaivot = new PlatformWandererBrain();
105        paavihuaivot.Speed = 400;
106        paavihuaivot.TriesToJump = false;
107        paavihuaivot.JumpSpeed = 1000;
108
109        paavihu.Brain = paavihuaivot;
110    }
111
112    void LisaaPahis(Vector paikka, double leveys, double korkeus)
113    {
114        PlatformCharacter pahis = new PlatformCharacter(leveys, korkeus);
115        pahis.Position = paikka;
116        pahis.Tag = "pahis";
117        pahis.Image = pahiskuva;
118        Add(pahis);
119
120        PlatformWandererBrain pahisaivot = new PlatformWandererBrain();
121        pahisaivot.Speed = 40;
122        pahisaivot.FallsOffPlatforms = false;
123
124        pahis.Brain = pahisaivot;
125    }
126
127    void LisaaVihu(Vector paikka, double leveys, double korkeus)
128    {
129        PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus);
130        vihu.Position = paikka;
131        vihu.Color = Color.Black;
132        vihu.Tag = "pahis";
133        vihu.Image = vihukuva;
134        Add(vihu);
135
136        PlatformWandererBrain tasoaivot = new PlatformWandererBrain();
137        tasoaivot.Speed = 100;
138        tasoaivot.FallsOffPlatforms = true;
139        tasoaivot.JumpSpeed = 400;
140        tasoaivot.TriesToJump = true;
141
142        vihu.Brain = tasoaivot;
143
144    }
145
146    void LisaaMaa(Vector paikka, double leveys, double korkeus)
147    {
148        PhysicsObject maa = PhysicsObject.CreateStaticObject(leveys, korkeus);
149        maa.Position = paikka;
150        maa.Image = MaaPalikka;
151        Add(maa);
152    }
153
154    void LisaaPalikka(Vector paikka, double leveys, double korkeus)
155    {
156        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
157        palikka.Position = paikka;
158        palikka.Color = Color.LightGreen;
159        Add(palikka);
160    }
161
162    void LisaaTaso(Vector paikka, double leveys, double korkeus)
163    {
164        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
165        taso.Position = paikka;
166        taso.Color = Color.Blue;
167        taso.Image = tasokuva;
168        Add(taso);
169    }
170
171    void LisaaKolikko(Vector paikka, double leveys, double korkeus)
172    {
173        PhysicsObject kolikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
174        kolikko.IgnoresCollisionResponse = true;
175        kolikko.Position = paikka;
176        kolikko.Image = Kolikko;
177        kolikko.Tag = "tahti";
178        Add(kolikko);
179    }
180
181    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
182    {
183        pelaaja1 = new PlatformCharacter(leveys, korkeus);
184        pelaaja1.Position = paikka;
185        pelaajanaloituspaikka = paikka;
186        pelaaja1.Mass = 4.0;
187        pelaaja1.Image = pelaajanKuva;
188        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
189        AddCollisionHandler(pelaaja1, "pahis", TormaaVihuun);
190        Add(pelaaja1);
191
192        pelaajan1Tahdet = new IntMeter(0);
193        pelaajan1Tahdet.MaxValue = 100;
194        Label tahdet = new Label();
195        tahdet.BindTo(pelaajan1Tahdet);
196
197        tahdet.X = -700;
198        tahdet.Y = 500;
199        tahdet.TextColor = Color.Black;
200        tahdet.BorderColor = Color.Black;
201        tahdet.Color = Color.White;
202        tahdet.Image = Kolikko;
203        tahdet.Height = korkeus;
204        tahdet.Width = leveys;
205        tahdet.TextScale *=2;
206        Add(tahdet);
207
208        pelaajan1Elamat = new IntMeter(5);
209        pelaajan1Elamat.MaxValue = 20;
210        Label naytto = new Label();
211        naytto.BindTo(pelaajan1Elamat);
212
213        naytto.Y += pelaaja1.Height;
214        naytto.TextColor = Color.Black;
215        naytto.BorderColor = Color.Black;
216        naytto.Color = Color.White;
217        naytto.Size *= 0.5;
218        naytto.TextScale = new Vector(0.5, 0.5);
219        pelaaja1.Add(naytto);
220    }
221
222    void TormaaVihuun(PhysicsObject pelaaja, PhysicsObject vihu)
223    {
224        MessageDisplay.Add("Auts! Törmäsit Vihuun!");
225
226        PlaySound("osuma");
227
228        pelaajan1Elamat.Value -= 1;
229
230        pelaaja1.Position = pelaajanaloituspaikka;
231
232        if (pelaajan1Elamat == 0)
233        {
234            pelaaja1.Destroy();
235            MessageDisplay.Add("Pelaaja 1 hävisi pelin.");
236            Timer.SingleShot(3.0, Exit);
237        }
238    }
239
240
241    void KasittelePelaajanPutoaminen(PhysicsObject pelaaja1, PhysicsObject kohde)
242    {
243
244        pelaajan1Elamat.Value -= 1;
245
246        PlaySound("osuma");
247
248        MessageDisplay.Add("Putosit!");
249
250        pelaaja1.Position = pelaajanaloituspaikka;
251
252        if (pelaajan1Elamat == 0)
253        {
254            pelaaja1.Destroy();
255            MessageDisplay.Add("Pelaaja 1 hävisi pelin.");
256            Timer.SingleShot(3.0, Exit);
257        }
258
259    }
260
261
262
263    void LisaaNappaimet()
264    {
265        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
266        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
267        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaAlusta, "Aloittaa pelin alusta.");
268
269        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
270        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
271        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
272
273        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
274        ControllerOne.Listen(Button.Start, ButtonState.Pressed, AloitaAlusta, "Aloittaa pelin alusta.");
275
276        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
277        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
278        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
279
280        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
281    }
282
283
284    void AloitaAlusta()
285    {
286        ClearAll();
287        Begin();
288    }
289
290    void Liikuta(PlatformCharacter hahmo, double nopeus)
291    {
292        hahmo.Walk(nopeus);
293    }
294
295    void Hyppaa(PlatformCharacter hahmo, double nopeus)
296    {
297        hahmo.Jump(nopeus);
298    }
299
300    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
301    {
302        pelaajan1Tahdet.Value += 1;
303        maaliAani.Play();
304        MessageDisplay.Add("Keräsit kolikon!");
305        tahti.Destroy();
306
307        if (pelaajan1Tahdet == 51)
308        {
309            MessageDisplay.Add("Voitit pelin!");
310            Timer.SingleShot(3.0, Exit);
311        }
312    }
313}
Note: See TracBrowser for help on using the repository browser.