Olá pessoal, preciso de uma ajuda, uma luz com uma atividade da facul
Preciso fazer um jogo da velha em C sem usar matriz, só com laços de repetição.
Quero ajuda pra verificar se a casa já foi escolhida, e pedir para ele repedir a jogada caso tenha sido escolhida. (pensei em usar a tabela ASCII pra isso, mas não tentei)
E outra é quando dar "velha", o empate.
Esse é o código:
#include <stdio.h>
#include <stdio_ext.h>
#include <stdlib.h>
int main() {
int jogador, final, velha=1;
char a, b, c, d, e, f, g, h, i;
char jogar, jogada;
jogar = 's';
while(jogar == 's' || jogar == 'S') {
jogador = 1;
final = 0;
a = ' ';
b = ' ';
c = ' ';
d = ' ';
e = ' ';
f = ' ';
g = ' ';
h = ' ';
i = ' ';
do {
system("clear");
printf ("======================================");
printf ("\n============ JOGO DA VELHA ===========");
printf ("\n======================================");
printf ("\n=== Tabuleiro ====== Jogo da Velha ===\n");
printf ("\n a | b | c %c | %c | %c", a, b, c);
printf ("\n __|___|__ __|___|__");
printf ("\n d | e | f %c | %c | %c", d, e, f);
printf ("\n __|___|__ __|___|__");
printf ("\n g | h | i %c | %c | %c ", g, h, i);
printf ("\n | | | | ");
printf ("\n\n======================================");
printf ("\n Jogador 01-> [O] Jogador 02-> [X]");
printf ("\n======================================");
if(jogador == 1) {
printf("\n\nJOGADOR 01 - Escolha uma jogada: ");
__fpurge(stdin);
scanf("%c", &jogada);
// Verifica Jogada - Jogador 01
switch(jogada) {
case 'a':
a = 'O';
break;
case 'b':
b = 'O';
break;
case 'c':
c = 'O';
break;
case 'd':
d = 'O';
break;
case 'e':
e = 'O';
break;
case 'f':
f = 'O';
break;
case 'g':
g = 'O';
break;
case 'h':
h = 'O';
break;
case 'i':
i = 'O';
break;
}
jogador = 2;
}
else {
printf("\n\nJOGADOR 02 - Escolha uma jogada: ");
__fpurge(stdin);
scanf("%c", &jogada);
// Verifica Jogada - Jogador 01
switch(jogada) {
case 'a':
a = 'X';
break;
case 'b':
b = 'X';
break;
case 'c':
c = 'X';
break;
case 'd':
d = 'X';
break;
case 'e':
e = 'X';
break;
case 'f':
f = 'X';
break;
case 'g':
g = 'X';
break;
case 'h':
h = 'X';
break;
case 'i':
i = 'X';
break;
}
jogador = 1;
}
//Verifica vitória
if((a == 'O' && b == 'O' && c == 'O') || (d == 'O' && e == 'O' && f == 'O') || (g == 'O' && h == 'O' && i == 'O') || (a == 'O' && e == 'O' && i == 'O') || (c == 'O' && e == 'O' && g == 'O') || (a == 'O' && d == 'O' && g == 'O') || (b == 'O' && e == 'O' && h == 'O') || (c == 'O' && f == 'O' && i == 'O')){
printf("\nJogador 01 venceu!\n");
getchar();
jogador = 1;
final = 1;
}
else{
if((a == 'X' && b == 'X' && c == 'X') || (d == 'X' && e == 'X' && f == 'X') || (g == 'X' && h == 'X' && i == 'X') || (a == 'X' && e == 'X' && i == 'X') || (c == 'X' && e == 'X' && g == 'X') || (a == 'X' && d == 'X' && g == 'X') || (b == 'X' && e == 'X' && h == 'X') || (c == 'X' && f == 'X' && i == 'X')){
printf("\nJogador 02 venceu!\n");
getchar();
jogador = 1;
final = 1;
}
}
} while (final != 1);
printf("\n\nJogar novamente (s) ou (n)? ");
__fpurge(stdin);
scanf("%c", &jogar);
system("clear");
}
printf("\n\n");
return 0;
}