source: 2015/27/AnttiV/hyppelypeli/hyppelypeli/hyppelypeli/hyppelypeli.cs @ 6679

Revision 6679, 8.0 KB checked in by misakana, 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 hyppelypeli : PhysicsGame
10{
11
12    List<Label> valikonKohdat;
13    List<Label>kohta1;
14   
15
16    int kenttaNro = 1;
17
18    const double nopeus = 600;
19    const double hyppyNopeus = 750;
20    const int RUUDUN_KOKO = 55;
21
22    PlatformCharacter pelaaja1;
23
24    Image pelaajanKuva = LoadImage("1var");
25    Image vihuKuva = LoadImage("vihu");
26    Image piikkiKuva = LoadImage("piikki");
27    Image lippuKuva = LoadImage("lippu");
28   // Image[] kavelykuvat = LoadImages("1var", "2", "3");
29
30    SoundEffect maaliAani = LoadSoundEffect("maali");
31
32    Vector checkpoint;
33
34
35    public override void Begin()
36    {
37
38        SeuraavaKentta();
39
40    }
41
42    void LuoKentta(string kentannimi)
43    {
44
45        TileMap kentta = TileMap.FromLevelAsset(kentannimi);
46        kentta.SetTileMethod('#', LisaaTaso);
47        kentta.SetTileMethod('*', LisaaVihu);
48        kentta.SetTileMethod('N', LisaaPelaaja);
49        kentta.SetTileMethod('P', LisaaPiikki);
50        kentta.SetTileMethod('C', LisaaCheck);
51        kentta.SetTileMethod('V', LisaaVoitto);
52        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
53        Level.CreateBorders();
54    }
55
56    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
57    {
58        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
59        piikki.Position = paikka;
60        piikki.Color = Color.Red;
61        Add(piikki);
62        piikki.Image = piikkiKuva;
63        piikki.Tag = "piikki";
64
65    }
66
67    void LisaaTaso(Vector paikka, double leveys, double korkeus)
68    {
69        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
70        taso.Position = paikka;
71        taso.Color = Color.Green;
72        Add(taso);
73        Image taustaKuva = LoadImage("");
74    }
75
76    void LisaaVihu(Vector paikka, double leveys, double korkeus)
77    {
78        PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus);
79        vihu.Position = paikka;
80        vihu.Image = vihuKuva;
81        vihu.Tag = "vihu";
82        Add(vihu);
83        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
84
85        satunnaisAivot.ChangeMovementSeconds = 3;
86        vihu.Brain = satunnaisAivot;
87        vihu.Brain.Active = true;
88    }
89    void LisaaCheck(Vector paikka, double leveys, double korkeus)
90    {
91        //checkpoint
92        PhysicsObject lippu = PhysicsObject.CreateStaticObject(leveys, korkeus * 2);
93        lippu.Tag = "lippu";
94        lippu.Image = lippuKuva;
95        lippu.Position = paikka;
96        lippu.Y += korkeus * 0.5;
97        lippu.IgnoresCollisionResponse = true;
98        Add(lippu);
99
100    }
101    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
102    {
103        //pelaaja ja sen komennot
104        pelaaja1 = new PlatformCharacter(leveys, korkeus);
105        pelaaja1.Position = paikka;
106        pelaaja1.Mass = 4.0;
107        pelaaja1.Image = pelaajanKuva;
108        //pelaaja1.AnimWalk = new Animation(kavelykuvat);
109        AddCollisionHandler(pelaaja1, "vihu", TormaaVihuun);
110        Add(pelaaja1);
111        AddCollisionHandler(pelaaja1, "lippu", TormaaLippuun);
112        AddCollisionHandler(pelaaja1, "piikki", TormaaPiikkiin);
113        checkpoint = paikka;
114        AddCollisionHandler(pelaaja1, "voitto", VoititPelin);
115        pelaaja1.ForceJump();
116    }
117
118    void LisaaNappaimet()
119    {
120        //kontrollit
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        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
129
130        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
131        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
132        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
133
134        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
135    }
136
137    void Liikuta(PlatformCharacter hahmo, double nopeus)
138    {
139        hahmo.Walk(nopeus);
140    }
141
142    void Hyppaa(PlatformCharacter hahmo, double nopeus)
143    {
144        hahmo.Jump(nopeus);
145    }
146
147    void TormaaVihuun(PhysicsObject hahmo, PhysicsObject vihu)
148    {
149        //vihun komennot
150        if (vihu.Top - 0.2 * vihu.Height < hahmo.Bottom)
151        {
152            maaliAani.Play();
153            MessageDisplay.Add("Sinne meni!");
154            vihu.Destroy();
155
156        }
157        else
158        {
159            MessageDisplay.Add("Kuolit.");
160            hahmo.Destroy();
161        }
162
163    }
164    void TormaaLippuun(PhysicsObject hahmo, PhysicsObject lippu)
165    {
166        checkpoint = lippu.Position;
167    }
168    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
169    {
170        pelaaja1.Position = checkpoint;
171
172    }
173    void LisaaVoitto(Vector paikka, double leveys, double korkeus)
174    {
175        //toinen kenttä
176        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
177        taso.Position = paikka;
178        taso.Color = Color.Blue;
179        Add(taso);
180        taso.Tag = "voitto";
181        //MessageDisplay.Add("Kenttä läpi!");
182        //kenttaNro++;
183        //SeuraavaKentta();
184    }
185
186    void VoititPelin(PhysicsObject pelaaja, PhysicsObject maali)
187    {
188        MessageDisplay.Add("Kenttä läpi!");
189        kenttaNro++;
190        SeuraavaKentta();
191    }
192
193    void SeuraavaKentta()
194    {
195        //toinen kenttä2
196        ClearAll();
197
198        if (kenttaNro == 1) LuoKentta("kentta1");
199        else if (kenttaNro == 2) LuoKentta("kentta2");
200        else if (kenttaNro == 3) LuoKentta("kentta3");
201        else if (kenttaNro > 3) Exit();
202
203        LisaaNappaimet();
204        Image taustaKuva = LoadImage("background-city");
205
206
207        Gravity = new Vector(0, -1000);
208
209
210        Camera.Follow(pelaaja1);
211        Camera.ZoomFactor = 1.2;
212        Camera.StayInLevel = true;
213    }
214
215    void TormasiMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
216    {
217        kenttaNro++;
218        SeuraavaKentta();
219    }
220
221    void TormasiPiikkiin(PhysicsObject pelaaja, PhysicsObject piikki)
222    {
223        SeuraavaKentta();
224    }
225    void Valikko()
226    {
227        ClearAll();
228
229        valikonKohdat = new List<Label>();
230        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
231"Aloita peli", "Lopeta");
232        Add(alkuValikko);
233
234        alkuValikko.AddItemHandler(0, AloitaPeli);
235        alkuValikko.AddItemHandler(2, Exit);
236
237        Label kohta1 = new Label("Aloita uusi peli");
238        kohta1.Position = new Vector(0, 40);
239        valikonKohdat.Add(kohta1);
240        Label kohta2 = new Label("Parhaat pisteet");
241        kohta2.Position = new Vector(0, 0);
242        valikonKohdat.Add(kohta2);
243
244        Label kohta3 = new Label("Lopeta peli");
245        kohta3.Position = new Vector(0, -40);
246        valikonKohdat.Add(kohta3);
247        foreach (Label valikonKohta in valikonKohdat)
248        {
249            Add(valikonKohta);
250            Valikko();
251        }
252    }
253    void ValikossaLiikkuminen(AnalogState hiirenTila)
254    {
255        foreach (Label kohta in valikonKohdat)
256        {
257            if (Mouse.IsCursorOn(kohta))
258            {
259                kohta.TextColor = Color.Red;
260            }
261            else
262            {
263                kohta.TextColor = Color.Black;
264            }
265        }
266    }
267            void AloitaPeli()
268{
269    Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
270                {
271                 
272                }
273
274
275        }
276}
Note: See TracBrowser for help on using the repository browser.