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

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