source: 2013/42/CarmenP/Viidakkohyppely/Viidakkohyppely/Viidakkohyppely/Viidakkohyppely.cs @ 4770

Revision 4770, 6.5 KB checked in by anlakane, 6 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 Viidakkohyppely : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 30;
14
15    PlatformCharacter pelaaja1;
16    TileMap kentta;
17    string taso = "kentta1";
18    int kenttalaskuri = 1;
19
20    Label tekstikentta;
21
22    IntMeter pisteLaskuri;
23
24    Image pelaajanKuva = LoadImage("viidakkomies");
25    Image tahtiKuva = LoadImage("bansku");
26    Image maaliovi = LoadImage("maaliovi");
27
28    List<Label> valikonKohdat;
29
30    //SoundEffect maaliAani = LoadSoundEffect("Windows Exclamation");
31
32    public override void Begin()
33    {
34        Valikko();
35
36    }
37
38    void AloitaPeli()
39    {
40        ClearAll();
41        Mouse.IsCursorVisible = false;
42        LuoPistelaskuri();
43
44        LuoKentta();
45        LisaaNappaimet();
46    }
47
48    void LuoKentta()
49    {
50        Gravity = new Vector(0, -1000);
51       
52
53        kentta = TileMap.FromLevelAsset(taso);
54        kentta.SetTileMethod('#', LisaaTaso);
55        kentta.SetTileMethod('-', LisaaVesi);
56        kentta.SetTileMethod('*', LisaaBanaani);
57        kentta.SetTileMethod('N', LisaaPelaaja);
58        kentta.SetTileMethod('M', LisaaMaali);
59        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
60        Level.CreateBorders();
61        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
62
63        Camera.Follow(pelaaja1);
64        Camera.ZoomFactor = 2.0;
65        Camera.StayInLevel = true;
66    }
67
68    void LisaaTaso(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        taso.Position = paikka;
72        taso.Color = Color.Green;
73        Add(taso);
74    }
75
76    void LisaaVesi(Vector paikka, double leveys, double korkeus)
77    {
78        PhysicsObject vesi = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        vesi.Position = paikka;
80        vesi.Color = Color.Blue;
81        vesi.Tag = "vesi";
82        Add(vesi);
83    }
84
85    void LisaaBanaani(Vector paikka, double leveys, double korkeus)
86    {
87        PhysicsObject banaani = PhysicsObject.CreateStaticObject(leveys, korkeus);
88        banaani.IgnoresCollisionResponse = true;
89        banaani.Position = paikka;
90        banaani.Image = tahtiKuva;
91        banaani.Tag = "banaani";
92        Add(banaani);
93    }
94
95    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
96    {
97        pelaaja1 = new PlatformCharacter(leveys, korkeus);
98        pelaaja1.Position = paikka;
99        pelaaja1.Mass = 4.0;
100        pelaaja1.Image = pelaajanKuva;
101        AddCollisionHandler(pelaaja1, "banaani", TormaaBanaaniin);
102        AddCollisionHandler(pelaaja1, "banaani", CollisionHandler.AddMeterValue(pisteLaskuri,100));
103
104        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
105        AddCollisionHandler(pelaaja1, "vesi", TormaaVeteen);
106        Add(pelaaja1);
107    }
108
109    void LisaaMaali(Vector paikka, double leveys, double korkeus)
110    {
111        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
112        maali.Position = paikka;
113        maali.Image = maaliovi;
114        maali.Tag = "maali";
115        Add(maali);
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
124        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
125        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
126        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
127
128        Keyboard.Listen(Key.Enter, ButtonState.Pressed, AloitaAlusta, "Aloittaa alusta");
129    }
130
131    void Liikuta(PlatformCharacter hahmo, double nopeus)
132    {
133        hahmo.Walk(nopeus);
134    }
135
136    void Hyppaa(PlatformCharacter hahmo, double nopeus)
137    {
138       hahmo.Jump(nopeus);
139    }
140
141    void TormaaBanaaniin(PhysicsObject hahmo, PhysicsObject banaani)
142    {
143        MessageDisplay.Add("Keräsit banaanin!");
144        banaani.Destroy();
145    }
146    void TormaaMaaliin(PhysicsObject hahmo, PhysicsObject maali)
147    {
148        if(pisteLaskuri.Value >= 400)
149        {
150            //maaliAani.Play();
151            tekstikentta = new Label("HURRAA!!! Voitit! Paina Enteriä niin pääset seuraavalle tasolle");
152            Add(tekstikentta);
153            //Pause();
154            kenttalaskuri++;
155            taso = "kentta"+kenttalaskuri;
156            hahmo.Destroy();
157        }
158        else
159        {
160            tekstikentta = new Label("Hyvä! Pääsit maaliin, mutta sinun täytyy kerätä 4 banaania jotta pääset seuravavalle tasolle.");
161            Add(tekstikentta);
162            Timer.SingleShot(3.0, TuhoaTeksti);
163        }
164    }
165
166    void TuhoaTeksti()
167    {
168        tekstikentta.Destroy();
169    }
170
171    void TormaaVeteen(PhysicsObject hahmo, PhysicsObject vesi)
172    {
173        Label tekstikentta = new Label("Sinä kuolit... Paina Enteriä, jotta voit aloittaa tason uudestaan");
174        Add(tekstikentta);
175        hahmo.Destroy();
176    }
177
178    void AloitaAlusta()
179    {
180        ClearAll();
181        Begin();
182    }
183
184    void LuoPistelaskuri()
185    {
186        pisteLaskuri = new IntMeter(0);
187
188        Label pisteNaytto = new Label();
189        pisteNaytto.X = Screen.Left + 100;
190        pisteNaytto.Y = Screen.Top - 100;
191        pisteNaytto.TextColor = Color.Purple;
192        pisteNaytto.Color = Color.LightBlue;
193            pisteNaytto.BindTo(pisteLaskuri);
194        Add(pisteNaytto);
195    }
196
197
198    void Valikko()
199    {
200        ClearAll();
201
202        valikonKohdat = new List<Label>();
203
204        Label kohta1 = new Label("Aloita peli");
205        kohta1.Position = new Vector(0,40);
206        valikonKohdat.Add(kohta1);
207        Label kohta2 = new Label("Lopeta peli");
208        kohta2.Position = new Vector(0,0);
209
210        valikonKohdat.Add(kohta2);
211       
212        foreach (Label valikonKohta in valikonKohdat)
213        {
214            Add(valikonKohta);
215        }
216        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
217        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, LopetaPeli, null);
218        Mouse.IsCursorVisible = true;
219
220    }
221
222
223    void LopetaPeli()
224    {
225        Exit();
226    }
227
228}
Note: See TracBrowser for help on using the repository browser.