algoritmo Jogo_da_velha; // Síntese // Objetivo: fazer um jogo da velha // Entrada : a posição do x ou da O // Saída : o ganhador ou velha
principal // Declarações inteiro linha, coluna; texto N,C; inteiro i,j,n,g; inteiro prox_j, linha_i,prox_i,coluna_i,prox_c; real resto; texto matriz[3][3];
// Instruções
// regras do jogo
regras();
// esvaziando o jogo da velha
para ( i de 0 ate 2 passo 1)faca
linha = i;
para( j de 0 ate 2 passo 1)faca
coluna = j;
matriz [linha][coluna] =(" ");
fimPara
fimPara
// jogador escolhe a posição que quer jogar sendo que o primeiro é X e o segundo O
g = 0;// contador de vitorias
para( i de 1 ate 9 passo 1) faca
se(g == 1) entao// se g for 1 algém já entrou nas condições de vencedor
interrompa;
senao
N = qual_jogador(i);
// jogador escolhe onde quer jogar
escreval(" Jogador ",N," digite a linha :");
leia(linha);
escreval(" Jogador ",N," digite a coluna :");
leia(coluna);
// não poder repetir a mesma posição se acontecer dar erro
se((comparaTexto (matriz[linha][coluna],"X")== 0)ou(comparaTexto (matriz[linha][coluna],"O")==0))entao// se a posição na matriz nessa posição ja tiver X ou O ela já foi
escreval(" ");
escreval(" Essa posição já foi");
escreval(" insira uma nova posição: ");//e fazer com que o jogador incirra novas variáveis
escreval("");
N = qual_jogador(i);
// jogador escolhe onde quer jogar
escreval(" Jogador ",N," digite a linha :");
leia(linha);
escreval(" Jogador ",N," digite a coluna :");
leia(coluna);
fimSe
// colocar a variavel em uma posição que está em branco ou seja não repete
matriz[linha][coluna] = (N);
// mostra o jogo na tela onde o jogador marcou
escreval(" ","|"," ","|");
escreval(" ", matriz[0][0]," ","|"," ", matriz[0][1]," ","|"," ",matriz[0][2]," ");
escreval("__________|__________|________");
escreval(" ","|"," ","|");
escreval(" ", matriz[1][0]," ","|"," ", matriz[1][1]," ","|"," ",matriz[1][2]," ");
escreval("__________|__________|________");
escreval(" ","|"," ","|");
escreval(" ", matriz[2][0]," ","|"," ", matriz[2][1]," ","|"," ", matriz[2][2]," ");
escreval(" ","|"," ","|");
//comparar linha Para ver se alguém ganhou
para ( i de 0 ate 2 passo 1)faca
linha = i;
prox_j = 0;
linha_i = 0;
para( j de 0 ate 2 passo 1)faca
coluna = j;
prox_j = prox_j +1;
se(prox_j <= 2)entao
se(comparaTexto (( matriz [linha][coluna]),(matriz [linha][prox_j]))== 0 )entao
se(comparaTexto((matriz[linha][coluna]),(" "))!= 0) entao// não pode ser vazio
linha_i = linha_i + 1;
se(linha_i == 2)entao
escreval("0 jogador ", (matriz [linha][prox_j])," ganhou na linha ",linha);
g = g + 1; // contador
fimSe
fimSe
fimSe
fimSe
fimPara
fimPara
// comparar colunas para ver se alguém ganhou
para ( i de 0 ate 2 passo 1)faca
coluna = i;
prox_j = 0;
coluna_i = 0;
para( j de 0 ate 2 passo 1)faca
linha = j;
prox_j = prox_j + 1;
se(prox_j <= 2)entao
se(comparaTexto (( matriz [linha][coluna]),(matriz [prox_j][coluna]))== 0 )entao
se(comparaTexto((matriz[linha][coluna]),(" "))!= 0) entao// não pode ser vazio
coluna_i = coluna_i + 1;
se(coluna_i == 2)entao
escreval("0 jogador ",(matriz [linha][coluna])," ganhou na coluna ",coluna);
g = g+1; // contador
fimSe
fimSe
fimSe
fimSe
fimPara
fimPara
// comparar diagonais descrescente
prox_j = 0;
prox_i = 0;
para ( i de 0 ate 2 passo 1)faca
coluna = i;
linha = i;
prox_j = prox_j + 1;
prox_i = prox_i + 1;
se(prox_j <= 2 e prox_i <= 2)entao
se(comparaTexto (( matriz [linha][coluna]),(matriz [prox_j][prox_i]))== 0 )entao
se(comparaTexto((matriz[linha][coluna]),(" "))!= 0) entao//não pode ser vazio
coluna_i = coluna_i + 1;
se(coluna_i == 2)entao
escreval("0 jogador ",(matriz [linha][coluna])," ganhou na diagonal");
g = g+1;//contador
fimSe
fimSe
fimSe
fimSe
fimPara
// comparar diagonais crescente
prox_j = 3;
prox_i = 0;
prox_c = 2;
coluna_i =0;
prox_i = 0;
para( j de 0 ate 2 passo 1)faca
coluna = j;
prox_i = prox_i + 1;
prox_j = prox_j - 1;
prox_c = prox_c - 1;
se(((prox_j >= 0)e (prox_i <=2)e (prox_c>=0)) )entao
se(comparaTexto (( matriz [prox_j][coluna]),(matriz [prox_c][prox_i]))== 0 )entao
se(comparaTexto((matriz [prox_j][coluna]),(" "))!= 0) entao//não pode ser vazio
coluna_i = coluna_i + 1;
se(coluna_i == 2)entao
escreval("0 jogador ",(matriz [prox_c][prox_i])," ganhou na diagonal");
g=g+1;//contador
fimSe
fimSe
fimSe
fimSe
fimPara
fimSe
fimPara
// caso tenha usado todas as casas e nínguem entrou em uma condição de ganhar
velha(g);
fimPrincipal //regras do jogo procedimento regras() texto iniciar; escreval("REGRAS: "); escreval(""); escreval("O objetivo do jogo é fazer uma sequência de três símbolos iguais, seja em linha vertical, horizontal ou diagonal, enquanto tenta impedir que seu adversário faça o mesmo."); escreval(" "); escreval("LINHAS → "); escreval("COLUNAS ↓ "); escreval(" ","|"," ","|"); escreval(" 0/0 ","|"," 0/1 ","|"," 0/2 "); escreval("||"); escreval(" ","|"," ","|"); escreval(" 1/0 ","|"," 1/1 ","|"," 1/2 "); escreval("||"); escreval(" ","|"," ","|"); escreval(" 2/0 ","|"," 2/1 ","|"," 2/2 "); escreval(" ","|"," ","|"); escreval(" "); escreval("INICIAR: "); escreval(" Clique no enter para começar"); leia(iniciar); limpaTela(); fimProcedimento
//qual simbolo de N funcao texto qual_jogador(inteiro i) inteiro resto; texto N; resto = i%2; // se não tiver resto é o jogador 2 se tiver o 1 se( resto == 0) entao N = "O"; senao N = "X"; fimSe retorna N; fimFuncao
procedimento velha (inteiro g) se(g == 0)entao escreval(" Deu velha "); fimSe fimProcedimento