source: 2015/27/JaakkoS/Tikku/Tikku/Tikku/Tikku.cs @ 6734

Revision 6734, 8.3 KB checked in by jasukuva, 4 years ago (diff)

alku valikon poikasta tein ja kentän vaihtuessa tulevan bugin ja etta kun keräät kynän saat lisää sydämmiä

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Tikku : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    int kenttaNro = 1;
16
17
18
19    PlatformCharacter pelaaja1;
20    PlatformCharacter vihu1;
21
22    List<Label> valintakohdat;
23
24    IntMeter elamalaskuri;
25
26    List<Widget> pelaajansydammet = new List<Widget>();
27
28    Image pelaajanKuva = LoadImage("Pelaaja");
29    Image tahtiKuva = LoadImage("tahti");
30    Image vihuKuva = LoadImage("AUTO");
31    Image kynaKuva = LoadImage("kyna");
32
33    SoundEffect maaliAani = LoadSoundEffect("maali");
34    bool onmenettanytenergiaa = false;
35
36    Widget sydammet;
37
38
39    public override void Begin()
40    {
41        SeuraavaKentta();
42        SmoothTextures = false;
43        Valikko();
44        IsMouseVisible = true;
45    }
46
47 
48    void LuoKentta(string kenttaTiedostonNimi)
49    {
50        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
51        kentta.SetTileMethod('#', LisaaTaso);
52        kentta.SetTileMethod('!', LisaaTappavaTaso);
53        kentta.SetTileMethod('*', LisaaTahti);
54        kentta.SetTileMethod('N', LisaaPelaaja);
55        kentta.SetTileMethod('V', LisaaVihu);
56        kentta.SetTileMethod('K', Lisaakyna);
57
58        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
59
60
61        PhysicsObject alaReuna = Level.CreateBottomBorder();
62        alaReuna.Restitution = 1.0;
63        alaReuna.IsVisible = false;
64        alaReuna.Tag = "alaReuna";
65
66        PhysicsObject oikeaReuna = Level.CreateRightBorder();
67        oikeaReuna.Restitution = 1.0;
68        oikeaReuna.IsVisible = false;
69
70        PhysicsObject vasenReuna = Level.CreateLeftBorder();
71        vasenReuna.Restitution = 1.0;
72        vasenReuna.IsVisible = false;
73
74        TileMap ruudut = TileMap.FromLevelAsset(kenttaTiedostonNimi);
75
76        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
77    }
78
79    void LisaaTaso(Vector paikka, double leveys, double korkeus)
80    {
81        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
82        taso.Position = paikka;
83        taso.Color = Color.Brown;
84        Add(taso);
85    }
86    void LisaaTappavaTaso(Vector paikka, double leveys, double korkeus)
87    {
88        PhysicsObject tappavataso = PhysicsObject.CreateStaticObject(leveys, korkeus);
89        tappavataso.Position = paikka;
90        tappavataso.Color = Color.Brown;
91        tappavataso.Tag = "tappavapalikka";
92        Add(tappavataso);
93    }
94
95    void LisaaTahti(Vector paikka, double leveys, double korkeus)
96    {
97        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
98        tahti.IgnoresCollisionResponse = true;
99        tahti.Position = paikka;
100        tahti.Image = tahtiKuva;
101        tahti.Tag = "tahti";
102        Add(tahti);
103    }
104
105    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
106    {
107        pelaaja1 = new PlatformCharacter(leveys, korkeus);
108        pelaaja1.Position = paikka;
109        pelaaja1.Mass = 4.0;
110        pelaaja1.Image = pelaajanKuva;
111        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
112        AddCollisionHandler(pelaaja1, "kyna", TormaaKynaan);
113        AddCollisionHandler(pelaaja1, "alaReuna", Putoaa);
114        AddCollisionHandler(pelaaja1, "tappavapalikka", Kuole);
115        AddCollisionHandler(pelaaja1, "vihu", Kuole);
116
117        Add(pelaaja1);
118    }
119
120    void LisaaVihu(Vector paikka, double leveys, double korkeus)
121    {
122        vihu1 = new PlatformCharacter(70.0, 25.0);
123        vihu1.Position = paikka;
124        vihu1.Mass = 4.0;
125        vihu1.Image = vihuKuva;
126
127        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
128        tasoAivot.Speed = 100;
129        vihu1.Brain = tasoAivot;
130
131        vihu1.Tag = "vihu";
132        Add(vihu1);
133    }
134
135    void Lisaakyna(Vector paikka, double leveys, double korkeus)
136    {
137        PhysicsObject kyna = PhysicsObject.CreateStaticObject(leveys, korkeus);
138        kyna.IgnoresCollisionResponse = true;
139        kyna.Position = paikka;
140        kyna.Image = kynaKuva;
141        kyna.Tag = "kyna";
142        Add(kyna);
143    }
144
145
146    void LisaaNappaimet()
147    {
148        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
149        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
150
151        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
152        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
153
154        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
155
156
157        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
158        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
159
160        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, Aloita, null);
161
162        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
163    }
164
165    void Liikuta(PlatformCharacter hahmo, double nopeus)
166    {
167        hahmo.Walk(nopeus);
168    }
169
170    void Hyppaa(PlatformCharacter hahmo, double nopeus)
171    {
172        hahmo.Jump(nopeus);
173    }
174
175    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
176    {
177        maaliAani.Play();
178        tahti.Destroy();
179        kenttaNro++;
180        SeuraavaKentta();
181
182    }
183
184    void TormaaKynaan(PhysicsObject hahmo, PhysicsObject kyna)
185    {
186        MessageDisplay.Add("Sait lisää elämää!");
187        elamalaskuri.Value++;
188        kyna.Destroy();
189        LisaaYksiUusiSydan();
190    }
191
192    void Putoaa(PhysicsObject hahmo, PhysicsObject kolo)
193    {
194        hahmo.Destroy();
195        MessageDisplay.Add("Kuolit :(");
196        Timer.SingleShot(3.0, Exit);
197        SeuraavaKentta();
198
199    }
200
201
202    void Kuole(PhysicsObject hahmo, PhysicsObject vihu)
203    {
204        if (onmenettanytenergiaa == false)
205        {
206            if (elamalaskuri.Value >= 0 || pelaajansydammet[elamalaskuri.Value] != null)
207            {
208                elamalaskuri.Value--;
209                onmenettanytenergiaa = true;
210                Timer.SingleShot(0.1, delegate { onmenettanytenergiaa = false; });
211                pelaajansydammet[elamalaskuri.Value].Destroy();
212            }
213            if (elamalaskuri.Value < 1)
214            {
215                hahmo.Destroy();
216                MessageDisplay.Add("Kuolit :(");
217                Timer.SingleShot(3.0, SeuraavaKentta);
218                pelaajansydammet.Clear();
219            }
220        }
221
222    }
223
224    void LuoSydammet()
225    {
226        HorizontalLayout asettelu = new HorizontalLayout();
227        asettelu.Spacing = 3;
228
229        sydammet = new Widget(asettelu);
230        sydammet.Color = Color.Transparent;
231        sydammet.X = Screen.Center.X;
232        sydammet.Y = Screen.Top - 30;
233        Add(sydammet);
234
235        pelaajansydammet.Clear();
236        for (int i = 0; i < 3; i++)
237        {
238            LisaaYksiUusiSydan();
239        }
240    }
241
242    void LisaaYksiUusiSydan()
243    {
244        Widget sydan = new Widget(30, 30, Shape.Heart);
245        sydan.Color = Color.Red;
246        sydammet.Add(sydan);
247        pelaajansydammet.Add(sydan);
248    }
249
250    void SeuraavaKentta()
251    {
252
253        ClearAll();
254        LuoSydammet();
255
256        elamalaskuri = new IntMeter(3, 0, 3);
257
258        if (kenttaNro == 1) LuoKentta("kentta1");
259        else if (kenttaNro == 2) LuoKentta("kentta2");
260        else if (kenttaNro == 3) MessageDisplay.Add("Voitit pelin");
261        if (kenttaNro == 3) Timer.SingleShot(3.0, Exit);
262
263
264        LisaaNappaimet();
265
266
267
268
269        Camera.Follow(pelaaja1);
270        Camera.ZoomFactor = 1.2;
271        Camera.StayInLevel = true;
272
273        Gravity = new Vector(0, -1000);
274    }
275
276    void Valikko()
277    {
278        ClearAll();
279
280        valintakohdat = new List<Label>();
281
282        Label kohta1 = new Label("Aloita");
283        kohta1.Position = new Vector(0, 40);
284        valintakohdat.Add(kohta1);
285
286        Label kohta2 = new Label("Lopeta");
287        kohta2.Position = new Vector(0, 50);
288        valintakohdat.Add(kohta2);
289
290        foreach (Label valintaKohta in valintakohdat)
291        {
292            Add(valintaKohta);
293        }
294    }
295
296}
Note: See TracBrowser for help on using the repository browser.