public IEnumerable <Estado> JogadasPossiveisDoOponente(Estado estadoAtual)
        {
            EstadoTicTacToe atual = (estadoAtual as EstadoTicTacToe);

            List <EstadoTicTacToe> proximosEstados = new List <EstadoTicTacToe>();

            int idDoOponente;

            if (id == EstadoTicTacToe.X)
            {
                idDoOponente = EstadoTicTacToe.O;
            }
            else
            {
                idDoOponente = EstadoTicTacToe.X;
            }

            for (int linha = 0; linha < EstadoTicTacToe.TAMANHO; linha++)
            {
                for (int coluna = 0; coluna < EstadoTicTacToe.TAMANHO; coluna++)
                {
                    if (atual.IsCelulaVazia(linha, coluna) == true)
                    {
                        proximosEstados.Add(atual.MarcarCelula(linha, coluna, idDoOponente));
                    }
                }
            }

            return(proximosEstados);
        }
示例#2
0
        public override Estado EfetuarJogada(Estado estadoAtual)
        {
            // o jogador aleatório não utiliza o minimax...
            // apenas marca uma célula vazia aleatória

            EstadoTicTacToe atual = (estadoAtual as EstadoTicTacToe);

            for (; ;)
            {
                int linha  = random.Next(EstadoTicTacToe.TAMANHO);
                int coluna = random.Next(EstadoTicTacToe.TAMANHO);

                if (atual.IsCelulaVazia(linha, coluna) == true)
                {
                    return(atual.MarcarCelula(linha, coluna, Id));
                }
            }
        }
        public IEnumerable <Estado> JogadasPossiveis(Estado estadoAtual)
        {
            EstadoTicTacToe atual = (estadoAtual as EstadoTicTacToe);

            List <EstadoTicTacToe> proximosEstados = new List <EstadoTicTacToe>();

            for (int linha = 0; linha < EstadoTicTacToe.TAMANHO; linha++)
            {
                for (int coluna = 0; coluna < EstadoTicTacToe.TAMANHO; coluna++)
                {
                    if (atual.IsCelulaVazia(linha, coluna) == true)
                    {
                        proximosEstados.Add(atual.MarcarCelula(linha, coluna, id));
                    }
                }
            }

            return(proximosEstados);
        }
        public override Estado EfetuarJogada(Estado estadoAtual)
        {
            // o jogador fácil não utiliza o minimax...
            // apenas marca a primeira célula vazia

            EstadoTicTacToe atual = (estadoAtual as EstadoTicTacToe);

            for (int linha = 0; linha < EstadoTicTacToe.TAMANHO; linha++)
            {
                for (int coluna = 0; coluna < EstadoTicTacToe.TAMANHO; coluna++)
                {
                    if (atual.IsCelulaVazia(linha, coluna) == true)
                    {
                        return(atual.MarcarCelula(linha, coluna, Id));
                    }
                }
            }

            return(null);
        }
示例#5
0
        public override bool Equals(object obj)
        {
            if (obj == this)
            {
                return(true);
            }
            EstadoTicTacToe e = (obj as EstadoTicTacToe);

            if (e == null || e.jogadorDaVez != jogadorDaVez)
            {
                return(false);
            }
            for (int linha = 0; linha < TAMANHO; linha++)
            {
                for (int coluna = 0; coluna < TAMANHO; coluna++)
                {
                    if (e.tabuleiro[linha, coluna] != tabuleiro[linha, coluna])
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }