public Block(Tetris tetris) { this.tetris = tetris; hitbox = tetris.collisions[new System.Random().Next(0, tetris.collisions.Length)]; cordinate = new Cordinate(new System.Random().Next(0, tetris.Width - hitbox.Width + 1), -hitbox.Height + 1); }
public void Rotate() { bool flag = true; BlockHitbox newHitbox = new BlockHitbox(hitbox.Width, hitbox.Height); for (int x = 0; x < hitbox.Width; x++) { for (int y = 0; y < hitbox.Height; y++) { newHitbox.hitbox[x, y] = hitbox.hitbox[hitbox.Height - 1 - y, x]; } } for (int newHitboxY = 0; newHitboxY < newHitbox.Height; newHitboxY++) { for (int newHitboxX = 0; newHitboxX < newHitbox.Width; newHitboxX++) { for (int n = 0; n < tetris.blocks.Length; n++) { if (this != tetris.blocks[n]) { for (int hitboxY = 0; hitboxY < tetris.blocks[n].hitbox.Height; hitboxY++) { for (int hitboxX = 0; hitboxX < tetris.blocks[n].hitbox.Width; hitboxX++) { if (tetris.blocks[n].cordinate.Y + hitboxY == cordinate.Y + newHitboxY && tetris.blocks[n].cordinate.X + hitboxX == cordinate.X + newHitboxX) { flag = false; } } } } } } } if (cordinate.X + newHitbox.Width > tetris.Width) { flag = false; } if (cordinate.Y + newHitbox.Height > tetris.Height) { flag = false; } if (flag) { hitbox = newHitbox; } }