public Movement MakeAMove(Player player, byte x, byte y) { // verifica se o jogo ja acabou if (IsFinish) { throw new InvalidOperationException("Partida finalizada"); } // verifica se é a vez do jogador if (PlayerTurn != player) { throw new InvalidOperationException($"Não é o turno do jogador"); } // verifica se posição esta disponivei if (Movements.Any(m => m.Position.X == x && m.Position.Y == y)) { throw new InvalidOperationException("Posição já tomada anteriormente"); } // Adiciona o movimento ToggleTurn(); var move = new Movement(player, new Position(x, y)); Movements.Add(move); // Tentamos pegar o vencedor Winner = GetWinner(); return(move); }
public bool IsValid(Movement movement) { if (movement.X > Size || movement.Y > Size) { return(false); } return(!Movements.Any(m => m.X == movement.X && m.Y == movement.Y)); }
public bool HasContent() { return(HasVanillaContent() || Movements.Any() || Lines.Any()); }