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

Revision 6674, 9.1 KB checked in by jivesuor, 4 years ago (diff)

Tasohyppelyyn lisätty "Päävihollinen".

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