source: 2016/30/LukaH/Spikemania/Spikemania/Spikemania/Spikemania.cs @ 8242

Revision 8242, 9.5 KB checked in by empaheik, 7 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 Spikemania : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    int kenttanumero = 1;
16
17    Vector spawni = Vector.Zero;
18
19    double[] zoomit = new double[] {1, 2, 1.8, 1.4 };
20
21    PlatformCharacter pelaaja1;
22
23    Image avaimenkuva = LoadImage("avain");
24    Image ovenkuva = LoadImage("ovi");
25    Image pelaajanKuva = LoadImage("pelaaja");
26    Image tahtiKuva = LoadImage("tahti");
27    Image nuolenkuva = LoadImage("nuoli");
28    Image lasinkuva = LoadImage("lasi");
29    Image nuolialas = LoadImage("nuolialas");
30    Image kysymysmerkkikuva = LoadImage("kysymysmerkki");
31    Image avaimenkuva2 = LoadImage("avainkuva");
32
33    SoundEffect maaliAani = LoadSoundEffect("maali");
34    SoundEffect hyppyaani = LoadSoundEffect("Jump");
35    SoundEffect keraysaani = LoadSoundEffect("Pickup_Coin4");
36    SoundEffect avaamisaani = LoadSoundEffect("Explosion");
37
38    public override void Begin()
39    {
40
41        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
42        "Aloita peli", "Lopeta");
43        Add(alkuValikko);
44
45        alkuValikko.AddItemHandler(0, AloitaPeli);
46        alkuValikko.AddItemHandler(1, Exit);
47
48       
49    }
50
51    void AloitaPeli()
52    {
53        ClearAll();
54
55        MessageDisplay.Add("The Complex Kevin MacLeod (incompetech.com) Licensed under Creative Commons: By Attribution 3.0 License http://creativecommons.org/licenses/by/3.0/");
56
57        MediaPlayer.Play("TheComplex");
58
59        MediaPlayer.IsRepeating = true;
60
61        Gravity = new Vector(0, -1000);
62
63        SmoothTextures = false;
64
65        LuoPistelaskuri();
66        LuoKentta();
67        LisaaNappaimet();
68
69        Timer.SingleShot(0.1, KameraAsetukset);
70
71
72       /* if (kenttanumero == 4)
73        {
74            Timer.SingleShot(0.1, delegate () { Camera.ZoomFactor = 1.4; });
75        }*/
76       
77    }
78
79    void KameraAsetukset()
80    {
81        Camera.ZoomFactor = zoomit[kenttanumero - 1];
82        Camera.Follow(pelaaja1);
83        Camera.StayInLevel = true;
84    }
85
86    IntMeter pisteLaskuri;
87
88    void LuoPistelaskuri()
89    {
90        pisteLaskuri = new IntMeter(0);
91        pisteLaskuri.MaxValue = 2;
92
93        Label pisteNaytto = new Label();
94        pisteNaytto.X = Screen.Left + 100;
95        pisteNaytto.Y = Screen.Top - 100;
96        pisteNaytto.TextColor = Color.White;
97        pisteNaytto.Color = Color.Transparent;
98
99        pisteNaytto.BindTo(pisteLaskuri);
100        Add(pisteNaytto);
101    }
102
103    void LuoKentta()
104    {
105        TileMap kentta = TileMap.FromLevelAsset("Level"+kenttanumero);
106        kentta.SetTileMethod('#', LisaaTaso);
107        kentta.SetTileMethod('p', LisaaPiikki);
108        kentta.SetTileMethod('N', LisaaPelaaja);
109        kentta.SetTileMethod('a', LisaaAvain);
110        kentta.SetTileMethod('o', LisaaOvi);
111        kentta.SetTileMethod('i', LisaaLasi);
112        kentta.SetTileMethod('s', LisaaSavu);
113        kentta.SetTileMethod('n', LisaaNuoli);
114        kentta.SetTileMethod('k', LisaaNuolialas);
115        kentta.SetTileMethod('K', Lisaakysymysmerkki);
116        kentta.SetTileMethod('h', Lisaavaimenkuva2);
117        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
118        Level.CreateBorders();
119        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
120        Camera.ZoomToAllObjects();
121   
122    }
123
124    void Lisaavaimenkuva2(Vector paikka, double leveys, double korkeus)
125    {
126        PhysicsObject avaimenkuva2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
127        avaimenkuva2.Position = paikka;
128        avaimenkuva2.IgnoresCollisionResponse = true;
129        Add(avaimenkuva2);
130        avaimenkuva2.Image = avaimenkuva;
131    }
132   
133    void LisaaNuoli(Vector paikka, double leveys, double korkeus)
134    {
135        PhysicsObject nuoli = PhysicsObject.CreateStaticObject(leveys, korkeus);
136        nuoli.Position = paikka;
137        nuoli.IgnoresCollisionResponse = true;
138        Add(nuoli);
139        nuoli.Image = nuolenkuva;
140
141    }
142
143    void Lisaakysymysmerkki(Vector paikka, double leveys, double korkeus)
144    {
145        PhysicsObject kysymysmerkki = PhysicsObject.CreateStaticObject(leveys, korkeus);
146        kysymysmerkki.Position = paikka;
147        kysymysmerkki.IgnoresCollisionResponse = true;
148        Add(kysymysmerkki);
149        kysymysmerkki.Image = kysymysmerkkikuva;
150
151    }
152
153    void LisaaSavu(Vector paikka ,double leveys, double korkeus)
154    {
155        Smoke savu = new Smoke();
156        savu.Position = paikka;
157        Add(savu);
158    }
159
160    void LisaaOvi(Vector paikka, double leveys, double korkeus)
161    {
162        PhysicsObject Ovi = PhysicsObject.CreateStaticObject(leveys, korkeus *2);
163        Ovi.IgnoresCollisionResponse = false;
164        Ovi.Position = paikka + new Vector(0, korkeus / 2);
165        Ovi.Shape = Shape.Rectangle;
166        Ovi.Tag = "ovi";
167        Add(Ovi);
168        Ovi.Image = ovenkuva;
169    }
170
171    void LisaaNuolialas(Vector paikka, double leveys, double korkeus)
172    {
173        PhysicsObject Nuolialas = PhysicsObject.CreateStaticObject(leveys, korkeus);
174        Nuolialas.IgnoresCollisionResponse = true;
175        Nuolialas.Position = paikka;
176        Nuolialas.Tag = "Nuolialas";
177        Add(Nuolialas);
178        Nuolialas.Image = nuolialas;
179
180    }
181
182    void LisaaAvain(Vector paikka, double leveys, double korkeus)
183    {
184        PhysicsObject Avain = PhysicsObject.CreateStaticObject(leveys, korkeus);
185        Avain.IgnoresCollisionResponse = false;
186        Avain.Position = paikka;
187        Avain.Tag = "Avain";
188        Add(Avain);
189        Avain.Image = avaimenkuva;
190    }
191
192    void LisaaLasi(Vector paikka, double leveys, double korkeus)
193    {
194        PhysicsObject lasitaso = PhysicsObject.CreateStaticObject(leveys, korkeus);
195        lasitaso.Position = paikka;
196        lasitaso.Color = Color.Transparent;
197        lasitaso.Tag = "lasi";
198        lasitaso.Image = lasinkuva;
199        Add(lasitaso);
200    }
201
202    void LisaaTaso(Vector paikka, double leveys, double korkeus)
203    {
204        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
205        taso.Position = paikka;
206        taso.Color = Color.DarkGray;
207        Add(taso);
208    }
209
210    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
211    {
212        PhysicsObject Piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
213        Piikki.IgnoresCollisionResponse = false;
214        Piikki.Position = paikka;
215        Piikki.Shape = Shape.Triangle;
216        Piikki.Color = Color.LightGray;
217        Piikki.Tag = "Piikki";
218        Add(Piikki);
219    }
220
221    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
222    {
223        pelaaja1 = new PlatformCharacter(leveys, korkeus);
224        pelaaja1.Position = paikka;
225        spawni = paikka;
226        pelaaja1.Mass = 4.0;
227        //pelaaja1.Image = pelaajanKuva;
228        //AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
229        AddCollisionHandler(pelaaja1, "Piikki", TormaaPiikkiin);
230        AddCollisionHandler(pelaaja1, "Avain", KeraaAvain);
231        AddCollisionHandler(pelaaja1, "ovi", Tormaaoveen);
232        Add(pelaaja1);
233        pelaaja1.AnimWalk = LoadAnimation("pelaajakavelee");
234        pelaaja1.AnimJump = LoadAnimation("pelaajahyppaa");
235        pelaaja1.AnimIdle = LoadAnimation("pelaajapaikallaan");
236    }
237
238    void Tormaaoveen(PhysicsObject Pelaaja1, PhysicsObject ovi)
239    {
240        if (pisteLaskuri.Value == 2)
241        {
242            Seuraavakentta();
243            avaamisaani.Play();
244        }
245    }
246
247    void Seuraavakentta()
248    {
249        kenttanumero++;
250        if (kenttanumero > 4)
251        {
252            Exit();
253            return;
254        }
255        AloitaPeli();
256    }
257
258    void TormaaPiikkiin(PhysicsObject Pelaaja1, PhysicsObject Piikki)
259    {
260        //Pelaaja1.Position = spawni;
261        AloitaPeli();
262    }
263
264    void LisaaNappaimet()
265    {
266        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
267        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
268
269        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
270        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
271        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
272
273        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
274
275        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
276        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
277        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
278
279        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
280    }
281
282    void Liikuta(PlatformCharacter hahmo, double nopeus)
283    {
284        hahmo.Walk(nopeus);
285    }
286
287    void Hyppaa(PlatformCharacter hahmo, double nopeus)
288    {
289        hahmo.Jump(nopeus);
290        PlaySound("jump");
291    }
292
293    void KeraaAvain(PhysicsObject hahmo, PhysicsObject avain)
294    {
295        //maaliAani.Play();
296        MessageDisplay.Add("Keräsit Avaimen!");
297        avain.Destroy();
298        pisteLaskuri.Value += 1;
299        //PlaySound("keraysaani");
300        keraysaani.Play();
301    }
302}
Note: See TracBrowser for help on using the repository browser.