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

Revision 1211, 5.0 KB checked in by anlakane, 11 years ago (diff)

Siistimistä.

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    protected override void Begin()
23    {
24        painikkeet = new List<GameObject>();
25        painamattomat = new List<GameObject>();
26        painikkeidenMaara = 4;
27
28        Level.Background.Image = LoadImage("tausta");
29        Level.Background.Size = new Vector(Screen.Width, Screen.Height);
30        MessageDisplay.TextColor = Color.White;
31        LisaaNappaimet();
32        LisaaPainikkeet();
33        LuoAjastimet();
34
35        LisaaPistenaytto();
36        AloitaPeli();
37
38    }
39
40    void LuoAjastimet()
41    {
42        painikkeidenSytytin = new Timer();
43        painikkeidenSytytin.Trigger += SytytaJokinPainike;
44        Add(painikkeidenSytytin);
45
46        nopeutusAjastin = new Timer();
47        nopeutusAjastin.Interval = 5;
48        nopeutusAjastin.Trigger += NopeutaPelia;
49        Add(nopeutusAjastin);
50
51        aikaaPainaaUuttaNappia = new Timer();
52        aikaaPainaaUuttaNappia.Interval = 3;
53        aikaaPainaaUuttaNappia.Trigger += PeliPaattyy;
54        Add(aikaaPainaaUuttaNappia);
55
56    }
57
58
59    void LisaaPistenaytto()
60    {
61        pistenaytto = new Label(montakoPainikettaPainettu.ToString());
62        pistenaytto.Position = new Vector(0, -200);
63        pistenaytto.TextColor = Color.White;
64        Add(pistenaytto);
65    }
66
67    void LisaaPainikkeet()
68    {
69        for (int i = 0; i < painikkeidenMaara; i++)
70        {
71            Add(LuoPainike());
72        }
73    }
74
75    GameObject LuoPainike()
76    {
77        GameObject painike = new GameObject(painikkeenLeveys, painikkeenKorkeus);
78        painike.Color = RandomGen.NextColor();
79        byte r = painike.Color.RedComponent;
80        byte g = painike.Color.GreenComponent;
81        byte b = painike.Color.BlueComponent;
82        r = (byte)((double)r / 1.5);
83        g = (byte)((double)g / 1.5);
84        b = (byte)((double)b / 1.5);
85        painike.Color = new Color(r, g, b);
86
87        painikkeet.Add(painike);
88        painike.X = -((painikkeidenMaara / 2) * (painikkeenLeveys + 20)) + ((painikkeet.Count) * (painikkeenLeveys + 20)) - 20;
89        painike.Tag = painikkeet.Count.ToString();
90        painike.Image = LoadImage((painikkeet.Count - 1).ToString() + "_");
91        return painike;
92    }
93
94    void LisaaNappaimet()
95    {
96        Keyboard.Listen(Key.A, ButtonState.Pressed, NappainPainettu, null, 0);
97        Keyboard.Listen(Key.S, ButtonState.Pressed, NappainPainettu, null, 1);
98        Keyboard.Listen(Key.D, ButtonState.Pressed, NappainPainettu, null, 2);
99        Keyboard.Listen(Key.F, ButtonState.Pressed, NappainPainettu, null, 3);
100        //Keyboard.Listen(Key.J, ButtonState.Pressed, NappainPainettu, null, 4);
101        //Keyboard.Listen(Key.K, ButtonState.Pressed, NappainPainettu, null, 5);
102        //Keyboard.Listen(Key.L, ButtonState.Pressed, NappainPainettu, null, 6);
103        //Keyboard.Listen(Key., ButtonState.Pressed, NappainPainettu, null, 7);
104
105    }
106
107    void NappainPainettu(int painikeIndeksi)
108    {
109        if (painamattomat.Count < 1 || painamattomat[0].Tag.ToString() != (painikeIndeksi + 1).ToString())
110        {
111            PeliPaattyy(new Timer());
112        }
113        else
114        {
115            painamattomat.RemoveAt(0);
116            aikaaPainaaUuttaNappia.Reset();
117            pistenaytto.Text = (++montakoPainikettaPainettu).ToString();
118        }
119    }
120
121    void PeliPaattyy(Timer t)
122    {
123        painikkeidenSytytin.Stop();
124        nopeutusAjastin.Stop();
125        aikaaPainaaUuttaNappia.Stop();
126        painamattomat.Clear();
127        for (int i = 0; i < painikkeet.Count; i++)
128            Sytyta(i);
129        Keyboard.Listen(Key.Enter, ButtonState.Pressed, AloitaPeli, null);
130    }
131
132    void AloitaPeli()
133    {
134        for (int i = 0; i < painikkeet.Count; i++)
135        {
136            Sammuta(i);
137        }
138        montakoPainikettaPainettu = 0;
139        pistenaytto.Text = "0";
140        painikkeidenSytytin.Interval = 1;
141        painikkeidenSytytin.Start();
142        nopeutusAjastin.Start();
143        aikaaPainaaUuttaNappia.Start();
144    }
145
146    void NopeutaPelia(Timer t)
147    {
148        painikkeidenSytytin.Interval /= 1.2;
149    }
150
151    void SytytaJokinPainike(Timer t)
152    {
153        int sytytettavanIndeksi = RandomGen.NextInt(0, painikkeet.Count - 1);
154        Sytyta(sytytettavanIndeksi);
155        painamattomat.Add(painikkeet[sytytettavanIndeksi]);
156        Timer.SingleShot(t.Interval / 1.4, delegate() { Sammuta(sytytettavanIndeksi); });
157    }
158
159    void Sytyta(int i)
160    {
161        painikkeet[i].Image = LoadImage(i.ToString());
162    }
163
164    void Sammuta(int i)
165    {
166        painikkeet[i].Image = LoadImage(i.ToString() + "_");
167    }
168
169
170}
Note: See TracBrowser for help on using the repository browser.