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

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