source: 2011/23/anlakane/SpeedKing/SpeedKing/SpeedKing/Peli.cs @ 1869

Revision 1869, 9.6 KB checked in by anlakane, 11 years ago (diff)

Päivitin peliäni, laitoin pistelaskun kuntoon.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8using Jypeli.WP7;
9
10public class Peli : Game
11{
12    List<GameObject> painikkeet;
13    List<GameObject> painamattomat;
14
15    Animation painike0animaatio;
16    Animation painike1animaatio;
17    Animation painike2animaatio;
18    Animation painike3animaatio;
19
20    const double painikkeenLeveys = 170;
21    const double painikkeenKorkeus = painikkeenLeveys;
22    Timer painikkeidenSytytin;
23    Timer nopeutusAjastin;
24    Timer aikaaPainaaUuttaNappia;
25
26    Label pistenaytto;
27
28    int painikkeidenMaara;
29    int montakoPainikettaPainettu;
30
31    bool peliPaattynyt;
32
33    Sound piip;
34
35    // ScoreList topten = new ScoreList(10, false, 0);
36    EasyHighScore topten = new EasyHighScore();
37
38    public override void Begin()
39    {
40        Phone.DisplayResolution = DisplayResolution.Large;
41        //Phone.DisplayResolution = DisplayResolution.Small;
42        topten.Text = "";
43        painikkeet = new List<GameObject>();
44        painamattomat = new List<GameObject>();
45        painikkeidenMaara = 4;
46
47        Level.Width = 800;
48        Level.Height = 480;
49        Level.Background.Image = LoadImage("tausta");
50        Level.Background.Size = new Vector(Level.Width, Level.Height);
51        Level.BackgroundColor = Color.Black;
52        MessageDisplay.TextColor = Color.White;
53        Camera.ZoomToLevel();
54
55        //if (DataStorage.Exists("topten.xml"))
56        //{
57        //    //topfive = DataStorage.Load<ScoreList>(topfive, "topten.xml");
58        //}
59
60        LisaaPainikkeet();
61        LuoAjastimet();
62        LataaAanet();
63
64        LisaaPistenaytto();
65        AloitaPeli();
66
67    }
68
69    void LataaAanet()
70    {
71        SoundEffect siniaalto = LoadSoundEffect("sinewave");
72        piip = siniaalto.CreateSound();
73    }
74
75
76    void LuoAjastimet()
77    {
78        painikkeidenSytytin = new Timer();
79        painikkeidenSytytin.Trigger += SytytaJokinPainike;
80
81        nopeutusAjastin = new Timer();
82        nopeutusAjastin.Interval = 5.1;
83        nopeutusAjastin.Trigger += NopeutaPelia;
84
85        aikaaPainaaUuttaNappia = new Timer();
86        aikaaPainaaUuttaNappia.Interval = 3;
87        aikaaPainaaUuttaNappia.Trigger += PeliPaattyy;
88    }
89
90
91    void LisaaPistenaytto()
92    {
93        pistenaytto = new Label(montakoPainikettaPainettu.ToString());
94        pistenaytto.X = 0;
95        pistenaytto.Y = -150;
96        pistenaytto.TextColor = Color.White;
97        pistenaytto.Font = Font.DefaultLargeBold;
98        pistenaytto.SizeMode = TextSizeMode.StretchText;
99        pistenaytto.Size *= 3;
100        Add(pistenaytto);
101    }
102
103    void LisaaPainikkeet()
104    {
105        Image[] painike0kuvat = LoadImages("0", "00");
106        Image[] painike1kuvat = LoadImages("1", "11");
107        Image[] painike2kuvat = LoadImages("2", "22");
108        Image[] painike3kuvat = LoadImages("3", "33");
109        painike0animaatio = new Animation(painike0kuvat);
110        painike1animaatio = new Animation(painike1kuvat);
111        painike2animaatio = new Animation(painike2kuvat);
112        painike3animaatio = new Animation(painike3kuvat);
113        painike0animaatio.FPS = 12;
114        painike1animaatio.FPS = 12;
115        painike2animaatio.FPS = 12;
116        painike3animaatio.FPS = 12;
117
118        for (int i = 0; i < painikkeidenMaara; i++)
119        {
120            Add(LuoPainike());
121        }
122    }
123
124    GameObject LuoPainike()
125    {
126        GameObject painike = new GameObject(painikkeenLeveys, painikkeenKorkeus);
127        painikkeet.Add(painike);
128        painike.X = -((painikkeidenMaara / 2) * (painikkeenLeveys + 20)) + ((painikkeet.Count) * (painikkeenLeveys + 20)) - (painikkeenLeveys / 2);
129        painike.Tag = painikkeet.Count.ToString();
130        painike.Image = LoadImage((painikkeet.Count - 1).ToString() + "_");
131        return painike;
132    }
133
134    void LisaaNappaimet()
135    {
136        Keyboard.Listen(Key.A, ButtonState.Pressed, NappainPainettu, null, 0);
137        Keyboard.Listen(Key.S, ButtonState.Pressed, NappainPainettu, null, 1);
138        Keyboard.Listen(Key.D, ButtonState.Pressed, NappainPainettu, null, 2);
139        Keyboard.Listen(Key.F, ButtonState.Pressed, NappainPainettu, null, 3);
140
141        TouchPanel.Listen(ButtonState.Pressed, NayttoaPainettu, null);
142
143        //Keyboard.Listen(Key.J, ButtonState.Pressed, NappainPainettu, null, 4);
144        //Keyboard.Listen(Key.K, ButtonState.Pressed, NappainPainettu, null, 5);
145        //Keyboard.Listen(Key.L, ButtonState.Pressed, NappainPainettu, null, 6);
146        //Keyboard.Listen(Key., ButtonState.Pressed, NappainPainettu, null, 7);
147
148        #region debug
149        Keyboard.Listen(Key.Left, ButtonState.Down, delegate() { pistenaytto.X -= 2; MessageDisplay.Add("" + pistenaytto.X + " " + pistenaytto.Y); }, null);
150        Keyboard.Listen(Key.Right, ButtonState.Down, delegate() { pistenaytto.X += 2; MessageDisplay.Add("" + pistenaytto.X + " " + pistenaytto.Y); }, null);
151        Keyboard.Listen(Key.Down, ButtonState.Down, delegate() { pistenaytto.Y -= 2; MessageDisplay.Add("" + pistenaytto.X + " " + pistenaytto.Y); }, null);
152        Keyboard.Listen(Key.Up, ButtonState.Down, delegate() { pistenaytto.Y += 2; MessageDisplay.Add("" + pistenaytto.X + " " + pistenaytto.Y); }, null);
153        #endregion
154    }
155
156    void NayttoaPainettu(Touch kosketus)
157    {
158        for (int i = 0; i < painikkeet.Count; i++)
159        {
160            if (painikkeet[i].IsInside(kosketus.PositionOnWorld))
161            {
162                NappainPainettu(i);
163                return;
164            }
165        }
166    }
167
168    void NappainPainettu(int painikeIndeksi)
169    {
170        Phone.Vibrate(50);
171        if (painamattomat.Count < 1 || painamattomat[0].Tag.ToString() != (painikeIndeksi + 1).ToString())
172        {
173            PeliPaattyy(new Timer());
174        }
175        else
176        {
177            painamattomat.RemoveAt(0);
178            aikaaPainaaUuttaNappia.Reset();
179            pistenaytto.Text = (++montakoPainikettaPainettu).ToString();
180        }
181    }
182
183    void PeliPaattyy(Timer t)
184    {
185        Phone.Vibrate(1500);
186        peliPaattynyt = true;
187        ClearControls();
188        painikkeidenSytytin.Stop();
189        nopeutusAjastin.Stop();
190        aikaaPainaaUuttaNappia.Stop();
191        painamattomat.Clear();
192        for (int i = 0; i < painikkeet.Count; i++)
193        {
194            Sytyta(i);
195        }
196        Timer.SingleShot(1, NaytaTopTenJaSalliUudenPelinAloitus);
197    }
198
199    void NaytaTopTenJaSalliUudenPelinAloitus()
200    {
201        //topten.CongratulationText = "Anna nimi";
202        //topten.ScreenList.BackGroundColor = Color.DarkGray;
203        //topten.Show(montakoPainikettaPainettu);
204        //HighScoreWindow h = new HighScoreWindow("SpeedKing", "Hall of fame", "You reached top ten!", topten, montakoPainikettaPainettu);
205        //h.Width = 700;
206        //h.Height = 400;
207        //h.Closed += NimiAnnettu;
208        //Add(h);
209        topten.EnterAndShow(montakoPainikettaPainettu);
210        Keyboard.Listen(Key.Enter, ButtonState.Pressed, AloitaPeli, null);
211        TouchPanel.Listen(ButtonState.Pressed, AloitaPeliJaResetoiKosketus, null);
212    }
213
214    void AloitaPeliJaResetoiKosketus(Touch touch)
215    {
216        ClearControls();
217        AloitaPeli();
218    }
219
220    void AloitaPeli()
221    {
222        peliPaattynyt = false;
223        LisaaNappaimet();
224
225        for (int i = 0; i < painikkeet.Count; i++)
226        {
227            Sammuta(i);
228        }
229        montakoPainikettaPainettu = 0;
230        pistenaytto.Text = "0";
231        painikkeidenSytytin.Interval = 1;
232        painikkeidenSytytin.Start();
233        nopeutusAjastin.Start();
234        aikaaPainaaUuttaNappia.Start();
235    }
236
237    void NopeutaPelia(Timer t)
238    {
239        painikkeidenSytytin.Interval /= 1.11;
240        nopeutusAjastin.Interval = painikkeidenSytytin.Interval * 7.0 + 0.1;
241    }
242
243    void SytytaJokinPainike(Timer t)
244    {
245        int sytytettavanIndeksi = RandomGen.NextInt(0, painikkeet.Count); // Arvotaan sytytettävä nappula
246        Sytyta(sytytettavanIndeksi);
247        painamattomat.Add(painikkeet[sytytettavanIndeksi]);
248        Timer.SingleShot(t.Interval / 1.4, delegate() { Sammuta(sytytettavanIndeksi); });
249        Timer.SingleShot(t.Interval / 2, SammutaAani);
250        switch (sytytettavanIndeksi)
251        {
252            case 0:
253                piip.Pitch = -1;
254                break;
255            case 1:
256                piip.Pitch = -.75;
257                break;
258            case 2:
259                piip.Pitch = -0.4;
260                break;
261            case 3:
262                piip.Pitch = -0.15;
263                break;
264        }
265
266        piip.Play();
267    }
268
269    void Sytyta(int i)
270    {
271        switch (i)
272        {
273            case 0:
274                painikkeet[i].Animation = painike0animaatio;
275                break;
276            case 1:
277                painikkeet[i].Animation = painike1animaatio;
278                break;
279            case 2:
280                painikkeet[i].Animation = painike2animaatio;
281                break;
282            case 3:
283                painikkeet[i].Animation = painike3animaatio;
284                break;
285        }
286        painikkeet[i].Animation.Start();
287    }
288
289    void SammutaAani()
290    {
291        piip.Stop();
292    }
293
294    void Sammuta(int i)
295    {
296        if (!peliPaattynyt) // Ei sammuteta nappulaa jos peli on päättynyt.
297        {
298            painikkeet[i].Animation.Stop();
299            painikkeet[i].Image = LoadImage(i.ToString() + "_");
300        }
301    }
302
303    protected override void Update(Time time)
304    {
305        base.Update(time);
306    }
307}
Note: See TracBrowser for help on using the repository browser.