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

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