Jogo da Velha com matrizes

1. Jogo da Velha com matrizes

Stefano
stefanomano

(usa Outra)

Enviado em 28/01/2013 - 18:34h

Olá pessoal,
Tenho um problema urgentíssimo, tenho um algoritmo de Jogo da Velha em C no qual eu tenho que usar matriz para representar o tabuleiro, nada demais, mas eu teria que utilizar ponteiros com esta matriz, tentei proceder como de costume, mas não funciona, por favor precisa de ajuda!


  


2. O algoritmo

Stefano
stefanomano

(usa Outra)

Enviado em 28/01/2013 - 18:35h


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void jogo();
void rank();
void iniciarJogo();
void validarJogadas();
void jogar();
int main() {
int o;
printf("Insira a opção desejada:\n");
scanf("%d", &o);
switch(o){
case 1:
jogo();
break;
case 2:
rank();
case 3:
break;
}while(o =! 3);

}
void jogo(){
iniciarJogo();
jogar();
validarJogadas();

}

//tabuleiro representando o jogo
;


bool validarJogadas(char marca, char *tabuleiroo[3][3]) {
// confere as linhas
if (*tabuleiroo[0][0] == marca && *tabuleiroo[0][1] == marca && *tabuleiroo[0][2] == marca)
return true;
else if (*tabuleiroo[1][0] == marca && *tabuleiroo[1][1] == marca && *tabuleiroo[1][2] == marca)
return true;
else if (*tabuleiroo[2][0] == marca && *tabuleiroo[2][1] == marca && *tabuleiroo[2][2] == marca)
return true;
//confere as colunas
else if (*tabuleiroo[0][0] == marca && *tabuleiroo[1][0] == marca && *tabuleiroo[2][0] == marca)
return true;
else if (*tabuleiroo[0][1] == marca && *tabuleiroo[1][1] == marca && *tabuleiroo[2][1] == marca)
return true;
else if (*tabuleiroo[0][2] == marca && *tabuleiroo[1][2] == marca && *tabuleiroo[2][2] == marca)
return true;
// confere jogadas nas diagonais
else if (*tabuleiroo[0][0] == marca && *tabuleiroo[1][1] == marca && *tabuleiroo[2][2] == marca)
return true;
else if (*tabuleiroo[0][2] == marca && *tabuleiroo[1][1] == marca && *tabuleiroo[2][0] == marca)
return true;

return false;
}


void iniciarJogo(bool &ganhador, char tabuleiro[3][3]) {
char nome1[20],nome2[20];
int jogadas = 0,p=0;
ganhador = false;
for (int i = 0; i <= 2; i++) {
for (int j = 0; j <= 2; j++) {
tabuleiro[i][j] = ' ';
}
}
system("color 02");
printf("\n============== JOGO DA VELHA ==============\n");
printf("\n Andreza Maia - Paula Cruz - Stefano Mano \n\n\n\n");
if(p==0){
printf ("Informe o nome do jogador X :");
fflush(stdin);
gets(nome1);
printf ("Informe o nome do jogador O :");
fflush(stdin);
gets(nome2);
printf ("\n");
}
p++;
}
void jogar(char marca,char tabuleiro[3][3]){
int vitoriax, vitoriao;
int jogada = 1,linha,coluna;
bool ganhadori;

//Para inicializar os campos do tabuleiro com caracter vazio
iniciarJogo();
do{
do {
if(jogada%2 == 0){
marca = 'X';
printf("\nJogador X, faca a sua jogada:\n");
}else{
marca = 'O';
printf("\nJogador O, faca a sua jogada:\n");
}
jogada = jogada+1;
printf("Digite a linha:\n");
fflush(stdin);
scanf("%d", &linha);

printf("Digite a coluna:\n");
fflush(stdin);
scanf("%d", &coluna);

//verifica se o indice não ultrapassa o tamanho da matriz
if (linha > 2 || coluna > 2) {
printf("Indice da linha e coluna nao pode ser maior que dois!\n");
jogada = jogada+1;
//comando continue, não executa nada que estiver abaixo dele
//retornando ao inicio do loop
continue;
}

// verifica se o campo ja esta preenchido
if (tabuleiro[linha][coluna] != '') {
printf("\nCampo ja jogado!\n");
continue;
}

// marcando a opção no tabuleiro, segundo a escolha do jogador
tabuleiro[linha][coluna] = marca;
jogada++;

//chama a funçao para validar se houve ganhador
if (validarJogadas(marca,tabuleiro[3][3])) {
printf("\nJogador %s ganhou!!!\n\n", &marca);
if(marca == 'x'){
vitoriax = vitoriax+1;
}else{
vitoriao = vitoriao+1;
}
printf("\n");
printf ("\n");
printf ("******** * ******* * ******* ******* ***** ** ********* **\n");
printf ("** ** *** ** ** *** ** ** ** ** ** ** ** **\n");
printf ("** ** * * ** ** * * ** * ** ** ** ** ** **\n");
printf ("******** * * ******* * * ******* ****** ** ** ** ********* **\n");
printf ("** ******* **** ******* ** * ** ** ** ** ** **\n");
printf ("** ** ** ** ** ** ** ** ** ** ** **** ** \n");
printf ("** ** ** ** ** ** ** ******** ******* ** **** ********* **\n");
printf("Para encerrar digite s (sim) ou n (nao)\n");
scanf("%s", &sair);
system ("cls");
if (sair == 's')
break;
else
iniciarJogo(ganhadori);
ganhadori = true;
}


//Quando nenhum jogador ganhar
if (jogadas == 9 && !ganhador) {
printf("Deu velha!!!\n");
printf("Para encerrar digite s (sim) ou n (nao)\n");
scanf("%s", &sair);
system ("cls");
break;
}
} while (jogadas < 10);
} while (sair == 's') ;
system("cls");
printf("\n============== JOGO DA VELHA ==============\n");
printf("\n Andreza Maia - Paula Cruz - Stefano Mano \n\n\n\n");
printf("%s: %s:", nome1 , nome2);

printf("\nPontos1 = %d Pontos2 = %d", vitoriax,vitoriao);
printf("\n\n\n");
printf(" 0 1 2\n");
printf("0 %c|%c|%c\n", tabuleiro[0][0], tabuleiro[0][1], tabuleiro[0][2]);
printf(" -------\n");
printf("1 %c|%c|%c\n", tabuleiro[1][0], tabuleiro[1][1], tabuleiro[1][2]);
printf(" -------\n");
printf("2 %c|%c|%c\n", tabuleiro[2][0], tabuleiro[2][1], tabuleiro[2][2]);
}





//Este é o algoritmo, por favor me ajudem.


3. Re: Jogo da Velha com matrizes

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 28/01/2013 - 18:36h

http://vivaolinux.com.br/script/Jogo-da-velha-basico?src=1


espero que ajude


4. Re: Jogo da Velha com matrizes

Stefano
stefanomano

(usa Outra)

Enviado em 28/01/2013 - 18:38h

Na verdade eu não posso utilizar nenhuma variável global.


5. Re: Jogo da Velha com matrizes

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/01/2013 - 00:44h

http://www.java2s.com/Code/C/Data-Type/AsimpleTicTacToegame.htm

- coloque a variável de tabuleiro dentro de main;
- reescreva as funções para aceitar a variável de matriz como parâmetro;

obs: lembrando que vetores, matrizes etc. não são passados como uma cópia.


6. Sujestão

Euclides José Carneiro da Cunha
euclides_jc

(usa Debian)

Enviado em 29/01/2013 - 01:10h

Saudações, não sou expert em C, nem analisei seu código a fundo, mas vi uma coisa que talvez te ajude, dependendo da IDE que estiver usando terá problemas colocando a função Main no inicio do programa, mesmo declaradas as funções Void`s, eles não serão encontradas. Tente isso!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts