source: 2015/30/TomiM/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli.cs @ 6968

Revision 6968, 6.4 KB checked in by tomikkon, 6 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Tasohyppelypeli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter vihollinen;
17
18    Image pelaajanKuva = LoadImage("tyyppi3");
19    Image tahtiKuva = LoadImage("kolikko");
20    Image setelikuva = LoadImage("seteli");
21    Image vihollisenKuva = LoadImage("vihollinen");
22
23    SoundEffect maaliAani = LoadSoundEffect("maali");
24
25
26    private Image[] ukkelinKavely = LoadImages("tyyppi", "tyyppi2", "tyyppi4");
27
28
29
30
31    public override void Begin()
32    {
33        Gravity = new Vector(0, -1000);
34
35        LuoKentta();
36        LisaaNappaimet();
37
38        LuoPistelaskuri();
39
40
41
42
43        Camera.Follow(pelaaja1);
44        Camera.ZoomFactor = 1.2;
45        Camera.StayInLevel = true;
46
47
48    }
49
50    void LuoKentta()
51    {
52
53
54
55
56
57        Level.CreateBottomBorder();
58        Level.CreateTopBorder();
59
60        TileMap kentta = TileMap.FromLevelAsset("kentta1");
61        kentta.SetTileMethod('#', LisaaTaso);
62        kentta.SetTileMethod('*', LisaaTahti);
63        kentta.SetTileMethod('V', LisaaVihollinen);
64        kentta.SetTileMethod('S', LisaaSeteli);
65
66
67        kentta.SetTileMethod('N', LisaaPelaaja);
68        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
69        Level.CreateBorders();
70        Level.Background.CreateGradient(Color.Blue, Color.SkyBlue);
71    }
72    void PelaajaTormasi(PhysicsObject vihollinen, PhysicsObject pelaaja1)
73    {
74
75        {
76
77        }
78
79
80
81    }
82
83    void LisaaTaso(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
86        taso.Position = paikka;
87        taso.Color = Color.Green;
88        Add(taso);
89    }
90
91    void LisaaTahti(Vector paikka, double leveys, double korkeus)
92    {
93        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
94        tahti.IgnoresCollisionResponse = true;
95        tahti.Position = paikka;
96        tahti.Image = tahtiKuva;
97        tahti.Tag = "kolikko";
98        Add(tahti);
99    }
100
101    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
102    {
103        pelaaja1 = new PlatformCharacter(leveys, korkeus);
104        pelaaja1.Position = paikka;
105        pelaaja1.Mass = 4.0;
106        pelaaja1.Image = pelaajanKuva;
107        AddCollisionHandler(pelaaja1, "kolikko", TormaaTahteen);
108        AddCollisionHandler(pelaaja1, "pahis", PelaajaOsuu);
109        Add(pelaaja1);
110        pelaaja1.CanRotate = false;
111
112
113
114        pelaaja1.Animation = new Animation(ukkelinKavely);
115
116        pelaaja1.Animation.Start();
117        pelaaja1.Animation.FPS = 5;
118    }
119    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
120    {
121        vihollinen = new PlatformCharacter(leveys, korkeus);
122        vihollinen.Position = paikka;
123        vihollinen.Mass = 5.0;
124        vihollinen.Image = vihollisenKuva;
125        Add(vihollinen);
126        vihollinen.Tag = "pahis";
127        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
128        tasoAivot.Speed = 100;
129
130        vihollinen.Brain = tasoAivot;
131        tasoAivot.FallsOffPlatforms = false;
132
133
134
135
136
137
138
139
140
141
142    }
143
144    void LisaaNappaimet()
145    {
146        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
147        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
148
149        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
150        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
151        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
152
153        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
154
155
156        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
157
158        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
159
160        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
161        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
162        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
163
164        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
165    }
166
167    void Liikuta(PlatformCharacter hahmo, double nopeus)
168    {
169        hahmo.Walk(nopeus);
170    }
171
172    void Hyppaa(PlatformCharacter hahmo, double nopeus)
173    {
174        hahmo.Jump(nopeus);
175    }
176
177    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
178    {
179        maaliAani.Play();
180        MessageDisplay.Add("Keräsit kolikon!");
181        tahti.Destroy();
182    }
183    void PelaajaOsuu(PhysicsObject hahmo, PhysicsObject vihollinen)
184    {
185
186        pelaaja1.Destroy();
187
188        AloitaAlusta();
189
190
191
192
193    }
194    void AloitaAlusta()
195    {
196        ClearAll();
197        LuoKentta();
198        LisaaNappaimet();
199        Gravity = new Vector(0, -1000);
200
201
202        LuoPistelaskuri();
203
204
205
206
207        Camera.Follow(pelaaja1);
208        Camera.ZoomFactor = 1.2;
209        Camera.StayInLevel = true;
210
211    }IntMeter pisteLaskuri;
212
213    void LuoPistelaskuri()
214    {
215        pisteLaskuri = new IntMeter(0);
216
217
218        Label pisteNaytto = new Label();
219        pisteNaytto.X = Screen.Left + 100;
220        pisteNaytto.Y = Screen.Top - 100;
221        pisteNaytto.TextColor = Color.Black;
222        pisteNaytto.Color = Color.White;
223
224        IntMeter keratytEsineet = new IntMeter(0);
225
226
227
228        pisteNaytto.BindTo(pisteLaskuri);
229        Add(pisteNaytto);
230
231        pisteNaytto.IntFormatString = "rahaa: {0:D1}";
232
233    }
234    void AmmuAseella(PlatformCharacter pelaaja1)
235    {
236        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
237
238    }
239    void LisaaSeteli(Vector paikka, double leveys, double korkeus)
240    {
241        PhysicsObject seteli = PhysicsObject.CreateStaticObject(leveys, korkeus);
242        seteli .IgnoresCollisionResponse = true;
243        seteli.Position = paikka;
244        seteli.Image = setelikuva;
245        seteli.Tag = "seteli";
246        Add(seteli);
247
248
249
250    }
251
252}   
253
254
255
256     
257   
258
259
260
261   
262
Note: See TracBrowser for help on using the repository browser.