Changeset 1479 for 2010/23/hniemi/JyTris/JyTris
- Timestamp:
- 2010-07-30 16:50:55 (12 years ago)
- Location:
- 2010/23/hniemi/JyTris/JyTris
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
2010/23/hniemi/JyTris/JyTris/ITetrispalikka.cs
r1478 r1479 9 9 namespace JyTris 10 10 { 11 /// <summary> 12 /// Käyttöliittymä Tetrispalikoille 13 /// 14 /// Kaikkien tetrispalikoiden on osattava seuraavat asiat. 15 /// </summary> 11 16 interface ITetrispalikka 12 17 { 18 /// <summary> 19 /// Liikuttaa kaikkia palikkoja annetun vektorin verran 20 /// </summary> 21 /// <param name="liike">X ja Y oltava kokonaislukuja</param> 13 22 void Liikuta(Vector liike); 23 /// <summary> 24 /// Antaa palikan käyttämän värin 25 /// </summary> 26 /// <returns>Palikan väri</returns> 27 Color Vari(); 28 /// <summary> 29 /// Lista palikoiden sijainneista 30 /// 31 /// Listan vektorien X ja Y arvot ovat kokonaislukuja 32 /// </summary> 33 /// <returns>Lista palikkojen sijainneista</returns> 34 Vector[] Sijainti(); 14 35 15 Color Vari(); 16 Vector[] Sijainti(); 36 /// <summary> 37 /// Lista palikan sijainnista, jos sitä käännetään 38 /// 39 /// Listan vektorien X ja Y arvot ovat kokonaislukuja 40 /// </summary> 41 /// <returns>Lista palikoiden sijainneista käännettynä</returns> 42 Vector[] TulevaKaanto(); 43 44 /// <summary> 45 /// Kääntää palikkaa 46 /// </summary> 47 /// <returns>Palikan seuraavan asennon indeksi</returns> 48 int Kaanna(); 17 49 18 50 } -
2010/23/hniemi/JyTris/JyTris/Peli.cs
r1478 r1479 1 1 using System; 2 2 using Jypeli; 3 using Jypeli. ScreenObjects;3 using Jypeli.Widgets; 4 4 using Jypeli.Assets; 5 5 6 6 namespace JyTris 7 7 { 8 9 /// <summary> 10 /// JyTris 11 /// 12 /// Peli on tetrisklooni, joka on tarkoituksena toteuttaa JyPelillä 13 /// mahdollisimman yksinkertaisesti. 14 /// 15 /// Seuraavana tulossa: 16 /// - Lisääntyvät pisteet 17 /// - Loput palikat 18 /// </summary> 8 19 public class Peli : Game 9 20 { … … 18 29 double vaikeusaste = 0.2; 19 30 31 IntMeter pisteet = new IntMeter(0); 32 Label pistenaytto; 33 20 34 protected override void Begin() 21 35 { 22 36 LuoPelikentta(); 37 //LuoHud(); 23 38 AsetaNappaimet(); 24 39 KaynnistaPeli(); 25 //pelikentta[9][5].Color = Color.Turquoise; 26 } 27 40 } 41 42 /// <summary> 43 /// Käynnistää pelin 44 /// 45 /// Luo ensimmäisen palikan ja tekee ajastimen. 46 /// </summary> 28 47 void KaynnistaPeli() 29 48 { … … 36 55 } 37 56 57 /// <summary> 58 /// Tuhoaa täydet rivit kentältä 59 /// </summary> 38 60 void TuhoaTaydet() 39 61 { … … 55 77 } 56 78 79 /// <summary> 80 /// Tuhoaa kaikki palikat kentältä. 81 /// </summary> 57 82 void TuhoaKaikki() 58 83 { … … 67 92 } 68 93 94 /// <summary> 95 /// Tuhoaa indeksiä vastaavan rivin ja tiputtaa sen päällä olevia rivejä. 96 /// </summary> 97 /// <param name="rivinIndeksi">Tiputettavan rivin indeksi</param> 69 98 void TuhoaRivi(int rivinIndeksi) 70 99 { … … 85 114 } 86 115 116 void LuoHud() 117 { 118 pistenaytto = new Label(80, 20); 119 pistenaytto.BindTo(pisteet); 120 Add(pistenaytto); 121 122 //pistenaytto.Position.X = Screen.RightSafe - 40; 123 } 124 125 /// <summary> 126 /// Luo pelikentän ylhäällä määrätyistä vakioista 127 /// </summary> 87 128 void LuoPelikentta() 88 129 { 89 130 //Tässä säädetään pelialueen koko, jotta seinät tulevat oikeille kohdille 90 Level.Width = leveys * palikkojenSivu + leveys;91 Level.Height = korkeus * palikkojenSivu + korkeus;131 Level.Width = leveys * palikkojenSivu;// + leveys; 132 Level.Height = korkeus * palikkojenSivu;// + korkeus; 92 133 Level.CreateBorders(true); 93 134 … … 109 150 pelikentta[i][j] = new GameObject(palikkojenSivu, palikkojenSivu, Shapes.Rectangle); 110 151 pelikentta[i][j].Color = Color.TransparentWhite; 111 pelikentta[i][j].X = Level.Left + (palikkojenSivu / 2) + j * (palikkojenSivu + 1);112 pelikentta[i][j].Y = Level.Top - (palikkojenSivu / 2) - i * (palikkojenSivu + 1);152 pelikentta[i][j].X = Level.Left + (palikkojenSivu / 2) + j * (palikkojenSivu); 153 pelikentta[i][j].Y = Level.Top - (palikkojenSivu / 2) - i * (palikkojenSivu); 113 154 Add(pelikentta[i][j]); 114 155 } … … 116 157 } 117 158 159 /// <summary> 160 /// Asettaa näppäimet. 161 /// </summary> 118 162 void AsetaNappaimet() 119 163 { … … 124 168 Keyboard.Listen(Key.Left, ButtonState.Pressed, Liikuta, "Liikuttaa palikkaa vasemmalle", vasemmalle); 125 169 Keyboard.Listen(Key.Right, ButtonState.Pressed, Liikuta, "Liikuttaa palikkaa oikealle", oikealle); 126 Keyboard.Listen(Key.Down, ButtonState.Pressed, Laske, "Liikuttaa palikkaa alas", tiputusajastin); 170 Keyboard.Listen(Key.Down, ButtonState.Down, Laske, "Liikuttaa palikkaa alas", tiputusajastin); 171 Keyboard.Listen(Key.Up, ButtonState.Pressed, Kaanna, "Kääntää palikkaa"); 127 172 Keyboard.Listen(Key.Space, ButtonState.Pressed, Tiputa, "Tiputtaa palikan"); 128 173 } 129 174 175 /// <summary> 176 /// Liikuttaa palikkaa halutun verran. 177 /// </summary> 178 /// <param name="suunta">X ja Y oltava kokonaislukuja.</param> 130 179 void Liikuta(Vector suunta) 131 180 { … … 140 189 } 141 190 191 /// <summary> 192 /// Kääntää palikkaa 193 /// </summary> 194 void Kaanna() 195 { 196 PaivitaPalikka(aktiivinenPalikka, Color.TransparentWhite); 197 198 //Tämä kohta tarkistaa, voiko palikkaa kääntää 199 //Jos ei voi, niin poistutaan. 200 Vector[] tulevaSijainti = aktiivinenPalikka.TulevaKaanto(); 201 for (int i = 0; i < tulevaSijainti.Length; i++) 202 { 203 if (!OnkoTyhja(tulevaSijainti[i])) 204 { 205 PaivitaPalikka(aktiivinenPalikka, aktiivinenPalikka.Vari()); 206 return; 207 } 208 } 209 210 aktiivinenPalikka.Kaanna(); 211 PaivitaPalikka(aktiivinenPalikka, aktiivinenPalikka.Vari()); 212 } 213 214 /// <summary> 215 /// Laskee palikkaa yhdellä. Jos palikkaa ei voi laskea, 216 /// lähettää uuden palikan. 217 /// </summary> 218 /// <param name="timer">Ei käytössä</param> 142 219 void Laske(Timer timer) 143 220 { … … 147 224 { 148 225 PaivitaPalikka(aktiivinenPalikka, aktiivinenPalikka.Vari()); 226 TuhoaTaydet(); 149 227 LuoPalikka(); 150 228 return; … … 152 230 aktiivinenPalikka.Liikuta(new Vector(0, 1)); 153 231 PaivitaPalikka(aktiivinenPalikka, aktiivinenPalikka.Vari()); 154 } 155 232 233 } 234 235 /// <summary> 236 /// Tiputtaa palikkan kokonaan alas. 237 /// </summary> 156 238 void Tiputa() 157 239 { 158 240 ITetrispalikka palikka = aktiivinenPalikka; 241 while (aktiivinenPalikka == palikka) Laske(tiputusajastin); 159 242 } 160 243 … … 180 263 } 181 264 265 /// <summary> 266 /// Tarkistaa, onko annetut paikka tyhjä 267 /// 268 /// Paikka on tyhjä, jos sen väri on Color.TransparentWhite 269 /// </summary> 270 /// <param name="paikka">X ja Y oltava kokonaislukuja</param> 271 /// <returns>true, jos paikka on tyhjä</returns> 182 272 bool OnkoTyhja(Vector paikka) 183 273 { … … 189 279 } 190 280 281 /// <summary> 282 /// Värittää paikkaa vastaavat laatikot annetulla värillä 283 /// </summary> 284 /// <param name="palikka">Tämän sijainti väritetään</param> 285 /// <param name="vari">Väri, jolla väritetään</param> 191 286 void PaivitaPalikka(ITetrispalikka palikka, Color vari) 192 287 { … … 199 294 } 200 295 296 /// <summary> 297 /// Luo palikan keskelle ylälaitaa 298 /// 299 /// Tulee antamaan satunnaisen palikan 300 /// </summary> 201 301 void LuoPalikka() 202 302 { -
2010/23/hniemi/JyTris/JyTris/Pitka.cs
r1478 r1479 14 14 Vector[][] siirrot; 15 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> 16 25 public Pitka(int keskikohta) 17 26 { 27 //Tämä silmukkaa tekee uudet palikat ja laittaa ne järjestykseen 18 28 sijainnit = new Vector[4]; 19 29 for (int i = 0; i < sijainnit.Length; i++) … … 26 36 sijainnit[2].Y = 3; 27 37 38 //Tämä luo siirrot, jotta palikkaa voidaan kääntää 28 39 siirrot = new Vector[2][]; 29 40 siirrot[0] = new Vector[4]; … … 63 74 } 64 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 65 99 public Color Vari() 66 100 {
Note: See TracChangeset
for help on using the changeset viewer.