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

Revision 8169, 6.7 KB checked in by jotapoti, 5 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   
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
27    SoundEffect maaliAani = LoadSoundEffect("maali");
28
29    public override void Begin()
30    {
31
32        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
33        "Aloita peli", "Lopeta");
34        Add(alkuValikko);
35
36        alkuValikko.AddItemHandler(0, AloitaPeli);
37        alkuValikko.AddItemHandler(1, Exit);
38
39       
40    }
41
42    void AloitaPeli()
43    {
44        Gravity = new Vector(0, -1000);
45
46        SmoothTextures = false;
47
48        LuoPistelaskuri();
49        LuoKentta();
50        LisaaNappaimet();
51
52        //Camera.Follow(pelaaja1);
53        //Camera.ZoomFactor = 0.9;
54        //Camera.StayInLevel = true;
55    }
56    IntMeter pisteLaskuri;
57
58    void LuoPistelaskuri()
59    {
60        pisteLaskuri = new IntMeter(0);
61        pisteLaskuri.MaxValue = 2;
62
63        Label pisteNaytto = new Label();
64        pisteNaytto.X = Screen.Left + 100;
65        pisteNaytto.Y = Screen.Top - 100;
66        pisteNaytto.TextColor = Color.White;
67        pisteNaytto.Color = Color.Transparent;
68
69        pisteNaytto.BindTo(pisteLaskuri);
70        Add(pisteNaytto);
71    }
72
73    void LuoKentta()
74    {
75        TileMap kentta = TileMap.FromLevelAsset("Level3");
76        kentta.SetTileMethod('#', LisaaTaso);
77        kentta.SetTileMethod('p', LisaaPiikki);
78        kentta.SetTileMethod('N', LisaaPelaaja);
79        kentta.SetTileMethod('a', LisaaAvain);
80        kentta.SetTileMethod('o', LisaaOvi);
81        kentta.SetTileMethod('i', LisaaNakymatonTaso);
82        kentta.SetTileMethod('s', LisaaSavu);
83        kentta.SetTileMethod('n', LisaaNuoli);
84        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
85        Level.CreateBorders();
86        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
87        Camera.ZoomToAllObjects();
88   
89    }
90    void LisaaNuoli(Vector paikka, double leveys, double korkeus)
91    {
92        PhysicsObject nuoli = PhysicsObject.CreateStaticObject(leveys, korkeus);
93        nuoli.Position = paikka;
94        nuoli.IgnoresCollisionResponse = true;
95        Add(nuoli);
96        nuoli.Image = nuolenkuva;
97
98    }
99    void LisaaSavu(Vector paikka ,double leveys, double korkeus)
100    {
101        Smoke savu = new Smoke();
102        savu.Position = paikka;
103        Add(savu);
104    }
105
106    void LisaaOvi(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject Ovi = PhysicsObject.CreateStaticObject(leveys, korkeus *2);
109        Ovi.IgnoresCollisionResponse = false;
110        Ovi.Position = paikka + new Vector(0, korkeus / 2);
111        Ovi.Shape = Shape.Rectangle;
112        Ovi.Tag = "ovi";
113        Add(Ovi);
114        Ovi.Image = ovenkuva;
115    }
116
117    void LisaaAvain(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject Avain = PhysicsObject.CreateStaticObject(leveys, korkeus);
120        Avain.IgnoresCollisionResponse = false;
121        Avain.Position = paikka;
122        Avain.Tag = "Avain";
123        Add(Avain);
124        Avain.Image = avaimenkuva;
125    }
126
127    void LisaaNakymatonTaso(Vector paikka, double leveys, double korkeus)
128    {
129        PhysicsObject nakymatontaso = PhysicsObject.CreateStaticObject(leveys, korkeus);
130        nakymatontaso.Position = paikka;
131        nakymatontaso.Color = Color.Transparent;
132        Add(nakymatontaso);
133    }
134
135    void LisaaTaso(Vector paikka, double leveys, double korkeus)
136    {
137        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
138        taso.Position = paikka;
139        taso.Color = Color.DarkGray;
140        Add(taso);
141    }
142
143    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
144    {
145        PhysicsObject Piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
146        Piikki.IgnoresCollisionResponse = false;
147        Piikki.Position = paikka;
148        Piikki.Shape = Shape.Triangle;
149        Piikki.Color = Color.LightGray;
150        Piikki.Tag = "Piikki";
151        Add(Piikki);
152    }
153
154    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
155    {
156        pelaaja1 = new PlatformCharacter(leveys, korkeus);
157        pelaaja1.Position = paikka;
158        spawni = paikka;
159        pelaaja1.Mass = 4.0;
160        pelaaja1.Image = pelaajanKuva;
161        //AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
162        AddCollisionHandler(pelaaja1, "Piikki", TormaaPiikkiin);
163        AddCollisionHandler(pelaaja1, "Avain", KeraaAvain);
164        AddCollisionHandler(pelaaja1, "ovi", Tormaaoveen);
165        Add(pelaaja1);
166
167    }
168    void Tormaaoveen(PhysicsObject Pelaaja1, PhysicsObject ovi)
169    {
170        if (pisteLaskuri.Value == 2)
171        {
172            Exit();
173        }
174    }
175
176    void TormaaPiikkiin(PhysicsObject Pelaaja1, PhysicsObject Piikki)
177    {
178        Pelaaja1.Position = spawni;
179    }
180
181    void LisaaNappaimet()
182    {
183        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
184        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
185
186        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
187        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
188        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
189
190        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
191
192        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
193        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
194        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
195
196        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
197    }
198
199    void Liikuta(PlatformCharacter hahmo, double nopeus)
200    {
201        hahmo.Walk(nopeus);
202    }
203
204    void Hyppaa(PlatformCharacter hahmo, double nopeus)
205    {
206        hahmo.Jump(nopeus);
207    }
208
209    void KeraaAvain(PhysicsObject hahmo, PhysicsObject avain)
210    {
211        maaliAani.Play();
212        MessageDisplay.Add("Keräsit Avaimen!");
213        avain.Destroy();
214        pisteLaskuri.Value += 1;
215    }
216}
Note: See TracBrowser for help on using the repository browser.