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

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