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

Revision 8914, 6.2 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    SoundEffect maaliAani = LoadSoundEffect("maali");
23
24    public override void Begin()
25    {
26        ClearAll();
27        Gravity = new Vector(0, -1000);
28        pisteLaskuri = new IntMeter(0);
29        LuoKentta();
30       
31        LisaaNappaimet();
32
33
34
35
36
37
38        LisaaKarpanen();
39        LisaaKarpanen();
40        LisaaKarpanen();
41        LisaaKarpanen();
42        LisaaKarpanen();
43        LisaaKarpanen();
44        LisaaKarpanen();
45        LisaaKarpanen();
46        LisaaKarpanen();
47        LisaaKarpanen();
48        LisaaKarpanen();
49        LisaaKarpanen();
50       
51
52
53        Camera.Follow(pelaaja1);
54        Camera.ZoomFactor = 1.2;
55        Camera.StayInLevel = true;
56    }
57
58    void LuoKentta()
59    {
60        TileMap kentta = TileMap.FromLevelAsset("kentta1");
61        kentta.SetTileMethod('#', LisaaTaso);
62        kentta.SetTileMethod('K', LisaaKuvaaja);
63        kentta.SetTileMethod('P', LisaaPuu);
64        kentta.SetTileMethod('N', LisaaPelaaja); 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
92
93
94
95    void LisaaKarpanen()
96    {
97        PhysicsObject karpanen = new PhysicsObject(20.0, 20.0);
98        karpanen.Image = KarpanenKuva;
99        karpanen.Tag = "Karpanen";
100        RandomMoverBrain KarpasenAivot = new RandomMoverBrain(400);
101       
102        KarpasenAivot.ChangeMovementSeconds = 2;
103        karpanen.Brain = KarpasenAivot;
104        karpanen.CollisionIgnoreGroup = 1;
105        pisteLaskuri.Value++;
106        Add(karpanen);
107 
108    }
109
110    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
111    {
112        pelaaja1 = new PlatformCharacter(leveys, korkeus);
113        pelaaja1.Position = paikka;
114        pelaaja1.Mass = 4.0;
115        pelaaja1.Image = pelaajanKuva;
116        pelaaja1.Tag = "Pelaaja";
117       
118        AddCollisionHandler(pelaaja1, "Karpanen", CollisionHandler.DestroyTarget);
119        AddCollisionHandler(pelaaja1, "Karpanen", CollisionHandler.AddMeterValue(pisteLaskuri, -1));
120        AddCollisionHandler(pelaaja1, "Kuvaaja", Kuolema);
121        AddCollisionHandler(pelaaja1, "Puu", TormasiPuuhun);
122        Add(pelaaja1);
123    }
124    void Kuolema(PhysicsObject pelaaja, PhysicsObject kohde)
125    {
126        Begin();
127    }
128    void TormasiPuuhun(PhysicsObject Pelaaja, PhysicsObject Puu)
129    {
130        if(pisteLaskuri.Value ==0)
131        {
132            MessageDisplay.Add("Voitit");
133        }
134        else
135        {
136            MessageDisplay.Add("KeraaLisaa");
137        }
138    }
139
140    void LisaaKuvaaja(Vector paikka, double leveys, double korkeus)
141    {
142        PlatformCharacter kuvaaja = new PlatformCharacter(60.0, 60.0);
143
144        FollowerBrain KuvaajanAivot = new FollowerBrain("Pelaaja");
145        kuvaaja.Brain = KuvaajanAivot;
146        kuvaaja.Mass = (8.0);
147        kuvaaja.Position = paikka;
148
149        kuvaaja.Image = KuvaajaKuva;
150        kuvaaja.Tag = "Kuvaaja";
151
152        kuvaaja.CollisionIgnoreGroup = 1;
153
154
155        // testailua ignoregrouppien kanssa:
156        //kuvaaja.Collided += KuvaajaTormasi;
157       
158
159        Add(kuvaaja);
160    }
161
162
163    // testailua ignoregrouppien kanssa:
164    void KuvaajaTormasi(IPhysicsObject tormaaja, IPhysicsObject kohde)
165    {
166        if ((kohde as PhysicsObject).Tag.Equals("lattia"))
167        {
168            return;
169        }
170
171        if ((kohde as PhysicsObject).Tag.Equals("Karpanen"))
172        {
173            tormaaja.CollisionIgnoreGroup = 1;
174        }
175        else
176        {
177            tormaaja.CollisionIgnoreGroup = 0;
178        }
179    }
180    void LisaaNappaimet()
181    {
182        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
183        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
184
185        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
186        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
187        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
188
189        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
190
191        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
192        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
193        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
194
195        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
196    }
197
198    void Liikuta(PlatformCharacter hahmo, double nopeus)
199    {
200        hahmo.Walk(nopeus);
201    }
202
203    void Hyppaa(PlatformCharacter hahmo, double nopeus)
204    {
205        hahmo.Jump(nopeus);
206    }
207
208    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
209    {
210        maaliAani.Play();
211        MessageDisplay.Add("a");
212        tahti.Destroy();
213    }
214}
Note: See TracBrowser for help on using the repository browser.