cwars
(usa Ubuntu)
Enviado em 14/11/2007 - 17:56h
Observem o código abaixo:
# include <stdio.h>
# include <stdlib.h>
char jogo_da_velha[3][3];
char tipo_de_jogada;
void Atribua_Velha (void) {
jogo_da_velha[0][0] = ' ';
jogo_da_velha[0][1] = ' ';
jogo_da_velha[0][2] = ' ';
jogo_da_velha[1][0] = ' ';
jogo_da_velha[1][1] = ' ';
jogo_da_velha[1][2] = ' ';
jogo_da_velha[2][0] = ' ';
jogo_da_velha[2][1] = ' ';
jogo_da_velha[2][2] = ' ';
}
int Checar_Vitoria (void) {
int i;
if ((jogo_da_velha[0][0] == tipo_de_jogada) && (jogo_da_velha[1][1] == tipo_de_jogada) &&
(jogo_da_velha[2][2] == tipo_de_jogada)) return 0;
if ((jogo_da_velha[0][2] == tipo_de_jogada) && (jogo_da_velha[1][1] == tipo_de_jogada) &&
(jogo_da_velha[2][0] == tipo_de_jogada)) return 0;
for (i = 0; i < 3; i++) {
if ((jogo_da_velha[i][0] == tipo_de_jogada) && (jogo_da_velha[i][1] == tipo_de_jogada) &&
(jogo_da_velha[i][2] == tipo_de_jogada)) return 0;
if ((jogo_da_velha[0][i] == tipo_de_jogada) && (jogo_da_velha[1][i] == tipo_de_jogada) &&
(jogo_da_velha[2][i] == tipo_de_jogada)) return 0;
}
return 1;
}
void Desenhe (void) {
printf("\n %c | %c | %c ", jogo_da_velha[0][0], jogo_da_velha[0][1], jogo_da_velha[0][2]);
printf("\n %c | %c | %c ", jogo_da_velha[1][0], jogo_da_velha[1][1], jogo_da_velha[1][2]);
printf("\n %c | %c | %c \n", jogo_da_velha[2][0], jogo_da_velha[2][1], jogo_da_velha[2][2]);
}
int verifica (coordenadaX, coordenadaY) {
if (jogo_da_velha[coordenadaX][coordenadaY] != ' ' ) {
printf("\n\nErrado esse lugar já está ocupado\n\n");
return 1;
}
jogo_da_velha[coordenadaX][coordenadaY] = tipo_de_jogada;
return 0;
}
int verifica_Jogada (coordenada) {
if ((coordenada >= 0) && (coordenada < 3)) return 0;
printf ("\n\nErrado só pode de 1 a 9\n\n");
return 1;
}
int Computador_jogada() {
//int coordenada_x;
//int coordenada_y;
srand(time(NULL));
//for (coordenada_x = 0; coordenada_x < 3; coordenada_x++)
// for (coordenada_y = 0; coordenada_y < 3; coordenada_y ++)
// if (jogo_da_velha[coordenada_x][coordenada_y] == tipo_de_jogada) {
//
// }
jogar:
if (verifica(rand() % 3, rand() % 3) == 1) goto jogar;
Desenhe();
return 0;
}
int jogada (void) {
int coordenadaX;
int coordenadaY;
printf("\nCoordenada X: ");
scanf(" %i", &coordenadaX);
coordenadaX -= 1;
if (verifica_Jogada(coordenadaX) != 0) return 1;
printf("Coordenada Y: ");
scanf(" %i", &coordenadaY);
coordenadaY -= 1;
if (verifica_Jogada(coordenadaY) != 0) return 1;
if (verifica(coordenadaX, coordenadaY) == 1) return 1;
Desenhe();
return 0;
}
int main (int argc, char **argv) {
int interacao;
int tipo_de_jogador;
Atribua_Velha();
novamente:
printf ("\n\n\nContra quem deseja jogar:\nContra o Computado (digite 1)\nContra outro Jogador (digite 2)\n\n");
printf ("Digite 1 ou 2: "); if ((interacao%2) != 0) {
if (Checar_Vitoria() == 0) {
printf("\n\nJogador 2 Venceu\n\n");
break;
}
printf("\n\nJogador 1 faça sua jogada");
tipo_de_jogada = 'X';
if (jogada() == 1) goto voltar;
} else {
if (Checar_Vitoria() == 0) {
printf("\n\nJogador 1 Venceu\n\n");
return 0;
}
printf("\n\nJogador 2 faça sua jogada");
tipo_de_jogada = 'O';
if (Computador_jogada() == 1) goto voltar;
}
scanf (" %i", &tipo_de_jogador);
if ((tipo_de_jogador > 2) || (tipo_de_jogador < 1)) {
printf ("\n\nValor errado\n\n");
goto novamente;
}
for (interacao = 1; interacao <= 9; interacao++) {
voltar:
switch (tipo_de_jogador) {
case 1:
if ((interacao%2) != 0) {
if (Checar_Vitoria() == 0) {
printf("\n\nJogador 2 Venceu\n\n");
return 0;
}
printf("\n\nJogador 1 faça sua jogada");
tipo_de_jogada = 'X';
if (jogada() == 1) goto voltar;
} else {
if (Checar_Vitoria() == 0) {
printf("\n\nJogador 1 Venceu\n\n");
return 0;
}
printf("\n\nJogador 2 faça sua jogada");
tipo_de_jogada = 'O';
if (Computador_jogada() == 1) goto voltar;
}
break;
case 2:
if ((interacao%2) != 0) {
if (Checar_Vitoria() == 0) {
printf("\n\nJogador 2 Venceu\n\n");
return 0;
}
printf("\n\nJogador 1 faça sua jogada");
tipo_de_jogada = 'X';
if (jogada() == 1) goto voltar;
} else {
if (Checar_Vitoria() == 0) {
printf("\n\nJogador 1 Venceu\n\n");
return 0;
}
printf("\n\nJogador 2 faça sua jogada");
tipo_de_jogada = 'O';
if (jogada() == 1) goto voltar;
}
}
}
if (interacao > 9) printf ("\n\n\nFoi um empate\n\n\n");
return 0;
}
Isso ai em cima é o código de um jogo da velha se repararem na função int verifica (coordenadaX, coordenadaY) eu não preciso declarar o tipo de parâmetro se é int, char ou qualquer coisa do tipo, de certo o certo era para está errado e reclamar, contudo isso compila e roda que é uma beleza sem reclamar ou dar qualquer erro bizarro, contudo se eu declarar o tipo ai sim reclama e diz que tá errado. Agora isso é normal com o GCC ou é um bug do mesmo?