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

Revision 1209, 5.5 KB checked in by anlakane, 10 years ago (diff)

Pitihän se laskuri vielä tehä. Kun peli päättyy niin viimeiseksi palanut nappi vielä sammuu, pitää keksiä joku tapa clearata singleshot ajastin.

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(painikkeet[i], 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        Color alkuperainenVari = painikkeet[sytytettavanIndeksi].Color;
155        Sytyta(painikkeet[sytytettavanIndeksi], sytytettavanIndeksi);
156        painamattomat.Add(painikkeet[sytytettavanIndeksi]);
157        Timer.SingleShot(t.Interval / 1.4, delegate() { Sammuta(sytytettavanIndeksi); });
158    }
159
160    void Sytyta(GameObject sytytettava, int indeksi)
161    {
162        Color alkuperainenVari = sytytettava.Color;
163        double r = alkuperainenVari.RedComponent + 164;
164        double g = alkuperainenVari.GreenComponent + 164;
165        double b = alkuperainenVari.BlueComponent + 164;
166        if (r >= 255) r = 255;
167        if (g >= 255) g = 255;
168        if (b >= 255) b = 255;
169        sytytettava.Image = LoadImage(indeksi.ToString());
170    }
171
172    void Sammuta(int i)
173    {
174        painikkeet[i].Image = LoadImage(i.ToString() + "_");
175    }
176
177
178}
Note: See TracBrowser for help on using the repository browser.