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

Revision 6629, 6.8 KB checked in by jivesuor, 5 years ago (diff)

Tasohyppelyyn lisätty TODO-lista, jossa kaikkea kentästä puuttuvia asioita.

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