source: 2010/27/anlakane/Nopeuspeli/Peli.cs @ 1212

Revision 1212, 5.8 KB checked in by anlakane, 12 years ago (diff)

Äänet ja vähän helpotuista peliin.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Widgets;
5using Jypeli.Assets;
6
7public class Peli : Game
8{
9    List<GameObject> painikkeet;
10    List<GameObject> painamattomat;
11    const double painikkeenLeveys = 100;
12    const double painikkeenKorkeus = painikkeenLeveys;
13    Timer painikkeidenSytytin;
14    Timer nopeutusAjastin;
15    Timer aikaaPainaaUuttaNappia;
16
17    Label pistenaytto;
18
19    int painikkeidenMaara;
20    int montakoPainikettaPainettu;
21
22    Sound piip;
23
24    protected override void Begin()
25    {
26        painikkeet = new List<GameObject>();
27        painamattomat = new List<GameObject>();
28        painikkeidenMaara = 4;
29
30        Level.Background.Image = LoadImage("tausta");
31        Level.Background.Size = new Vector(Screen.Width, Screen.Height);
32        MessageDisplay.TextColor = Color.White;
33        LisaaNappaimet();
34        LisaaPainikkeet();
35        LuoAjastimet();
36        LataaAanet();
37
38        LisaaPistenaytto();
39        AloitaPeli();
40
41    }
42
43    void LataaAanet()
44    {
45        SoundEffect siniaalto = LoadSoundEffect("sinewave");
46        piip = siniaalto.CreateSound();
47    }
48
49
50    void LuoAjastimet()
51    {
52        painikkeidenSytytin = new Timer();
53        painikkeidenSytytin.Trigger += SytytaJokinPainike;
54        Add(painikkeidenSytytin);
55
56        nopeutusAjastin = new Timer();
57        nopeutusAjastin.Interval = 5;
58        nopeutusAjastin.Trigger += NopeutaPelia;
59        Add(nopeutusAjastin);
60
61        aikaaPainaaUuttaNappia = new Timer();
62        aikaaPainaaUuttaNappia.Interval = 3;
63        aikaaPainaaUuttaNappia.Trigger += PeliPaattyy;
64        Add(aikaaPainaaUuttaNappia);
65
66    }
67
68
69    void LisaaPistenaytto()
70    {
71        pistenaytto = new Label(montakoPainikettaPainettu.ToString());
72        pistenaytto.Position = new Vector(0, -200);
73        pistenaytto.TextColor = Color.White;
74        Add(pistenaytto);
75    }
76
77    void LisaaPainikkeet()
78    {
79        for (int i = 0; i < painikkeidenMaara; i++)
80        {
81            Add(LuoPainike());
82        }
83    }
84
85    GameObject LuoPainike()
86    {
87        GameObject painike = new GameObject(painikkeenLeveys, painikkeenKorkeus);
88        painike.Color = RandomGen.NextColor();
89        byte r = painike.Color.RedComponent;
90        byte g = painike.Color.GreenComponent;
91        byte b = painike.Color.BlueComponent;
92        r = (byte)((double)r / 1.5);
93        g = (byte)((double)g / 1.5);
94        b = (byte)((double)b / 1.5);
95        painike.Color = new Color(r, g, b);
96
97        painikkeet.Add(painike);
98        painike.X = -((painikkeidenMaara / 2) * (painikkeenLeveys + 20)) + ((painikkeet.Count) * (painikkeenLeveys + 20)) - 20;
99        painike.Tag = painikkeet.Count.ToString();
100        painike.Image = LoadImage((painikkeet.Count - 1).ToString() + "_");
101        return painike;
102    }
103
104    void LisaaNappaimet()
105    {
106        Keyboard.Listen(Key.A, ButtonState.Pressed, NappainPainettu, null, 0);
107        Keyboard.Listen(Key.S, ButtonState.Pressed, NappainPainettu, null, 1);
108        Keyboard.Listen(Key.D, ButtonState.Pressed, NappainPainettu, null, 2);
109        Keyboard.Listen(Key.F, ButtonState.Pressed, NappainPainettu, null, 3);
110        //Keyboard.Listen(Key.J, ButtonState.Pressed, NappainPainettu, null, 4);
111        //Keyboard.Listen(Key.K, ButtonState.Pressed, NappainPainettu, null, 5);
112        //Keyboard.Listen(Key.L, ButtonState.Pressed, NappainPainettu, null, 6);
113        //Keyboard.Listen(Key., ButtonState.Pressed, NappainPainettu, null, 7);
114
115    }
116
117    void NappainPainettu(int painikeIndeksi)
118    {
119        if (painamattomat.Count < 1 || painamattomat[0].Tag.ToString() != (painikeIndeksi + 1).ToString())
120        {
121            PeliPaattyy(new Timer());
122        }
123        else
124        {
125            painamattomat.RemoveAt(0);
126            aikaaPainaaUuttaNappia.Reset();
127            pistenaytto.Text = (++montakoPainikettaPainettu).ToString();
128        }
129    }
130
131    void PeliPaattyy(Timer t)
132    {
133        painikkeidenSytytin.Stop();
134        nopeutusAjastin.Stop();
135        aikaaPainaaUuttaNappia.Stop();
136        painamattomat.Clear();
137        for (int i = 0; i < painikkeet.Count; i++)
138            Sytyta(i);
139        Keyboard.Listen(Key.Enter, ButtonState.Pressed, AloitaPeli, null);
140    }
141
142    void AloitaPeli()
143    {
144        for (int i = 0; i < painikkeet.Count; i++)
145        {
146            Sammuta(i);
147        }
148        montakoPainikettaPainettu = 0;
149        pistenaytto.Text = "0";
150        painikkeidenSytytin.Interval = 1;
151        painikkeidenSytytin.Start();
152        nopeutusAjastin.Start();
153        aikaaPainaaUuttaNappia.Start();
154    }
155
156    void NopeutaPelia(Timer t)
157    {
158        painikkeidenSytytin.Interval /= 1.15;
159    }
160
161    void SytytaJokinPainike(Timer t)
162    {
163        int sytytettavanIndeksi = RandomGen.NextInt(0, painikkeet.Count - 1);
164        Sytyta(sytytettavanIndeksi);
165        painamattomat.Add(painikkeet[sytytettavanIndeksi]);
166        Timer.SingleShot(t.Interval / 1.4, delegate() { Sammuta(sytytettavanIndeksi); });
167        Timer.SingleShot(t.Interval / 2, SammutaAani);
168        switch (sytytettavanIndeksi)
169        {
170            case 0 :
171                piip.Pitch = -1;
172                break;
173            case 1:
174                piip.Pitch = -.75;
175                break;
176            case 2:
177                piip.Pitch = -0.4;
178                break;
179            case 3:
180                piip.Pitch = -0.15;
181                break;
182
183        }
184       
185        piip.Play();
186    }
187
188    void Sytyta(int i)
189    {
190        painikkeet[i].Image = LoadImage(i.ToString());       
191    }
192
193    void SammutaAani()
194    {
195        piip.Stop();
196    }
197
198    void Sammuta(int i)
199    {
200        painikkeet[i].Image = LoadImage(i.ToString() + "_");       
201    }
202
203
204}
Note: See TracBrowser for help on using the repository browser.