source: 2010/24/anlakane/Muistipeli/Peli.cs @ 881

Revision 881, 4.8 KB checked in by anlakane, 10 years ago (diff)

Liikkuminen toimii jo melkeen.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.ScreenObjects;
5using Jypeli.Assets;
6
7public class Peli : Game
8{
9    List<GameObject> kortit = new List<GameObject>();
10    double kortinLeveys = 80;
11    double kortinKorkeus = 100;
12    int korostettuKortti;
13    int montakoKorttiaRiviin;
14
15    public enum Suunta { Vasen, Oikea, Ylos, Alas }
16
17    protected override void Begin()
18    {
19        TeeKortit();
20        AsetaNappaimet();
21        KortitRuudulle(kortit);
22        ValitseEnsimmainen();
23    }
24
25    void ValitseEnsimmainen()
26    {
27        KorostaKortti(kortit.Count / 2);
28        korostettuKortti = kortit.Count / 2;
29    }
30
31    int KortinNumeronTarkistus(int kortinNro)
32    {
33        if (kortinNro < 0)
34        {
35            kortinNro = kortit.Count - 1;
36        }
37
38        if (kortinNro > kortit.Count - 1)
39        {
40            kortinNro = 0;
41        }
42
43        return kortinNro;
44    }
45
46    void KorostaKortti(int kortinNro)
47    {
48        kortinNro = KortinNumeronTarkistus(kortinNro);
49        kortit[kortinNro].Color = Color.Gray;
50        korostettuKortti = kortinNro;
51    }
52
53    void PoistaKorostus(int kortinNro)
54    {
55        kortinNro = KortinNumeronTarkistus(kortinNro);
56        kortit[kortinNro].Color = Color.White;
57    }
58
59    void AsetaNappaimet()
60    {
61        Keyboard.Listen(Key.Left, ButtonState.Pressed, KortinValinta, null, Suunta.Vasen);
62        Keyboard.Listen(Key.Right, ButtonState.Pressed, KortinValinta, null, Suunta.Oikea);
63        Keyboard.Listen(Key.Up, ButtonState.Pressed, KortinValinta, null, Suunta.Ylos);
64        Keyboard.Listen(Key.Down, ButtonState.Pressed, KortinValinta, null, Suunta.Alas);
65    }
66
67    void KortinValinta(Suunta suunta)
68    {
69        bool rivinAlussa = false;
70        bool rivinLopussa = false;
71        if (korostettuKortti % (montakoKorttiaRiviin +1) == 0)
72            rivinAlussa = true;
73        if ((korostettuKortti+1) % (montakoKorttiaRiviin+1) == 0)
74            rivinLopussa = true;
75
76
77        if (suunta == Suunta.Vasen)
78        {
79            PoistaKorostus(korostettuKortti);
80            if (rivinAlussa)
81            {
82                KorostaKortti(korostettuKortti + montakoKorttiaRiviin);
83                MessageDisplay.Add("Korostettu kortti: " + korostettuKortti);
84                return;
85            }
86                KorostaKortti(--korostettuKortti);
87                MessageDisplay.Add("Korostettu kortti: " + korostettuKortti);
88
89        }
90
91        if (suunta == Suunta.Oikea)
92        {
93            PoistaKorostus(korostettuKortti);
94            if (rivinLopussa)
95            {
96                KorostaKortti(korostettuKortti - montakoKorttiaRiviin);
97                MessageDisplay.Add("Korostettu kortti: " + korostettuKortti);
98
99                return;
100            }           
101            KorostaKortti(++korostettuKortti);
102            MessageDisplay.Add("Korostettu kortti: " + korostettuKortti);
103
104        }
105
106        if (suunta == Suunta.Ylos)
107        {
108            PoistaKorostus(korostettuKortti);
109            KorostaKortti(korostettuKortti - montakoKorttiaRiviin-1);
110            MessageDisplay.Add("Korostettu kortti: " + korostettuKortti);
111
112        }
113
114        if (suunta == Suunta.Alas)
115        {
116            PoistaKorostus(korostettuKortti);
117            KorostaKortti(korostettuKortti + montakoKorttiaRiviin + 1);
118            MessageDisplay.Add("Korostettu kortti: " + korostettuKortti);
119
120        }
121        //MessageDisplay.Add(montakoKorttiaRiviin.ToString());
122        //MessageDisplay.Add((korostettuKortti % (montakoKorttiaRiviin +1)).ToString());
123    }
124
125    void TeeKortit()
126    {
127        for (int i = 0; i < 15; i++)
128        {
129            TeeKortti();
130        }
131    }
132
133    private void KortitRuudulle(List<GameObject> kortit)
134    {
135        int montakoKorttia = kortit.Count;
136        //int montakoKorttiaRiviin = 8;
137        montakoKorttiaRiviin = (int)Math.Sqrt(kortit.Count);
138        int montakoRivia = (kortit.Count / montakoKorttiaRiviin);
139
140        int i = 0;
141        int rivi = 1;
142        int rivilla = 0;
143        foreach (GameObject kortti in kortit)
144        {
145            Add(kortti);
146            //kortti.X = (-(montakoKorttia * (kortinLeveys + 20)) / 2) + (i * (kortinLeveys + 20));
147            kortti.X = (-(montakoKorttiaRiviin * (kortinLeveys + 20)) / 2) + (rivilla * (kortinLeveys + 20));
148            kortti.Y = (montakoRivia * (kortinKorkeus + 20)) / 2 - rivi * (kortinKorkeus + 20);
149            i++;
150            rivilla++;
151            if (rivilla > montakoKorttiaRiviin)
152            {
153                rivi++;
154                rivilla = 0;
155            }
156        }
157    }
158
159    void TeeKortti()
160    {       
161        GameObject kortti = new GameObject(kortinLeveys, kortinKorkeus, Shapes.Rectangle);
162        kortti.Color = Color.White;
163        kortit.Add(kortti);
164    }
165}
Note: See TracBrowser for help on using the repository browser.