Você está visualizando atualmente Jogo da velha com a linguagem de programação C – Parte II

Jogo da velha com a linguagem de programação C – Parte II

Olá programadores, programadoras e curiosos de plantão. Vamos dar continuidade ao desenvolvimento do nosso jogo da velha com a linguagem de programação C?

Se você perdeu a parte 1 sugiro começar por ela primeiro. Você pode acessar a parte 1 aqui.

Na computação existe uma técnica muito utilizada para “quebrar” grandes problemas em problemas menores e, consequentemente, mais fáceis de resolver, chamada “dividir pra conquistar” (provavelmente esta técnica é inspirada nas ações de generais em batalhas na antiguidade).

Basicamente o que faremos hoje será “quebrar” o grande problema de resolver o jogo da velha no computador em problemas menores e mais fáceis de resolver.

Sem mais delongas, vamos então ao que interessa.

Para resolver o grande problema jogo da velha, em algum momento nós precisaremos percorrer o nosso tabuleiro (nossa matriz) e verificar o caractere presente em cada posição, só assim saberemos se algum jogador ganhou.

Dito isso, perceba que temos aí um pequeno problema: determinar se o caractere de uma posição x y da matriz é um “x” ou um “0”.

Para resolver este pequeno problema, faremos uma função que irá receber um caractere e retornar 1 caso o caractere seja um “x” ou um “0”, e 0 caso contrário, como apresentado no trecho de código a seguir.

int eValido(char letra) {
    if(letra == 'x' || letra == '0')
        return 1;
    else
        return 0;
}

Outro pequeno problema que precisaremos resolver é a validação das coordenadas digitadas pelos jogadores. Como nossa matriz possui 3 linhas, existem apenas as linhas de índice 0, 1 e 2. Qualquer outro valor digitado não é válido e deve ser pedido novamente. O mesmo vale para as colunas.

Para resolver este problema faremos outra função que receberá como parâmetro os dois números digitados pelo jogador. Esta retornará 1 caso sejam válidos (posição existe na matriz) e 0 caso contrário (posição fora dos limites da matriz), como apresentado no trecho de código abaixo.

int coordenadaEhValida(int x, int y) {
    if(x >= 0 && x < 3) {
        if(y >= 0 && y < 3)
            return 1;
    }
    return 0;
}

Por fim, quando o jogador digitar a coordenada onde ele deseja jogar, além de verificar se a coordenada é válida, como feito acima, precisamos também verificar se a posição está vazia, afinal um jogador não pode jogar em posições já preenchidas com x ou 0.

Para resolver este problema, faremos uma terceira função que receberá a coordenada jogada pelo usuário, que já deve ter sido validada com a função anterior, e retornaremos 1 caso a posição esteja vazia (o jogador pode jogar na posição escolhida) e 0 caso contrário (alguém já jogou naquela posição. O jogador deve escolher outra posição), como apresentado no trecho de código abaixo.

int posicaoVazia(int x, int y) {
    if(jogo[x][y] != 'x' && jogo[x][y] != '0')
        return 1;
    else
        return 0;
}

Se ficou alguma dúvida, compartilhe nos comentários que faremos o possível para esclarecer. Um grande abraço, bons estudos e até o próximo.

Deixe um comentário

um + 7 =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.