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

Revision 6651, 8.5 KB checked in by jivesuor, 4 years ago (diff)

Tasohyppelyyn lisätty uusi vihollinen, tähdet vaihdettu kolikoiksi.

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