source: 2015/24/OlaviL/Tasohyppelypeli5/Tasohyppelypeli5/Tasohyppelypeli5/Tasohyppelypeli5.cs @ 6069

Revision 6069, 8.2 KB checked in by olarkala, 4 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 Tasohyppelypeli5 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    List<Label> valikonKohdat;
16
17    Image olionKuva = LoadImage("gem");
18
19    PlatformCharacter timantti;
20    PhysicsObject ylaReuna;
21
22    int kenttaNro = 1;
23
24    Image pelaajanKuva = LoadImage("Diamond-02-copy");
25    Image tahtiKuva = LoadImage("Diamond-02-copy");
26
27    SoundEffect maaliAani = LoadSoundEffect("maali");
28    public override void Begin()
29    {
30        Valikko();
31        Mouse.IsCursorVisible = true;
32
33       
34       
35    }
36
37    void LuoKentta()
38    {
39
40        if (kenttaNro > 4)
41        {
42            ClearAll();
43            MessageDisplay.Add("Voitit pelin!!!");
44            MessageDisplay.Position = Vector.Zero;
45            Level.BackgroundColor = Color.Black;
46
47
48
49            Timer.SingleShot(4.0, ConfirmExit);
50            return;
51        }
52
53        ylaReuna = Level.CreateTopBorder();
54        ylaReuna.Restitution = 1.0;
55        ylaReuna.IsVisible = false;
56
57        Camera.Follow(timantti);
58        LuoPistelaskuri();
59       
60        TileMap ruudut = TileMap.FromLevelAsset("kentta"+kenttaNro);
61
62        ruudut.SetTileMethod('K', LisaaKolikko);
63        ruudut.SetTileMethod('#', LisaaTaso);
64        ruudut.SetTileMethod('*', LisaaTahti);
65        ruudut.SetTileMethod('T', LisaaPelaaja);
66
67        ruudut.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
68
69        Level.CreateBorders();
70        Level.Background.CreateStars(10000);
71        Gravity = new Vector(0.0, -800.0);
72    AddCollisionHandler(timantti, "pahis", LisaaRajahdys);
73
74   
75    }
76
77    void LisaaTaso(Vector paikka, double leveys, double korkeus)
78    {
79        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); // Nämä ovat ruutuja, joiden päällä hyppiä.
80        taso.Position = paikka;
81        taso.Color = Color.Green;
82        Add(taso);
83    }
84   
85    void LisaaTahti(Vector paikka, double leveys, double korkeus)
86    {
87        PhysicsObject kolikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
88        kolikko.IgnoresCollisionResponse = true;
89        kolikko.Position = paikka;
90        kolikko.Image = tahtiKuva;
91        kolikko.Tag = "pahis";
92        Add(kolikko);
93    }
94
95
96
97    void LisaaKolikko(Vector paikka, double leveys, double korkeus)
98    {
99        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
100        tahti.IgnoresCollisionResponse = true;
101        tahti.Position = paikka;
102        tahti.Image = tahtiKuva;
103        tahti.Tag = "paha";
104        Add(tahti);
105
106    }
107    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
108    {
109        timantti = new PlatformCharacter(leveys, korkeus);
110        timantti.Position = paikka;
111        timantti.Mass = 4.0;
112        timantti.Image = pelaajanKuva;
113        AddCollisionHandler(timantti, "paha", TormaaTahteen);
114        Add(timantti);
115       
116
117    }
118
119    void LisaaNappaimet()
120    {
121        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
122        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
123        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
124        Keyboard.Listen(Key.B, ButtonState.Pressed, KohdistaKamera, "Kohdistaa kameran pelaajaan");
125        Keyboard.Listen(Key.N, ButtonState.Pressed, KaikkiKeratty, "Tekee jotain");
126
127        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", timantti, -nopeus);
128        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", timantti, nopeus);
129        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", timantti, hyppyNopeus);
130        Keyboard.Listen(Key.R, ButtonState.Down, AloitaAlusta, "Aloittaa pelin alusta. Jos kenttää vaihtaessa kamera kohdistuu väärin, Aloita kenttä alusta");
131
132
133        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
134        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", timantti, -nopeus);
135        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", timantti, nopeus);
136        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", timantti, hyppyNopeus);
137        ControllerOne.Listen(Button.X, ButtonState.Down, AloitaAlusta, "Aloittaa pelin alusta. Jos kenttää vaihtaessa kamera kohdistuu väärin, Aloita kenttä alusta");
138        ControllerOne.Listen(Button.Y, ButtonState.Pressed, Pause, "Pysäyttää pelin");
139
140        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
141
142       
143       
144    }
145    void KohdistaKamera()
146    {
147        Camera.Follow(timantti);
148        ClearControls();
149        LisaaNappaimet();
150    }
151
152    void Liikuta(PlatformCharacter hahmo, double nopeus)
153    {
154        hahmo.Walk(nopeus);
155    }
156
157    void Hyppaa(PlatformCharacter hahmo, double nopeus)
158    {
159        hahmo.Jump(nopeus);
160    }
161
162    void TormaaTahteen(PhysicsObject timantti , PhysicsObject kolikko)
163    {
164        maaliAani.Play();
165        kolikko.Destroy();
166        pisteLaskuri.Value += 1;
167    }
168
169    void AloitaAlusta()
170    {
171        ClearAll();
172        LuoKentta();
173        LisaaNappaimet();
174        Camera.Follow(timantti);
175       
176    }
177
178    IntMeter pisteLaskuri;
179
180    void LuoPistelaskuri()
181    {
182        pisteLaskuri = new IntMeter(0);
183
184        Label pisteNaytto = new Label();
185        pisteNaytto.X = Screen.Left + 400;
186        pisteNaytto.Y = Screen.Top - 100;
187        pisteNaytto.TextColor = Color.Black;
188        pisteNaytto.Color = Color.White;
189        pisteNaytto.Title = "Timantit";
190
191
192        IntMeter keratytEsineet = new IntMeter(0);
193        pisteLaskuri.MaxValue = 1;
194        pisteLaskuri.UpperLimit += KaikkiKeratty;
195
196        pisteNaytto.BindTo(pisteLaskuri);
197        Add(pisteNaytto);
198
199    }
200
201
202
203
204    void KaikkiKeratty()
205    {
206        MessageDisplay.Add("Voitit! Nyt voit leikkiä kaikella muulla.");
207        kenttaNro++;
208        AloitaAlusta();
209    }
210   
211    void LuoAikaLaskuri(double x, double y)
212    {
213        Timer aikaLaskuri = new Timer();
214        aikaLaskuri.Start();
215
216        Label aikaNaytto = new Label();
217        aikaNaytto.TextColor = Color.White;
218        aikaNaytto.DecimalPlaces = 1;
219        aikaNaytto.X = 400.0;
220        aikaNaytto.Y = 400.0;
221        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
222        Add(aikaNaytto);
223    }
224
225   
226void LisaaRajahdys(PhysicsObject tormaaja, PhysicsObject kohde)
227{
228    Explosion rajahdys = new Explosion(2000);
229    rajahdys.Position = kohde.Position;
230    kohde.Destroy();
231    Add(rajahdys);
232}
233void Valikko()
234{
235    ClearAll(); // Tyhjennetään kenttä kaikista peliolioista
236
237    valikonKohdat = new List<Label>(); // Alustetaan lista, johon valikon kohdat tulevat
238
239    Label kohta1 = new Label("Aloita uusi peli"); 
240    kohta1.Position = new Vector(0, 40); 
241    valikonKohdat.Add(kohta1); 
242    Label kohta2 = new Label("Lopeta peli");
243    kohta2.Position = new Vector(0, 0);
244    valikonKohdat.Add(kohta2);
245
246
247
248
249    foreach (Label valikonKohta in valikonKohdat)
250    {
251        Add(valikonKohta);
252    }
253    Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
254    Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
255    Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
256}
257void AloitaPeli()
258{
259    ClearAll();
260    Gravity = new Vector(0, -1000);
261    LuoKentta();
262    LisaaNappaimet();
263    LuoPistelaskuri();
264    LuoAikaLaskuri(400.0, 400.0);
265
266    IsFullScreen = true;
267
268
269    Camera.Follow(timantti);
270    Camera.ZoomFactor = 1.2;
271    Camera.StayInLevel = true;
272
273
274}
275void ValikossaLiikkuminen(AnalogState hiirenTila)
276{
277    foreach (Label kohta in valikonKohdat)
278    {
279        if (Mouse.IsCursorOn(kohta))
280        {
281            kohta.TextColor = Color.Red;
282        }
283        else
284        {
285            kohta.TextColor = Color.Black;
286        }
287
288    }
289}
290
291
292
293
294}
Note: See TracBrowser for help on using the repository browser.