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

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