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

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