source: 2016/24/EveliinaL/Space_Run/Space_Run/Space_Run/Space_Run.cs @ 7389

Revision 7389, 8.3 KB checked in by evsulens, 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 Space_Run : PhysicsGame
10{
11   
12    private Image[] SpacemanRun = LoadImages("1", "2", "3", "4");
13    private Animation SpacemanRunAnimaatio;
14    private Animation AlienRunAnimaatio;
15    private Animation SpacemanPunch;
16    const double nopeus = 200;
17    const double hyppyNopeus = 750;
18    const int RUUDUN_KOKO = 40;
19
20    EasyHighScore topLista = new EasyHighScore();
21
22    PlatformCharacter pelaaja1;
23
24    IntMeter pisteLaskuri;
25
26    Image pelaajanKuva = LoadImage("Spaceman");
27    Image alienKuva = LoadImage("Alien");
28    Image taustakuva = LoadImage("Space");
29    Image kultaharkkoKuva = LoadImage("Kultaharkko");
30    Image laavaKuva = LoadImage("Laava");
31    Image maaliKuva = LoadImage("MaaliLippu");
32    Image SpaceRunBackground = LoadImage("SpaceRunImage");
33    SoundEffect maaliAani = LoadSoundEffect("maali");
34
35    public override void Begin()
36    {
37        Level.Background.Image = SpaceRunBackground;
38        MultiSelectWindow alkuValikko = new MultiSelectWindow("","Aloita peli", "Parhaat Pisteet", "Exit");
39        alkuValikko.AddItemHandler(0, AloitaPeli);
40        //alkuValikko.AddItemHandler(1, );
41        alkuValikko.AddItemHandler(2, Exit);
42        Add(alkuValikko);
43        alkuValikko.Color = Color.DarkBlue;
44    }
45
46    void AloitaPeli()
47    {
48        SpacemanRunAnimaatio = LoadAnimation("SpacemanRun");
49        AlienRunAnimaatio = LoadAnimation("AlienRun");
50        SpacemanPunch = LoadAnimation("SpacemanPunch");
51        Gravity = new Vector(0, -1000);
52
53        LuoKentta();
54        LisaaNappaimet();
55        LuoPisteLaskuri();
56        Camera.Follow(pelaaja1);
57        Camera.ZoomFactor = 1.2;
58        Camera.StayInLevel = true;
59
60    }
61    void LuoKentta()
62    {
63        TileMap kentta = TileMap.FromLevelAsset("kentta1");
64        kentta.SetTileMethod('#', LisaaTaso);
65        kentta.SetTileMethod('*', LisaaAlien);
66        kentta.SetTileMethod('N', LisaaPelaaja);
67        kentta.SetTileMethod('-', LisaaKultaharkko);
68        kentta.SetTileMethod('_', LisaaLaava);
69        kentta.SetTileMethod('M', LisaaMaali);
70        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
71        Level.CreateBorders();
72        Level.Background.Image = taustakuva;
73    }
74
75    void LisaaTaso(Vector paikka, double leveys, double korkeus)
76    {
77        PhysicsObject taso = PhysicsObject.CreateStaticObject(40, 40);
78        taso.Position = paikka;
79        taso.Color = Color.Gray;
80        Add(taso);
81    }
82
83    void LisaaAlien(Vector paikka, double leveys, double korkeus)
84    {
85        PlatformCharacter Alien = new PlatformCharacter(leveys, korkeus);
86        Alien.Position = paikka;
87        Alien.Image = alienKuva;
88        Alien.MirrorImage();
89        Alien.Tag = "Alien";
90        Alien.AnimWalk = AlienRunAnimaatio;
91        AlienRunAnimaatio.FPS = 4;
92        Add(Alien);
93        PlatformWandererBrain aivot = new PlatformWandererBrain();
94        Alien.Brain = aivot;
95    }
96
97    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
98    {
99        pelaaja1 = new PlatformCharacter(leveys, korkeus);
100        pelaaja1.Position = paikka;
101        pelaaja1.Mass = 4.0;
102        pelaaja1.Image = pelaajanKuva;
103        AddCollisionHandler(pelaaja1, "Alien", TormaaAlieniin);
104        AddCollisionHandler(pelaaja1, "Laava", TormaaLaavaan);
105        AddCollisionHandler(pelaaja1, "Kultaharkko", TormaaKultaan);
106        AddCollisionHandler(pelaaja1, "MaaliLippu", PaaseeMaaliin);
107        SpacemanRunAnimaatio.FPS = 8;
108        Add(pelaaja1);
109        pelaaja1.AnimWalk = SpacemanRunAnimaatio;
110        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
111    }
112
113    void LisaaKultaharkko(Vector paikka, double leveys, double korkeus)
114    {
115        PhysicsObject Kultaharkko = PhysicsObject.CreateStaticObject(leveys, korkeus);
116        Kultaharkko.IgnoresCollisionResponse = true;
117        Kultaharkko.Position = paikka;
118        Kultaharkko.Image = kultaharkkoKuva;
119        Kultaharkko.Tag = "Kultaharkko";
120        Add(Kultaharkko);
121    }
122    void LisaaNappaimet()
123    {
124        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
125        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
126
127        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
128        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
129        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
130        Keyboard.Listen(Key.F, ButtonState.Pressed, Lyo, null);
131        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
132
133        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
134
135        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
136        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
137        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
138
139        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
140    }
141   
142    void Lyo()
143    {
144        SpacemanPunch.FPS = 30;
145        SpacemanPunch.Start();
146        SpacemanPunch.StopOnLastFrame = true;
147        pelaaja1.PlayAnimation(SpacemanPunch);
148        List<GameObject> viholliset = GetObjectsAt(pelaaja1.Position + new Vector(pelaaja1.FacingDirection == Direction.Right ? 15 : -15, 0), "Alien", 25);
149        foreach (var item in viholliset)
150        {
151            item.Destroy();
152        }
153    }
154
155    void Liikuta(PlatformCharacter hahmo, double nopeus)
156    {
157        hahmo.Walk(nopeus);
158    }
159
160    void Hyppaa(PlatformCharacter hahmo, double nopeus)
161    {
162        hahmo.Jump(nopeus);
163    }
164
165    void TormaaAlieniin(PhysicsObject hahmo, PhysicsObject alien)
166    {
167        hahmo.Destroy();
168        HaviaaPelin();
169    }
170    void TormaaKultaan(PhysicsObject hahmo, PhysicsObject Kultaharkko)
171    {
172        Kultaharkko.Destroy();
173        pisteLaskuri.Value += 100;
174    }
175
176    void LuoPisteLaskuri()
177    {
178        pisteLaskuri = new IntMeter(0);
179
180        Label pisteNaytto = new Label();
181        pisteNaytto.X = Screen.Left + 100;
182        pisteNaytto.Y = Screen.Top - 100;
183        pisteNaytto.TextColor = Color.Black;
184        pisteNaytto.Color = Color.LightGreen;
185
186        pisteNaytto.BindTo(pisteLaskuri);
187        Add(pisteNaytto);
188    }
189    void LisaaLaava(Vector paikka, double leveys, double korkeus)
190    {
191        PhysicsObject Laava = PhysicsObject.CreateStaticObject(leveys, korkeus);
192        Laava.IgnoresCollisionResponse = true;
193        Laava.Position = paikka;
194        Laava.Image = laavaKuva;
195        Laava.Tag = "Laava";
196        Add(Laava);
197    }
198    void TormaaLaavaan(PhysicsObject hahmo, PhysicsObject Laava)
199    {
200        hahmo.Destroy();
201        HaviaaPelin();
202    }
203    void LisaaMaali(Vector paikka, double leveys, double korkeus)
204    {
205        PhysicsObject MaaliLippu = PhysicsObject.CreateStaticObject(leveys, korkeus);
206        MaaliLippu.IgnoresCollisionResponse = true;
207        MaaliLippu.Position = paikka;
208        MaaliLippu.Image = maaliKuva;
209        MaaliLippu.Tag = "MaaliLippu";
210        Add(MaaliLippu);
211    }
212    void PaaseeMaaliin(PhysicsObject hahmo, PhysicsObject MaaliLippu)
213    {
214        ClearAll();
215        Level.Background.Image = SpaceRunBackground;
216        topLista.EnterAndShow(pisteLaskuri.Value);
217        topLista.HighScoreWindow.Closed += VoittaaPelin;
218       
219
220    }
221    void HaviaaPelin()
222    {
223        ClearAll();
224        Level.Background.Image = SpaceRunBackground;
225        MultiSelectWindow ikkuna = new MultiSelectWindow("Hävisit! Yritetäänkö uudestaan?", "Kyllä", "Ei");
226        ikkuna.AddItemHandler(0, AloitaPeli);
227        ikkuna.AddItemHandler(1, Exit);
228        Add(ikkuna);
229    }
230
231    public void VoittaaPelin(Window sender)
232    {
233        MultiSelectWindow ikkuna = new MultiSelectWindow("Voitit! Haluatko pelata uudestaan?", "Kyllä", "Ei");
234        ikkuna.AddItemHandler(0, AloitaPeli);
235        ikkuna.AddItemHandler(1, Exit);
236        Add(ikkuna);
237    }
238
239}
Note: See TracBrowser for help on using the repository browser.