source: 2012/10-20/NicoA-K/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 3877

Revision 3877, 8.2 KB checked in by jotapoti, 9 years ago (diff)

versio 17.11.2012 aamulla

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    IntMeter pisteLaskuri;
16
17    PlatformCharacter pelaaja1;
18    //PhysicsObject pelaaja1;
19
20    Image pelaajanKuva = LoadImage("hhaamu");
21    Image tahtiKuva = LoadImage("karrkki");
22    Image TasoKuva = LoadImage("kurpiza");
23    Image pahisKuva = LoadImage("pahapiza");
24    Image mitäKuva = LoadImage("mitä");
25    Image salaKuva = LoadImage("sala");
26    Image trollikuva = LoadImage("trollface");
27    Image trollikarkki = LoadImage ("trollikarkki");
28    Image lippu = LoadImage("lippu");
29
30    SoundEffect maaliAani = LoadSoundEffect("maali");
31
32    PhysicsObject viimeksiOsuttuTrolliseina;
33
34    public override void Begin()
35    {
36        Gravity = new Vector(0, -1000);
37
38        LuoKentta();
39        LisaaNappaimet();
40        LuoPistelaskuri();
41
42        Camera.Follow(pelaaja1);
43        Camera.ZoomFactor = 1.2;
44        Camera.StayInLevel = true;
45    }
46
47    void LuoKentta()
48    {
49        TileMap kentta = TileMap.FromLevelAsset("kentta1");
50        kentta.SetTileMethod('#', LisaaTaso);
51        kentta.SetTileMethod('*', LisaaTahti);
52        kentta.SetTileMethod('N', LisaaPelaaja);
53        kentta.SetTileMethod('P', LisaaPahis);
54        kentta.SetTileMethod('?', LisaaMitä);
55        kentta.SetTileMethod('S', LisaaSala);
56        kentta.SetTileMethod('T', LisaaTrolliseina);
57        kentta.SetTileMethod('K', LisaaTrollikarkki);
58        kentta.SetTileMethod('M', LisaaTrolleri);
59
60        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
61        Level.CreateBorders();
62        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
63    }
64
65    void LisaaTaso(Vector paikka, double leveys, double korkeus)
66    {
67        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
68        taso.Position = paikka;
69        //taso.Color = Color.Orange;
70        taso.Image = TasoKuva;
71        Add(taso);
72    }
73
74    void LisaaTahti(Vector paikka, double leveys, double korkeus)
75    {
76        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
77        tahti.IgnoresCollisionResponse = true;
78        tahti.Position = paikka;
79        tahti.Image = tahtiKuva;
80        tahti.Tag = "tahti";
81        Add(tahti);
82    }
83
84    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
85    {
86        pelaaja1 = new PlatformCharacter(38, 38);
87        pelaaja1.Position = paikka;
88        pelaaja1.Mass = 4.0;
89        pelaaja1.Image = pelaajanKuva;
90        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
91        AddCollisionHandler(pelaaja1, "pahis", TormaaPahikseen);
92        AddCollisionHandler(pelaaja1, "mitä", TormaaMitaan);
93        AddCollisionHandler(pelaaja1, "trolliseina", TormaaTrolliseinaan);
94        AddCollisionHandler(pelaaja1, "karkki", Tormaatrollikarkkiin);
95        AddCollisionHandler(pelaaja1, "trolleri", TormaaTrolleriin);
96        Add(pelaaja1);
97    }
98
99    void LisaaNappaimet()
100    {
101        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
102        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
103
104        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
105        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
106        Keyboard.Listen(Key.Up, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
107
108        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
109
110        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
111        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
112        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
113
114        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
115    }
116
117    void Liikuta(PlatformCharacter hahmo, double nopeus)
118    {
119        hahmo.Walk(nopeus);
120    }
121
122    void Hyppaa(PlatformCharacter hahmo, double nopeus)
123    {
124        hahmo.Velocity = new Vector(hahmo.Velocity.X, hahmo.Velocity.Y + 30);
125        //hahmo.Jump(nopeus);
126    }
127
128    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
129    {
130        maaliAani.Play();
131        MessageDisplay.Add("NAM!");
132        tahti.Destroy();
133        pisteLaskuri.Value += 1;
134    }
135
136   
137
138    void LuoPistelaskuri()
139    {
140        pisteLaskuri = new IntMeter(0);
141
142
143        Label pisteNaytto = new Label();
144        pisteNaytto.Title = "pisteet";
145        pisteNaytto.X = Screen.Left + 100;
146        pisteNaytto.Y = Screen.Top - 100;
147        pisteNaytto.TextColor = Color.Black;
148        pisteNaytto.Color = Color.White;
149
150        pisteNaytto.BindTo(pisteLaskuri);
151        Add(pisteNaytto);
152    }
153
154   
155    void LisaaPahis(Vector paikka, double leveys, double korkeus)
156    {
157        PhysicsObject pahis = PhysicsObject.CreateStaticObject(leveys, korkeus);
158        pahis.IgnoresCollisionResponse = false;
159        pahis.Position = paikka;
160        pahis.Image = pahisKuva;
161        pahis.Tag = "pahis";
162        Add(pahis);
163
164    }
165
166
167    void TormaaPahikseen(PhysicsObject hahmo, PhysicsObject pahis)
168    {
169        //maaliAani.Play();
170        MessageDisplay.Add("AU!");
171        pisteLaskuri.Value -= 1;
172    }
173
174
175    void LisaaMitä(Vector paikka, double leveys, double korkeus)
176    {
177        PhysicsObject mitä = PhysicsObject.CreateStaticObject(leveys, korkeus);
178        mitä.IgnoresCollisionResponse = true;
179        mitä.Position = paikka;
180        mitä.Image = mitäKuva;
181        mitä.Tag = "mitä";
182        Add(mitä);
183
184    }
185
186   
187    void TormaaMitaan(PhysicsObject hahmo, PhysicsObject mitä)
188    {
189        MessageDisplay.Add(" varo punaisia palikoita!");
190    }
191
192   
193    void LisaaSala(Vector paikka, double leveys, double korkeus)
194    {
195        PhysicsObject sala = PhysicsObject.CreateStaticObject(leveys, korkeus);
196        sala.IgnoresCollisionResponse = true;
197        sala.Position = paikka;
198        sala.Image = salaKuva;
199        sala.Tag = "sala";
200        Add(sala);
201    }
202
203
204    void LisaaTrolliseina(Vector paikka, double leveys, double korkeus)
205    {
206        PhysicsObject trolliseina = PhysicsObject.CreateStaticObject(leveys, korkeus);
207        trolliseina.IgnoresCollisionResponse = false;
208        trolliseina.Position = paikka;
209        trolliseina.Color = Color.Transparent;
210        trolliseina.Tag = "trolliseina";
211        Add(trolliseina);
212    }
213
214    void TormaaTrolliseinaan(PhysicsObject hahmo, PhysicsObject trolliseina)
215    {
216        trolliseina.Image = trollikuva;
217        if (viimeksiOsuttuTrolliseina != null) PiilotaTrolliseina();
218        viimeksiOsuttuTrolliseina = trolliseina;
219        Timer.SingleShot(2.0, PiilotaTrolliseina);
220       
221
222    }
223
224    void PiilotaTrolliseina()
225    {
226        viimeksiOsuttuTrolliseina.Image = null;
227
228    }
229
230    void LisaaTrollikarkki(Vector paikka, double leveys, double korkeus)
231    {
232        PhysicsObject karkki = PhysicsObject.CreateStaticObject(leveys, korkeus);
233        //karkki.IgnoresCollisionResponse = true;
234        karkki.Position = paikka;
235        karkki.Image = trollikarkki;
236        karkki.Tag = "karkki";
237        Add(karkki);
238    }
239
240
241
242    void Tormaatrollikarkkiin(PhysicsObject hahmo, PhysicsObject karkki)
243    {
244        MessageDisplay.Add("O.O");
245        pisteLaskuri.Value += 1000;
246        karkki.Destroy();
247
248    }
249
250
251    void LisaaTrolleri(Vector paikka, double leveys, double korkeus)
252    {
253        PhysicsObject trolleri = PhysicsObject.CreateStaticObject(200, 200);
254        trolleri.IgnoresCollisionResponse = true;
255        trolleri.Position = paikka;
256        trolleri.Image = trollikuva;
257        trolleri.Tag = "trolleri";
258        Add(trolleri);
259    }
260
261
262    void TormaaTrolleriin(PhysicsObject hahmo, PhysicsObject trolleri)
263    {
264        //maaliAani.Play();
265        MessageDisplay.Add("GAME OVER!");
266        pisteLaskuri.Value -= 10000;
267    }
268
269
270}
271
Note: See TracBrowser for help on using the repository browser.