source: 2017/27/TuukkaH/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 8975

Revision 8975, 8.5 KB checked in by npo17_44, 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
9public class Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    IntMeter pisteLaskuri;
17
18    Image pelaajanKuva = LoadImage("Kauluslisko");
19    Image KuvaajaKuva = LoadImage("Kuvaaja");
20    Image KarpanenKuva = LoadImage("Karpanen");
21    Image PuuKuva = LoadImage("Puu");
22    Image LehtiKuva = LoadImage("lehti");
23    Image HiekkaKuva = LoadImage("hiekka");
24    Image AlkuKuva = LoadImage("Alku");
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26    SoundEffect Aani = LoadSoundEffect("Aani");
27    SoundEffect Pomppu = LoadSoundEffect("Pomppu");
28    SoundEffect Au = LoadSoundEffect("Au");
29
30    public override void Begin()
31    {
32        ClearAll();
33        Level.Width = Window.Width;
34        Level.Height = Window.Height;
35        MultiSelectWindow alkuValikko = new MultiSelectWindow("Liskopeli",
36       "Aloita peli", "Lopeta");
37        Level.Background.Image = (AlkuKuva);
38        Level.Background.FitToLevel();
39       
40        alkuValikko.AddItemHandler(0, AloitaPeli);
41        alkuValikko.AddItemHandler(1, Exit);
42
43        Add(alkuValikko);
44    }
45    void AloitaPeli()
46    {
47        ClearAll();
48        Gravity = new Vector(0, -1000);
49        pisteLaskuri = new IntMeter(0);
50
51        // Label pisteNaytto = new Label();
52        //pisteNaytto.X = Screen.Left + 100;
53        //pisteNaytto.Y = Screen.Top - 100;
54        //pisteNaytto.TextColor = Color.Black;
55        // pisteNaytto.Color = Color.White;
56        // pisteNaytto.BindTo(pisteLaskuri);
57        //Add(pisteNaytto);
58
59        LuoKentta();
60
61        LisaaNappaimet();
62
63
64        LisaaKarpanen();
65        LisaaKarpanen();
66        LisaaKarpanen();
67        LisaaKarpanen();
68        LisaaKarpanen();
69        LisaaKarpanen();
70        LisaaKarpanen();
71        LisaaKarpanen();
72        LisaaKarpanen();
73        LisaaKarpanen();
74        LisaaKarpanen();
75        LisaaKarpanen();
76
77
78        Camera.Follow(pelaaja1);
79        Camera.ZoomFactor = 1.2;
80        Camera.StayInLevel = true;
81    }
82    void LuoKentta()
83    {
84        TileMap kentta = TileMap.FromLevelAsset("kentta1");
85        kentta.SetTileMethod('#', LisaaTaso);
86        kentta.SetTileMethod('K', LisaaKuvaaja);
87        kentta.SetTileMethod('P', LisaaPuu);
88        kentta.SetTileMethod('L', LisaaLehti);
89        kentta.SetTileMethod('N', LisaaPelaaja);
90        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
91        Level.CreateBorders();
92        Level.Background.CreateGradient(Color.OrangeRed, Color.SkyBlue);
93    }
94
95    void LisaaTaso(Vector paikka, double leveys, double korkeus)
96    {
97        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
98        taso.Position = paikka;
99        taso.Image = HiekkaKuva;
100        taso.Tag = "lattia";
101        Add(taso);
102    }
103
104    void LisaaPuu(Vector paikka, double leveys, double korkeus)
105    {
106        PhysicsObject puu = PhysicsObject.CreateStaticObject(leveys * 2, korkeus * 24);
107        puu.Position = paikka;
108        puu.Y += puu.Height / 2 - korkeus / 2;
109        puu.Color = Color.Brown;
110        puu.IgnoresCollisionResponse = true;
111        puu.Tag = "Puu";
112        puu.Image = PuuKuva;
113        puu.Tag = "Puu";
114        Add(puu, -1);
115    }
116
117    void LisaaLehti(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject lehti = PhysicsObject.CreateStaticObject(leveys * 1, korkeus * 1);
120        lehti.Position = paikka;
121        lehti.Y += lehti.Height / 2 - korkeus / 2;
122        lehti.Color = Color.Brown;
123        lehti.IgnoresCollisionResponse = false;
124        lehti.Tag = "Lehti";
125        lehti.Image = LehtiKuva;
126        lehti.Tag = "Lehti";
127        Add(lehti);
128    }
129
130
131
132    void LisaaKarpanen()
133    {
134        PhysicsObject karpanen = new PhysicsObject(20.0, 20.0);
135        karpanen.Image = KarpanenKuva;
136        karpanen.Tag = "Karpanen";
137        RandomMoverBrain KarpasenAivot = new RandomMoverBrain(400);
138
139        KarpasenAivot.ChangeMovementSeconds = 2;
140        karpanen.Brain = KarpasenAivot;
141        karpanen.CollisionIgnoreGroup = 1;
142        pisteLaskuri.Value++;
143        Add(karpanen);
144
145    }
146
147    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
148    {
149        pelaaja1 = new PlatformCharacter(leveys, korkeus);
150        pelaaja1.Position = paikka;
151        pelaaja1.Mass = 4.0;
152        pelaaja1.Image = pelaajanKuva;
153        pelaaja1.Tag = "Pelaaja";
154
155        AddCollisionHandler(pelaaja1, "Karpanen", CollisionHandler.DestroyTarget);
156        AddCollisionHandler(pelaaja1, "Karpanen", CollisionHandler.AddMeterValue(pisteLaskuri, -1));
157
158        AddCollisionHandler(pelaaja1, "Karpanen", SyoKarpanen);
159
160        AddCollisionHandler(pelaaja1, "Kuvaaja", Kuolema);
161        AddCollisionHandler(pelaaja1, "Puu", TormasiPuuhun);
162        Add(pelaaja1);
163    }
164
165    void SyoKarpanen(PhysicsObject pelaaja, PhysicsObject kohde)
166    {
167        //CollisionHandler.IncreaseObjectSize(10, 10);
168        pelaaja1.Width += 2;
169        pelaaja1.Height += 2;
170        Aani.Play();
171        if (pisteLaskuri.Value == 0)
172        {
173            foreach (Object g in GetObjectsWithTag("Kuvaaja"))
174            {
175                AddCollisionHandler(g as PhysicsObject, "Pelaaja", SyoVihollinen);
176            }
177        }
178    }
179
180    void SyoVihollinen(PhysicsObject pelaaja, PhysicsObject kohde)
181    {
182        pelaaja.Destroy();
183
184    }
185    void Kuolema(PhysicsObject pelaaja, PhysicsObject kohde)
186    {
187        if (GetObjectsWithTag("Karpanen").Count > 0)
188        {
189            pelaaja1.Destroy();
190            Begin();
191        }
192        else
193        {
194            pisteLaskuri.Value--;
195            Aani.Play();
196            kohde.Destroy();
197        }
198
199    }
200    void TormasiPuuhun(PhysicsObject Pelaaja, PhysicsObject Puu)
201    {
202        if (pisteLaskuri.Value == 0)
203        {
204            Begin();
205        }
206        else
207        {
208            MessageDisplay.Add("TahtooLISÄÄ");
209        }
210    }
211    void LisaaKuvaaja(Vector paikka, double leveys, double korkeus)
212    {
213        PlatformCharacter kuvaaja = new PlatformCharacter(60.0, 60.0);
214
215        FollowerBrain KuvaajanAivot = new FollowerBrain("Pelaaja");
216        kuvaaja.Brain = KuvaajanAivot;
217        kuvaaja.Mass = (8.0);
218        kuvaaja.Position = paikka;
219        pisteLaskuri.Value++;
220
221        kuvaaja.Image = KuvaajaKuva;
222        kuvaaja.Tag = "Kuvaaja";
223
224
225        kuvaaja.CollisionIgnoreGroup = 1;
226
227
228        // testailua ignoregrouppien kanssa:
229        //kuvaaja.Collided += KuvaajaTormasi;
230
231
232        Add(kuvaaja);
233    }
234
235
236    // testailua ignoregrouppien kanssa:
237    void KuvaajaTormasi(IPhysicsObject tormaaja, IPhysicsObject kohde)
238    {
239        if ((kohde as PhysicsObject).Tag.Equals("lattia"))
240        {
241            return;
242        }
243
244        if ((kohde as PhysicsObject).Tag.Equals("Karpanen"))
245        {
246            tormaaja.CollisionIgnoreGroup = 1;
247        }
248        else
249        {
250            tormaaja.CollisionIgnoreGroup = 0;
251        }
252    }
253    void LisaaNappaimet()
254    {
255        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
256        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
257
258        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
259        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
260        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
261
262        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
263
264        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
265        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
266        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
267
268        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
269    }
270
271    void Liikuta(PlatformCharacter hahmo, double nopeus)
272    {
273        hahmo.Walk(nopeus);
274    }
275
276    void Hyppaa(PlatformCharacter hahmo, double nopeus)
277    {
278        Pomppu.Play();
279        hahmo.Jump(nopeus);
280    }
281    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
282    {
283        maaliAani.Play();
284        tahti.Destroy();
285    }
286}
Note: See TracBrowser for help on using the repository browser.