source: 2013/24/EemeliP/Tasohyppelypeli3/Tasohyppelypeli3/Tasohyppelypeli3/Braaains!!.cs @ 4153

Revision 4153, 6.1 KB checked in by eevipenn, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Tasohyppelypeli3 : PhysicsGame
10{
11    int kenttaNro = 1;
12
13    const double nopeus = 450;
14    const double hyppyNopeus = 800;
15    const int RUUDUN_KOKO = 40;
16
17    Vector aloituspaikka = Vector.Zero;
18    PlatformCharacter pelaaja1;
19
20    Image maaliKuva = LoadImage("finish");
21    Image vaaraKuva = LoadImage("spike");
22    Image pelaajanKuva = LoadImage("ukko");
23    Image aivoKuva = LoadImage("tahti");
24
25    SoundEffect maaliAani = LoadSoundEffect("beep");
26    private Animation fetusAnimaatio;
27
28    public override void Begin()
29    {
30        fetusAnimaatio = LoadAnimation("fetus");
31        MultiSelectWindow alkuValikko = new MultiSelectWindow("Braaains!!", "Start", "Close");
32        alkuValikko.AddItemHandler(0, AloitaPeli);
33        alkuValikko.AddItemHandler(1, Exit);
34        Add(alkuValikko);
35        IsFullScreen = true;
36
37    }
38
39    void AloitaPeli()
40    {
41        SeuraavaKentta();
42    }
43
44    void LuoKentta()
45    {
46        MediaPlayer.Play("hotdamned");
47        TileMap kentta = TileMap.FromLevelAsset("kentta1");
48    }
49
50    void LisaaTaso(Vector paikka, double leveys, double korkeus)
51    {
52        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
53        taso.Position = paikka;
54        taso.Color = Color.Red;
55        Add(taso);
56    }
57
58    void LisaaKerattava(Vector paikka, double leveys, double korkeus)
59    {
60        PhysicsObject kerattavaUkko = PhysicsObject.CreateStaticObject(leveys, korkeus);
61        kerattavaUkko.IgnoresCollisionResponse = true;
62        kerattavaUkko.Position = paikka;
63        kerattavaUkko.Image = aivoKuva;
64        kerattavaUkko.Tag = "tahti";
65        // laskuriin yksi luku lisää...
66        Add(kerattavaUkko);
67    }
68
69    void LisaaVaara(Vector paikka, double leveys, double korkeus)
70    {
71        PhysicsObject vaara = PhysicsObject.CreateStaticObject(leveys, korkeus);
72        vaara.IgnoresCollisionResponse = true;
73        vaara.Position = paikka;
74        vaara.Image = vaaraKuva;
75        vaara.Tag = "spike";
76        Add(vaara);
77    }
78
79    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
80    {
81        pelaaja1 = new PlatformCharacter(leveys, korkeus);
82        pelaaja1.Animation = fetusAnimaatio;
83        pelaaja1.Animation.Start();
84        pelaaja1.Position = paikka;
85        pelaaja1.Mass = 4.0;
86        //pelaaja1.Image = pelaajanKuva;
87        aloituspaikka = paikka;
88        AddCollisionHandler(pelaaja1, "tahti", TormaaKerattavaan);
89        AddCollisionHandler(pelaaja1, "spike", TormaaVaaraan);
90        AddCollisionHandler(pelaaja1, "maali", TormasiMaaliin);
91        Add(pelaaja1);
92    }
93
94
95
96    void LisaaNappaimet()
97    {
98        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
99        Keyboard.Listen(Key.I, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
100        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
101
102        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
103        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
104        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
105
106        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
107
108        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
109        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
110        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
111
112        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
113    }
114
115    void Liikuta(PlatformCharacter hahmo, double nopeus)
116    {
117        hahmo.Walk(nopeus);
118    }
119
120    void Hyppaa(PlatformCharacter hahmo, double nopeus)
121    {
122        hahmo.Jump(nopeus);
123    }
124
125    void TormaaKerattavaan(PhysicsObject hahmo, PhysicsObject tahti)
126    {
127        maaliAani.Play();
128        MessageDisplay.Add("BRAAAINS!!");
129        tahti.Destroy();
130        // vähennettäisiin laskurista yksi...
131    }
132
133    void TormaaVaaraan(PhysicsObject hahmo, PhysicsObject vaara)
134    {
135        MessageDisplay.Add("Start again");
136        hahmo.Position = aloituspaikka;
137    }
138
139    void AloitaAlusta()
140    {
141        LuoKentta();
142        Gravity = new Vector(0, -1000);
143    }
144
145    void LuoKentta(string kenttaNimi)
146    {
147        MediaPlayer.Play(kenttaNimi + "_musiikki");
148        TileMap kentta = TileMap.FromLevelAsset(kenttaNimi);
149        kentta.SetTileMethod('#', LisaaTaso);
150        kentta.SetTileMethod('M', LisaaMaali);
151        kentta.SetTileMethod('V', LisaaVaara);
152        kentta.SetTileMethod('*', LisaaKerattava);
153        kentta.SetTileMethod('N', LisaaPelaaja);
154        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
155        Level.CreateBorders();
156        Level.Background.CreateGradient(Color.Red, Color.Black);
157
158    }
159    void TormasiMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
160    {
161        kenttaNro++;
162        SeuraavaKentta();
163    }
164
165
166    void SeuraavaKentta()
167    {
168        ClearAll();
169
170        if (kenttaNro == 1) LuoKentta("kentta1");
171        else if (kenttaNro == 2) LuoKentta("kentta2");
172        else if (kenttaNro == 3) LuoKentta("kentta3");
173        else if (kenttaNro == 4) LuoKentta("kentta4");
174        else if (kenttaNro == 5) LuoKentta("kentta5");
175        else if (kenttaNro > 6) Exit();
176
177        Gravity = new Vector(0, -1000);
178        LisaaNappaimet();
179
180        Camera.Follow(pelaaja1);
181        Camera.ZoomFactor = 1.2;
182        Camera.StayInLevel = true;
183
184    }
185
186    void LisaaMaali(Vector paikka, double leveys, double korkeus)
187    {
188        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
189        maali.IgnoresCollisionResponse = true;
190        maali.Position = paikka;
191        maali.Image = maaliKuva;
192        maali.Tag = "maali";
193        Add(maali);
194    }
195}
Note: See TracBrowser for help on using the repository browser.