source: 2015/30/MatiasR/kuulapeli/kuulapeli/kuulapeli/kuulapeli.cs @ 6927

Revision 6927, 8.1 KB checked in by misakana, 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 kuulapeli : PhysicsGame
10{
11    PhysicsObject Pelaaja1;
12    PhysicsObject Pelaaja2;
13    IntMeter pisteLaskuri;
14    Label pisteNaytto;
15    int kenttaNro = 1;
16    int kenttiayhteensa = 3;
17    Timer aikaLaskuri;
18    EasyHighScore topLista = new EasyHighScore();
19    //ScoreList topLista2 = new ScoreList(10, true, 0);
20    SoundEffect pickup = LoadSoundEffect("Pickup_Coin3");
21
22    public override void Begin()
23    {
24        topLista.HighScoreWindow.Closed +=  w => alkuvalikko();
25        //topLista2 = DataStorage.TryLoad<ScoreList>(topLista2, "pisteet.xml");
26        alkuvalikko();
27    }
28
29    void aloitapelialusta()
30    {
31        kenttaNro = 1;
32       
33        aikaLaskuri = new Timer();
34        aikaLaskuri.Start();
35
36        aloitapeli();
37    }
38
39    void aloitapeli()
40    {
41        //ClearAll();
42        ClearControls();
43        ClearGameObjects();
44
45        if (kenttaNro > kenttiayhteensa)
46        {
47            voitapeli();
48            return;
49        }
50        LuoPistelaskuri();
51        LuoAikaLaskuri();
52        Luokentta();
53
54        Camera.Follow(Pelaaja1, Pelaaja2);
55
56        Keyboard.Listen(Key.Escape, ButtonState.Pressed, lopetusvalikko, "Lopeta peli");
57        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "liiku",Pelaaja1, new Vector(-3000,0));
58        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "liiku",Pelaaja1, new Vector(3000, 0));
59        Keyboard.Listen(Key.Up, ButtonState.Down, Liikuta, "liiku",Pelaaja1, new Vector(0, 3000));
60        Keyboard.Listen(Key.Down, ButtonState.Down, Liikuta, "liiku",Pelaaja1, new Vector(0, -3000));
61
62        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "liiku", Pelaaja2, new Vector(-3000, 0));
63        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "liiku", Pelaaja2, new Vector(3000, 0));
64        Keyboard.Listen(Key.W, ButtonState.Down, Liikuta, "liiku", Pelaaja2, new Vector(0, 3000));
65        Keyboard.Listen(Key.S, ButtonState.Down, Liikuta, "liiku", Pelaaja2, new Vector(0, -3000));
66
67        Keyboard.Listen(Key.F12, ButtonState.Down, voitapeli, "l");
68
69        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.1, LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.", Pelaaja1);
70        ControllerTwo.ListenAnalog(AnalogControl.RightStick, 0.1, LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.", Pelaaja2);
71
72        Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, SiirrySeuraavaan, "siirry seuraavaan kenttään");
73    }
74
75    void SiirrySeuraavaan()
76    {
77        kenttaNro++;
78        aloitapeli();
79    }
80
81    void LiikutaPelaajaa(AnalogState tatinTila, PhysicsObject pelaaja)
82    {
83        pelaaja.Push(tatinTila.StateVector * 3000);
84    }
85
86    void Liikuta(PhysicsObject pelaaja, Vector suunta)
87    {
88        pelaaja.Push(suunta);
89    }
90
91    void Luokentta()
92    {
93        pisteLaskuri.MaxValue = 0;
94     ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta " + kenttaNro);
95     ruudut.SetTileMethod(Color.FromHexCode("FF6A00"), LuoPelaaja1);
96     ruudut.SetTileMethod(Color.Black, LuoTaso);
97     ruudut.SetTileMethod(Color.FromHexCode("00FF00"), LuoPallo);
98     ruudut.SetTileMethod(Color.FromHexCode("0026FF"), LuoViimeinenPallo);
99     ruudut.SetTileMethod(Color.FromHexCode("FF0F13"), LuoPunainenTaso);
100     ruudut.SetTileMethod(Color.FromHexCode("FF00DC"), LuoPelaaja2);
101     ruudut.Execute(20, 20);
102     pisteNaytto.IntFormatString = "{0} / "+pisteLaskuri.MaxValue;
103
104    }
105
106    PhysicsObject LuoPelaaja(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject Pelaaja = new PhysicsObject(leveys, korkeus);
109        Pelaaja.LinearDamping = 0.7;
110        Pelaaja.CanRotate = false;
111        Pelaaja.Position = paikka;
112        Add(Pelaaja);
113        Pelaaja.Color = Color.Orange;
114        AddCollisionHandler(Pelaaja, "pallo", tormaapalloon);
115        AddCollisionHandler(Pelaaja, "seina", tormaaseinaan);
116        return Pelaaja;
117    }
118    void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
119    {
120        Pelaaja1 = LuoPelaaja(paikka, leveys, korkeus);
121    }
122    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
123    {
124        Pelaaja2 = LuoPelaaja(paikka, leveys, korkeus);
125    }
126
127    void LuoTaso(Vector paikka, double leveys, double korkeus)
128    {
129        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
130        taso.Color = Color.Black;
131        taso.Position = paikka;
132        taso.Tag = "seina";
133        Add(taso);
134    }
135    void LuoPallo(Vector paikka, double leveys, double korkeus)
136    {
137        LuoKerattava(paikka, leveys, korkeus, Color.Green);
138    }
139    void LuoViimeinenPallo(Vector paikka, double leveys, double korkeus)
140    {
141        LuoKerattava(paikka, leveys, korkeus, Color.Blue);
142    }
143    void LuoKerattava(Vector paikka, double leveys, double korkeus, Color vari)
144    {
145        PhysicsObject Pallo = PhysicsObject.CreateStaticObject(leveys, korkeus);
146        Pallo.IgnoresCollisionResponse = true;
147        Pallo.Shape = Shape.Circle;
148        Pallo.Color = vari;
149        Pallo.Position = paikka;
150        Pallo.Tag = "pallo";
151        Add(Pallo);
152
153        pisteLaskuri.MaxValue++;
154    }
155    void LuoPunainenTaso(Vector paikka, double leveys, double korkeus)
156    {
157        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
158        taso.Color = Color.Red;
159        taso.Position = paikka;
160        taso.Tag = "avaa";
161        Add(taso);
162    }
163    void tormaapalloon(PhysicsObject pelaaja, PhysicsObject pallo)
164    {
165        pallo.Destroy();
166        pisteLaskuri.Value++;
167        pickup.Play();
168
169        if (pisteLaskuri.Value == pisteLaskuri.MaxValue - 1)
170        {
171            GetObjectsWithTag("avaa").ForEach(o => o.Destroy());
172        }
173        if (pisteLaskuri.Value == pisteLaskuri.MaxValue)
174        {
175            kenttaNro++;
176            aloitapeli();
177        }
178    }
179    void tormaaseinaan(PhysicsObject pelaaja, PhysicsObject seina)
180    {
181        aloitapeli();
182    }
183    void LuoPistelaskuri()
184    {
185        pisteLaskuri = new IntMeter(0);
186
187        pisteNaytto = new Label();
188        pisteNaytto.X = Screen.Left + 100;
189        pisteNaytto.Y = Screen.Top - 100;
190        pisteNaytto.TextColor = Color.Black;
191        pisteNaytto.Color = Color.White;
192
193        pisteNaytto.BindTo(pisteLaskuri);
194        Add(pisteNaytto);
195    }
196    void LuoAikaLaskuri()
197    {
198        Label aikaNaytto = new Label();
199        aikaNaytto.TextColor = Color.Red;
200        aikaNaytto.DecimalPlaces = 1;
201        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
202        Add(aikaNaytto);
203        aikaNaytto.X = Screen.Right - 100;
204        aikaNaytto.Y = Screen.Top - 100;
205    }
206
207    void voitapeli()
208    {
209        aikaLaskuri.Stop();
210        topLista.EnterAndShow(aikaLaskuri.CurrentTime);
211        //HighScoreWindow topIkkuna = new HighScoreWindow(
212        //                     "Parhaat pisteet",
213        //                     "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:",
214        //                     topLista2, aikaLaskuri.CurrentTime);
215        //topIkkuna.Closed += w => alkuvalikko();
216        //Add(topIkkuna);
217
218    }
219
220    void lopetusvalikko()
221    {
222        MultiSelectWindow lopetusValikko = new MultiSelectWindow("palaa alkuvalikkoon?", "kyllä", "ei");
223        Add(lopetusValikko);
224        lopetusValikko.AddItemHandler(0, alkuvalikko);
225    }
226    void alkuvalikko()
227    {
228        ClearAll();
229        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko","Aloita peli", "Parhaat pisteet", "Lopeta");
230        Add(alkuValikko);
231        alkuValikko.AddItemHandler(0, aloitapelialusta);
232        alkuValikko.AddItemHandler(1, parhaatpisteet);
233        alkuValikko.AddItemHandler(2, Exit);
234    }
235    void parhaatpisteet()
236    {
237        topLista.Show();
238        //HighScoreWindow topIkkuna = new HighScoreWindow(
239        //                      "Parhaat pisteet",
240        //                      topLista2);
241        //topIkkuna.Closed += w => alkuvalikko();
242        //Add(topIkkuna);
243
244    }
245
246}
Note: See TracBrowser for help on using the repository browser.