source: 2013/24/AtteK/hypelypeli/hypelypeli/hypelypeli/hypelypeli.cs @ 4126

Revision 4126, 7.2 KB checked in by juiitamm, 10 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class hypelypeli : PhysicsGame
10{
11    int kenttaNro = 1;
12    const double nopeus = 366;
13    const double hyppyNopeus = 860;
14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter pelaaja1;
17
18    Image pelaajanKuva = LoadImage("herobrine");
19    Image tahtiKuva = LoadImage("Timantti");
20    Image hiilikuvaKuva = LoadImage("hiili");
21    Image kivikuvakuva = LoadImage("kivi");
22    Image rautakuvakuva = LoadImage("rauta");
23
24    Image kultakuvakuva = LoadImage("kulta");
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26    // IntMeter timanttiLaskuri;
27
28    public override void Begin()
29    {
30        ClearAll();
31        LuoKentta("kentta" + kenttaNro);
32
33    }
34
35    void LuoKentta(string kenttaTiedosto)
36    {
37        MediaPlayer.Play("imbossible2");
38        Gravity = new Vector(0, -1000);
39        IntMeter timanttiLaskuri = new IntMeter(0, 0, int.MaxValue);
40        timanttiLaskuri.LowerLimit += delegate
41        {
42            kenttaNro++;
43            SeuraavaKentta();
44        };
45        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedosto);
46        kentta.SetTileMethod('#', Lisaakivi);
47        kentta.SetTileMethod('*', LisaaTimantti, timanttiLaskuri);
48        kentta.SetTileMethod('N', LisaaPelaaja, timanttiLaskuri);
49        kentta.SetTileMethod('S', LisaaSeuraaja);
50        kentta.SetTileMethod('%', Lisaamaali);
51        kentta.Optimize('#');
52        kentta.SetTileMethod('h', Lisaahiili);
53        kentta.SetTileMethod('r', Lisaarauta);
54        // kentta.SetTileMethod('k', Lisaakulta);
55        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
56        Level.CreateBorders();
57        Level.Background.CreateGradient(Color.White, Color.Black);
58
59
60        Camera.StayInLevel = true;
61
62        LisaaNappaimet();
63
64        Camera.Follow(pelaaja1);
65        Camera.ZoomFactor = 1.2;
66        Camera.StayInLevel = true;
67    }
68
69
70    void LisaaSeuraaja(Vector paikka, double leveys, double korkeus)
71    {
72        PhysicsObject seuraaja = new PhysicsObject(leveys, korkeus);
73        seuraaja.Position = paikka;
74        seuraaja.Image = LoadImage("Steve");
75        AddCollisionHandler(seuraaja, "pelaaja", SeuraajaSaaKiinni);
76        FollowerBrain aivot = new FollowerBrain("pelaaja");
77        aivot.Speed = 250;
78        seuraaja.Brain = aivot;
79        Add(seuraaja);
80    }
81
82    void SeuraajaSaaKiinni(PhysicsObject seuraaja, PhysicsObject pelaaja)
83    {
84        pelaaja.Destroy();
85        Begin();
86
87    }
88
89
90
91    void LisaaTimantti(Vector paikka, double leveys, double korkeus, IntMeter timanttiLaskuri)
92    {
93        PhysicsObject timantti = PhysicsObject.CreateStaticObject(leveys, korkeus);
94        timantti.IgnoresCollisionResponse = true;
95        timantti.Position = paikka;
96        timantti.Image = tahtiKuva;
97        timantti.Tag = "timantti";
98        timanttiLaskuri.Value++;
99        Add(timantti);
100    }
101
102    void Lisaahiili(Vector paikka, double leveys, double korkeus)
103    {
104        PhysicsObject hiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
105        hiili.IgnoresCollisionResponse = true;
106        hiili.Position = paikka;
107        hiili.Image = hiilikuvaKuva;
108        hiili.Tag = "hiili";
109        Add(hiili);
110    }
111    void Lisaakivi(Vector paikka, double leveys, double korkeus)
112    {
113        PhysicsObject kivi = PhysicsObject.CreateStaticObject(leveys, korkeus);
114        kivi.Shape = Shape.Rectangle;
115        kivi.TextureWrapSize = new Vector(kivi.Size.X / RUUDUN_KOKO / 2, kivi.Size.Y / RUUDUN_KOKO / 2);
116        kivi.TextureFillsShape = true;
117        kivi.Position = paikka;
118        kivi.Image = kivikuvakuva;
119        kivi.Tag = "kivi";
120        Add(kivi);
121    }
122
123    void Lisaarauta(Vector paikka, double leveys, double korkeus)
124    {
125        PhysicsObject rauta = PhysicsObject.CreateStaticObject(leveys, korkeus);
126        rauta.IgnoresCollisionResponse = true;
127        rauta.Position = paikka;
128        rauta.Image = rautakuvakuva;
129        rauta.Tag = "rauta";
130        Add(rauta);
131
132
133    }
134
135    void LisaaPelaaja(Vector paikka, double leveys, double korkeus, IntMeter timanttiLaskuri)
136    {
137        pelaaja1 = new PlatformCharacter(1.2 * leveys, 1.2 * korkeus);
138        pelaaja1.Position = paikka;
139        pelaaja1.Mass = 4.0;
140        pelaaja1.Tag = "pelaaja";
141        pelaaja1.Image = pelaajanKuva;
142        AddCollisionHandler(pelaaja1, "timantti", TormaaTimantiin);
143        AddCollisionHandler(pelaaja1, "timantti", CollisionHandler.AddMeterValue(timanttiLaskuri, -1));
144        // AddCollisionHandler(pelaaja1, "maali", TormasiMaaliin);
145        Add(pelaaja1);
146
147    }
148
149    void lisaakulta(Vector paikka, double leveys, double korkeus)
150    {
151        PhysicsObject kulta = PhysicsObject.CreateStaticObject(leveys, korkeus);
152        kulta.IgnoresCollisionResponse = true;
153        kulta.Position = paikka;
154        kulta.Image = kultakuvakuva;
155        kulta.Tag = "kulta";
156        Add(kulta);
157
158    }
159    void Lisaamaali(Vector paikka, double leveys, double korkeus)
160    {
161        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
162        taso.Position = paikka;
163        taso.Color = Color.Blue;
164        Add(taso);
165        taso.Tag = "maali";
166    }
167
168    void LisaaNappaimet()
169    {
170        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
171        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
172
173        double hyppyNopeusKentassa = Math.Min(1, kenttaNro / 2) * hyppyNopeus;
174
175        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
176        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
177        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
178
179        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
180
181        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
182        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
183        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
184
185        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
186    }
187
188    void Liikuta(PlatformCharacter hahmo, double nopeus)
189    {
190        hahmo.Walk(nopeus);
191    }
192
193    void Hyppaa(PlatformCharacter hahmo, double nopeus)
194    {
195        hahmo.Jump(nopeus);
196    }
197
198    void TormaaTimantiin(PhysicsObject hahmo, PhysicsObject tahti)
199    {
200        maaliAani.Play();
201        MessageDisplay.Add("mainasit timantin!");
202        tahti.Destroy();
203    }
204
205    void SeuraavaKentta()
206    {
207        ClearAll();
208
209        if (kenttaNro == 1) LuoKentta("kentta1");
210        else if (kenttaNro == 2) LuoKentta("kentta2");
211        else if (kenttaNro == 3) LuoKentta("kentta3");
212        else if (kenttaNro > 3) Exit();
213
214        LisaaNappaimet();
215
216    }
217
218    void TormasiMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
219    {
220        kenttaNro++;
221        SeuraavaKentta();
222
223    }
224}
225
226
227
Note: See TracBrowser for help on using the repository browser.