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

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