source: 2016/27/ValtteriM/Ultimate platformer jumpping/Ultimate platformer jumpping/Ultimate_platformer_jumpping/Ultimate_platformer_jumpping.cs @ 8365

Revision 8365, 9.0 KB checked in by tesatapa, 3 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
9class Pelaaja : PlatformCharacter
10{
11    private IntMeter esine = new IntMeter(0);
12    public IntMeter Esine { get { return esine; } }
13
14    private IntMeter numero = new IntMeter(0);
15    public IntMeter Numero { get { return numero; } }
16
17    public Label esineKuva;
18
19    public Pelaaja(double leveys, double korkeus)
20        : base(leveys, korkeus)
21    {
22    }
23}
24
25public class Ultimate_platformer_jumpping : PhysicsGame
26{
27    const double nopeus = 200;
28    const double hyppyNopeus = 750;
29    const int RUUDUN_KOKO = 40;
30
31    bool lentotila = true;
32
33    Image Blockkuva = LoadImage("block2");
34    Image heinäkuva = LoadImage("heinä");
35    Image jousikuva = LoadImage("jousi");
36    string[] esineNimet = new string[] { "block", "heina", "jousi" };
37    Image[] esineKuvat = new Image[] { LoadImage("block2"), LoadImage("heinä"), LoadImage("jousi") };
38    Action<Pelaaja>[] esineLuomiset;
39
40    Pelaaja pelaaja1;
41    Pelaaja pelaaja2;
42    Pelaaja pelaaja3;
43    Pelaaja pelaaja4;
44    Image pelaajanKuva = LoadImage("newkana");
45    Image pelaajan2Kuva = LoadImage("tiikeri");
46    Image pelaajan3Kuva = LoadImage("liitoorava");
47    Image pelaajan4Kuva = LoadImage("dog");
48    SoundEffect maaliAani = LoadSoundEffect("maali");
49
50    public override void Begin()
51    {
52        esineLuomiset = new Action<Pelaaja>[] { LisaaBlock, LisaaHeina, LisaaJousi };
53
54        LuoKentta();
55        LisaaNappaimet();
56
57    }
58
59   
60
61    void AloitaPeli()
62    {
63
64    }
65
66    void LuoKentta()
67    {
68        TileMap kentta = TileMap.FromLevelAsset("kentta1");
69        kentta.SetTileMethod('#', LisaaTaso);
70        kentta.SetTileMethod('v', LisaaVaara);
71        kentta.SetTileMethod('C', LisaaPelaaja1);
72        kentta.SetTileMethod('t', LisaaPelaaja2);
73        kentta.SetTileMethod('l', LisaaPelaaja3);
74        kentta.SetTileMethod('d', LisaaPelaaja4);
75       
76        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
77        Level.CreateBorders(false);
78        Level.Background.CreateGradient(Color.White, Color.Aqua);
79
80        Camera.StayInLevel = true;
81
82        Camera.ZoomToLevel();
83    }
84
85    void LisaaTaso(Vector paikka, double leveys, double korkeus)
86    {
87        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
88        taso.Position = paikka;
89        taso.Color = Color.Gray;
90        Add(taso);
91    }
92
93    void LisaaVaara(Vector paikka, double leveys, double korkeus)
94    {
95        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
96        taso.Position = paikka;
97        taso.Color = Color.Transparent;
98        taso.Tag = "vaara";
99        Add(taso);
100    }
101
102    Pelaaja LisaaPelaaja(Vector paikka, double leveys, double korkeus, Image kuva, int numero)
103    {
104        Pelaaja pelaaja = new Pelaaja(leveys*0.7, korkeus*0.7);
105        pelaaja.Position = paikka;
106        pelaaja.Mass = 0.1;
107        pelaaja.Image = kuva;
108        pelaaja.CollisionIgnoreGroup = 1;
109        pelaaja.Numero.Value = numero;
110        pelaaja.IgnoresCollisionResponse = true;
111        Add(pelaaja);
112
113        pelaaja.esineKuva = new Label();
114        pelaaja.esineKuva.Image = Blockkuva;
115        pelaaja.esineKuva.Y = korkeus;
116        pelaaja.Add(pelaaja.esineKuva);
117
118        AddCollisionHandler(pelaaja, "vaara", TormaaVaaraan);
119        return pelaaja;
120    }
121
122    void LisaaPelaaja1(Vector paikka, double leveys, double korkeus)
123    {
124        pelaaja1 = LisaaPelaaja(paikka,leveys*0.5,korkeus,pelaajanKuva, 1);
125    }
126
127    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
128    {
129        pelaaja2 = LisaaPelaaja(paikka, leveys, korkeus,pelaajan2Kuva, 2);
130    }
131    void LisaaPelaaja3(Vector paikka, double leveys, double korkeus)
132    {
133        pelaaja3 = LisaaPelaaja(paikka, leveys, korkeus,pelaajan3Kuva, 3);
134    }
135    void LisaaPelaaja4(Vector paikka, double leveys, double korkeus)
136    {
137        pelaaja4 = LisaaPelaaja(paikka, leveys, korkeus, pelaajan4Kuva, 4);
138    }
139
140
141    void LisaaNappaimet()
142    {           
143
144        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
145        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
146
147
148        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
149        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
150        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
151        Keyboard.Listen(Key.S, ButtonState.Pressed, Laskeudu, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
152        Keyboard.Listen(Key.Q, ButtonState.Pressed, AsetaEsine, "", pelaaja1);
153        Keyboard.Listen(Key.Z, ButtonState.Pressed, ValitseEsine, "", pelaaja1);
154
155        Keyboard.Listen(Key.NumPad4, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
156        Keyboard.Listen(Key.NumPad6, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
157        Keyboard.Listen(Key.NumPad8, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
158        Keyboard.Listen(Key.NumPad5, ButtonState.Pressed, Laskeudu, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
159        Keyboard.Listen(Key.NumPad7, ButtonState.Pressed, AsetaEsine, "", pelaaja2);
160        Keyboard.Listen(Key.NumPad1, ButtonState.Pressed, ValitseEsine, "", pelaaja2);
161
162        Keyboard.Listen(Key.G, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja3, -nopeus);
163        Keyboard.Listen(Key.J, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja3, nopeus);
164        Keyboard.Listen(Key.Y, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja3, hyppyNopeus);
165        Keyboard.Listen(Key.H, ButtonState.Pressed, Laskeudu, "Pelaaja hyppää", pelaaja3, hyppyNopeus);
166        Keyboard.Listen(Key.T, ButtonState.Pressed, AsetaEsine, "", pelaaja3);
167        Keyboard.Listen(Key.B, ButtonState.Pressed, ValitseEsine, "", pelaaja3);
168
169        Keyboard.Listen(Key.L, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja4, -nopeus);
170        Keyboard.Listen(Key.Auml, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja4, nopeus);
171        Keyboard.Listen(Key.P, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja4, hyppyNopeus);
172        Keyboard.Listen(Key.Ouml, ButtonState.Pressed, Laskeudu, "Pelaaja hyppää", pelaaja4, hyppyNopeus);
173        Keyboard.Listen(Key.O, ButtonState.Pressed, AsetaEsine, "", pelaaja4);
174        Keyboard.Listen(Key.Period, ButtonState.Pressed, ValitseEsine, "", pelaaja4);
175
176
177
178        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
179
180        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
181        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
182        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
183
184        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
185    }
186
187    void AsetaEsine(Pelaaja hahmo)
188    {
189        esineLuomiset[hahmo.Esine.Value](hahmo);
190    }
191
192    void LisaaBlock(Pelaaja hahmo)
193    {
194        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
195        taso.Position = hahmo.Position;
196        taso.Image = Blockkuva;
197        Add(taso);
198    }
199
200    void LisaaHeina(Pelaaja hahmo)
201    {
202        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
203        taso.Position = hahmo.Position;
204        taso.Image = heinäkuva;
205        Add(taso);
206    }
207
208    void LisaaJousi(Pelaaja hahmo)
209    {
210        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
211        taso.Position = hahmo.Position;
212        taso.Image = jousikuva;
213        Add(taso);
214    }
215
216    void ValitseEsine(Pelaaja hahmo)
217    {
218        hahmo.Esine.Value += 1;
219
220        if(hahmo.Esine.Value >= esineNimet.Length)
221        {
222            hahmo.Esine.Value = 0;
223        }
224
225        //MessageDisplay.Add("pelaaja "+hahmo.Numero.Value+" valitsi esineen " + esineNimet[hahmo.Esine.Value]);
226        hahmo.esineKuva.Image = esineKuvat[hahmo.Esine.Value];
227        hahmo.esineKuva.Width = RUUDUN_KOKO; // esineKuvat[hahmo.Esine.Value].Width;
228        hahmo.esineKuva.Height = RUUDUN_KOKO; // esineKuvat[hahmo.Esine.Value].Height;
229
230    }
231
232    void Liikuta(PlatformCharacter hahmo, double nopeus)
233    {
234        hahmo.Walk(nopeus);
235    }
236
237    void Hyppaa(PlatformCharacter hahmo, double nopeus)
238    {
239        if (lentotila)
240        {
241            hahmo.Push(Vector.UnitY * 200);
242        }
243        else
244        {
245            hahmo.Jump(nopeus);
246        }
247    }
248
249    void Laskeudu(PlatformCharacter hahmo, double nopeus)
250    {
251        if(lentotila)
252        {
253            hahmo.Push(Vector.UnitY * -200);
254        }
255    }
256
257    void TormaaVaaraan(PhysicsObject hahmo, PhysicsObject vaara)
258    {
259        hahmo.Destroy();
260    }
261}
Note: See TracBrowser for help on using the repository browser.