source: 2014/30/LauriR/tesohyppelytestaus/tesohyppelytestaus/tesohyppelytestaus/tesohyppelytestaus.cs @ 5673

Revision 5673, 8.6 KB checked in by lailrant, 9 years ago (diff)

Tasohyppelypelin viimeistelyä.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class tesohyppelytestaus : PhysicsGame
10{
11
12
13    const double nopeus = 200;
14    const double hyppyNopeus = 750;
15    const int RUUDUN_KOKO = 40;
16
17    PlatformCharacter pelaaja1;
18
19    Image pelaajanKuva = LoadImage("kuva4");
20    Image Sieni = LoadImage("sieni");
21    Image tahtiKuva = LoadImage("tahti");
22    Image Kissa = LoadImage("kissa");
23    Image Piikit = LoadImage("spikes");
24    Image taustaKuva = LoadImage("doge");
25    Image Piikit2 = LoadImage("piikit2");
26    Image poistu = LoadImage("exit");
27
28    Image[] juoksukuvat = LoadImages("kuva7", "kuva6", "kuva5", "kuva4", "kuva3", "kuva2", "kuva1");
29    Image[] paikallaan = LoadImages("kuva4");
30    Image[] hyppää = LoadImages("kuva4");
31    Image[] putoaa = LoadImages("kuva7");
32
33    SoundEffect maaliAani = LoadSoundEffect("maali");
34
35    Vector viimeisinCheckpoint;
36
37    IntMeter pisteLaskuri;
38   
39
40    public override void Begin()
41    {
42        IsFullScreen = true;
43
44        Gravity = new Vector(0, -1000);
45
46        LuoKentta();
47        LisaaNappaimet();
48        LuoPistelaskuri();
49
50        Camera.Follow(pelaaja1);
51        Camera.ZoomFactor = 1.2;
52        Camera.StayInLevel = true;
53    }
54
55    void LuoKentta()
56    {
57        TileMap kentta = TileMap.FromLevelAsset("kentta1");
58        kentta.SetTileMethod('#', LisaaTaso);
59        kentta.SetTileMethod('*', LisaaTahti);
60        kentta.SetTileMethod('N', LisaaPelaaja);
61        kentta.SetTileMethod('S', LisaaSieni2);
62        kentta.SetTileMethod('K', LisaaKissa);
63        kentta.SetTileMethod('P', LisaaPiikit);
64        kentta.SetTileMethod('E', LisaaExit);
65        kentta.SetTileMethod('M', LisaaCheckpoint);
66        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
67        Level.CreateBorders();
68        Level.Background.Image = taustaKuva;
69        Level.Background.FitToLevel();
70    }
71
72    void LisaaTaso(Vector paikka, double leveys, double korkeus)
73    {
74        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
75        taso.Position = paikka;
76        taso.Color = Color.Black;
77        Add(taso);
78    }
79
80    void LisaaTahti(Vector paikka, double leveys, double korkeus)
81    {
82        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys * 0.5, korkeus * 0.5);
83        tahti.IgnoresCollisionResponse = true;
84        tahti.Position = paikka;
85        tahti.Image = tahtiKuva;
86        tahti.Tag = "tahti";
87        Add(tahti);
88    }
89
90    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
91    {
92        viimeisinCheckpoint = paikka;
93        pelaaja1 = new PlatformCharacter(leveys, korkeus);
94        pelaaja1.Position = paikka;
95        pelaaja1.Mass = 4.0;
96        pelaaja1.Image = pelaajanKuva;
97        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
98        AddCollisionHandler(pelaaja1, "sieni", TormaaSieneen);
99        AddCollisionHandler(pelaaja1, "kissa", TormaaKissaan);
100        AddCollisionHandler(pelaaja1, "spikes", TormaaPiikkeihin);
101        AddCollisionHandler(pelaaja1, "exit", TormaaExit);
102        AddCollisionHandler(pelaaja1, "Checkpoint", TormaaCheckpoint);
103        Add(pelaaja1);
104        pelaaja1.AnimWalk = new Animation(juoksukuvat);
105        pelaaja1.AnimIdle = new Animation(paikallaan);
106        pelaaja1.AnimJump = new Animation(hyppää);
107        pelaaja1.AnimFall = new Animation(putoaa);
108
109    }
110
111    void LisaaNappaimet()
112    {
113        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
114        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");                                                           
115
116        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
117        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
118        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
119
120
121
122        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
123
124        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
125        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
126        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
127
128
129        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
130    }
131
132    void Liikuta(PlatformCharacter hahmo, double nopeus)
133    {
134        hahmo.Walk(nopeus);
135    }
136
137    void Hyppaa(PlatformCharacter hahmo, double nopeus)
138    {
139        hahmo.Jump(nopeus);
140    }
141
142    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
143    {
144        maaliAani.Play();
145        MessageDisplay.Add("Keräsit kranaatin :/");
146        tahti.Destroy();
147
148        pisteLaskuri.Value += 2;
149    }
150
151    void LisaaSieni2(Vector paikka, double leveys, double korkeus)
152    {
153        PhysicsObject sieni = PhysicsObject.CreateStaticObject(leveys * 1.0, korkeus * 1.0);
154        sieni.IgnoresCollisionResponse = true;
155        sieni.Position = paikka;
156        sieni.Image = Sieni;
157        sieni.Tag = "sieni";
158        Add(sieni);
159    }
160
161    void TormaaSieneen(PhysicsObject hahmo, PhysicsObject sieni)
162    {
163        maaliAani.Play();
164        MessageDisplay.Add("Keräsit kultaisensienen JEE :D");
165        sieni.Destroy();
166
167        pisteLaskuri.Value += 5;
168    }
169
170    void LisaaKissa(Vector paikka, double leveys, double korkeus)
171    {
172        PhysicsObject kissa = PhysicsObject.CreateStaticObject(leveys * 1.0, korkeus * 1.0);
173        kissa.IgnoresCollisionResponse = true;
174        kissa.Position = paikka;
175        kissa.Image = Kissa;
176        kissa.Tag = "kissa";
177        Add(kissa);
178
179    }
180
181    void TormaaKissaan(PhysicsObject hahmo, PhysicsObject kissa)
182    {
183        maaliAani.Play();
184        MessageDisplay.Add("oisuit kissaan auts");
185        //hahmo.Destroy();
186        hahmo.Position = viimeisinCheckpoint;
187
188        pisteLaskuri.Value -= 2;
189    }
190
191
192    void LisaaPiikit(Vector paikka, double leveys, double korkeus)
193    {
194        PhysicsObject spikes = PhysicsObject.CreateStaticObject(leveys * 1.0, korkeus -5.0);
195        spikes.Y -= 2.5;
196        spikes.IgnoresCollisionResponse = true;
197        spikes.Position = paikka;
198        spikes.Image = Piikit;
199        spikes.Tag = "spikes";
200        Add(spikes);
201    }
202
203    void TormaaPiikkeihin(PhysicsObject hahmo, PhysicsObject spikes)
204    {
205        maaliAani.Play();
206        MessageDisplay.Add("EN VOI HYVIN!!!");
207        //hahmo.Destroy();
208        hahmo.Position = viimeisinCheckpoint;
209
210        pisteLaskuri.Value -= 2;
211    }
212
213    void LisaaExit(Vector paikka, double leveys, double korkeus)
214    {
215        PhysicsObject exit = PhysicsObject.CreateStaticObject(leveys * 2.5, korkeus * 2.5);
216        exit.IgnoresCollisionResponse = true;
217        exit.Position = paikka;
218        exit.Image = poistu;
219        exit.Tag = "exit";
220        Add(exit);
221    }
222    void TormaaExit(PhysicsObject hahmo, PhysicsObject exit)
223    {
224        maaliAani.Play();
225        MessageDisplay.Add("voitit pelin!");
226        pisteLaskuri.Value += 50;  //49
227    }
228
229    void LisaaCheckpoint(Vector paikka, double leveys, double korkeus)
230    {
231        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
232        taso.IgnoresCollisionResponse = true;
233        taso.Position = paikka;
234        taso.Color = Color.Azure;
235        taso.Tag = "Checkpoint";
236        Add(taso);
237    }
238
239    void TormaaCheckpoint(PhysicsObject hahmo, PhysicsObject Checkpoint)
240    {
241        viimeisinCheckpoint = Checkpoint.Position;
242    }
243
244   
245
246    void LuoPistelaskuri()
247    {
248        pisteLaskuri = new IntMeter(0);
249
250        Label pisteNaytto = new Label();
251        pisteNaytto.X = Screen.Left + 100;
252        pisteNaytto.Y = Screen.Top - 100;
253        pisteNaytto.TextColor = Color.Red;
254        pisteNaytto.Color = Color.Black;
255        pisteNaytto.Title = "Pisteet";
256
257        pisteNaytto.BindTo(pisteLaskuri);
258        Add(pisteNaytto);
259
260        IntMeter keratytEsineet = new IntMeter(0);
261        pisteLaskuri.MaxValue = 99;
262        pisteLaskuri.UpperLimit += KaikkiKeratty;
263
264        IntMeter pelaajanElamat = new IntMeter(3);
265        pisteLaskuri.MinValue = -50;
266        pisteLaskuri.LowerLimit += PelaajaHaviaa;
267    }
268
269    void KaikkiKeratty()
270    {
271        MessageDisplay.Add("Pelaaja 1 voitti pelin.");
272    }
273
274    void PelaajaHaviaa()
275    {
276        MessageDisplay.Add("Pelaaja 1 hävisi pelin.");
277    }
278
279 
280
281
282} 
Note: See TracBrowser for help on using the repository browser.