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

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