source: 2010/23/hniemi/JyTris/JyTris/Pitka.cs @ 1479

Revision 1479, 2.9 KB checked in by hniemi, 9 years ago (diff)

Palikan kääntö lisätty, pistenäytön teko aloitettu.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.ScreenObjects;
7using Jypeli.Assets;
8
9namespace JyTris 
10{
11    class Pitka : ITetrispalikka
12    {
13        Vector[] sijainnit;
14        Vector[][] siirrot;
15
16        private int seuraavaAsento = 0;
17
18        /// <summary>
19        /// Luo I-palikan
20        ///
21        /// Pelikentän oltava vähintään 4 korkea ja 4 leveä,
22        /// jotta palikkaa voidaan käyttää
23        /// </summary>
24        /// <param name="keskikohta">Palikan X-koordinaatti</param>
25        public Pitka(int keskikohta)
26        { 
27            //Tämä silmukkaa tekee uudet palikat ja laittaa ne järjestykseen
28            sijainnit = new Vector[4];
29            for (int i = 0; i < sijainnit.Length; i++)
30            {
31                sijainnit[i] = new Vector(keskikohta,0);
32            }
33            sijainnit[3].Y = 0;
34            sijainnit[0].Y = 1;
35            sijainnit[1].Y = 2;
36            sijainnit[2].Y = 3;
37           
38            //Tämä luo siirrot, jotta palikkaa voidaan kääntää
39            siirrot = new Vector[2][];
40            siirrot[0] = new Vector[4];
41            siirrot[1] = new Vector[4];
42
43            /*
44             * 3
45             * 0 -> 3012
46             * 1
47             * 2
48             */
49            siirrot[0][0] = new Vector(0,0);
50            siirrot[0][1] = new Vector(1, -1);
51            siirrot[0][2] = new Vector(2, -2);
52            siirrot[0][3] = new Vector(-1, 1);
53
54            /*
55             * 3
56             * 0 <- 3012
57             * 1
58             * 2
59             */
60            siirrot[1][0] = new Vector(0, 0);
61            siirrot[1][1] = new Vector(-1, 1);
62            siirrot[1][2] = new Vector(-2, 2);
63            siirrot[1][3] = new Vector(1, -1);
64        }
65
66        public void Liikuta(Vector liike)
67        {
68            //Lisää halutun siirron jokaisen palikan sijaintiin
69            for (int i = 0; i < sijainnit.Length; i++)
70            {
71                sijainnit[i] += liike;
72            }
73           
74        }
75
76        public int Kaanna()
77        {
78            for (int i = 0; i < sijainnit.Length; i++)
79            {
80                sijainnit[i] += siirrot[seuraavaAsento][i];
81            }
82
83            seuraavaAsento++;
84            if (seuraavaAsento > siirrot.Length-1) seuraavaAsento = 0;
85
86            return seuraavaAsento;
87        }
88
89        public Vector[] TulevaKaanto()
90        {
91            Vector[] tulevaSijainti = new Vector[4];
92            for (int i = 0; i < tulevaSijainti.Length; i++)
93            {
94                tulevaSijainti[i] = sijainnit[i] + siirrot[seuraavaAsento][i];
95            }
96            return tulevaSijainti;
97        }
98
99        public Color Vari()
100        {
101            return Color.Red;
102        }
103
104        public Vector[] Sijainti()
105        {
106            return sijainnit;
107        }
108    }
109}
Note: See TracBrowser for help on using the repository browser.