Pessoal o prof passou um exercício mais empaquei não consigo mais ir além.
poderiam me dar uma ajudinha.
b) controle da vez de jogar: 'X' ou 'O', dentro do loop do jogo;
c) verificação do ganhador: 'X', 'O' ou deu velha, chamando uma função com o nome 'confereVencedor' no loop do jogo; fiz mais não consigo colocar DEU VELHA
e) verificação se o jogador está quase ganhando, chamando uma função com o nome 'quaseGanhando' no loop do jogo. (Exemplo 1='X' 2='X' 3='')
f) baseado na questão anterior, sugira a próxima jogada;
quaseGanhando - deve receber dois parâmetros por referência e onde deve ser a sugestão de linha e coluna
#include <stdio.h>
#include <stdlib.h>
char jogo[3][3];
int ganhou=0;
//verificação do ganhador: 'X', 'O' ou deu velha, chamando uma função com o nome 'confereVencedor' no loop do jogo;
void conferevencedor(){
// alguém ganhou por linha
if(jogo[0][0] == '0' && jogo[0][1] == '0' && jogo[0][2] == '0' ||
jogo[1][0] == '0' && jogo[1][1] == '0' && jogo[1][2] == '0' ||
jogo[2][0] == '0' && jogo[2][1] == '0' && jogo[2][2] == '0'){
printf("\O JOGADOR 0 GANHOU POR LINHA\n");
ganhou = 1;
}
if(jogo[0][0] == 'X' && jogo[0][1] == 'X' && jogo[0][2] == 'X' ||
jogo[1][0] == 'X' && jogo[1][1] == 'X' && jogo[1][2] == 'X' ||
jogo[2][0] == 'X' && jogo[2][1] == 'X' && jogo[2][2] == 'X'){
printf("\O JOGADOR X GANHOU POR LINHA\n");
ganhou = 1;
}
// alguém ganhou por colunaint
if(jogo[0][0] == '0' && jogo[1][0] == '0' && jogo[2][0] == '0' ||
jogo[0][1] == '0' && jogo[1][1] == '0' && jogo[2][1] == '0' ||
jogo[0][2] == '0' && jogo[1][2] == '0' && jogo[2][2] == '0'){
printf("\O JOGADOR 0 GANHOU POR COLUNA\n");
ganhou = 1;
}
if(jogo[0][0] == 'X' && jogo[1][0] == 'X' && jogo[2][0] == 'X' ||
jogo[0][1] == 'X' && jogo[1][1] == 'X' && jogo[2][1] == 'X' ||
jogo[0][2] == 'X' && jogo[1][2] == 'X' && jogo[2][2] == 'X'){
printf("\O JOGADOR X GANHOU POR LINHA\n");
ganhou = 1;
}
// alguém ganhou na diagonal principal
if(jogo[0][0] == '0' && jogo[1][1] == '0' && jogo[2][2] == '0'){
printf("\O JOGADOR 0 GANHOU POR DIAGONAL\n");
ganhou = 1;
}
if(jogo[0][0] == 'X' && jogo[1][1] == 'X' && jogo[2][2] == 'X'){
printf("\O JOGADOR X GANHOU POR DIAGONAL\n");
ganhou = 1;
}
// alguém ganhou na diagonal secundária
if(jogo[0][2] == '0' && jogo[1][1] == '0' && jogo[2][0] == '0'){
printf("\O JOGADOR 0 GANHOU POR DIAGONAL SECUNDARIA\n");
ganhou = 1;
}
if(jogo[0][2] == 'X' && jogo[1][1] == 'X' && jogo[2][0] == 'X'){
printf("\O JOGADOR X GANHOU POR DIAGONAL SECUNDARIA\n");
ganhou = 1;
}
}
int main(){
// variaveis
int l=0;
int c=0;
int linha=0;
int coluna=0;
int jogador=0;
int jogadas=0;
int opcao=0;
do{
jogador = 1;
// como inicializar nossa estrutura de dados?
for(l = 0; l < 3; l++){
for(c = 0; c < 3; c++){
jogo[l][c] = ' ';
}
}
while ( jogadas < 9){ // repete até alguém ganhar ou atingir 9 jogadas
// imprimir jogo
printf("\n\n\t 0 1 2\n\n");
for(l = 0; l < 3; l++){
for(c = 0; c < 3; c++){
if(c == 0)
printf("\t");
printf(" %c ", jogo[l][c]);
if(c < 2)
printf("|");
if(c == 2)
printf(" %d", l);
}
if(l < 2)
printf("\n\t-----------");
printf("\n");
}
// ler coordenadas
do{
printf("\n\JOGADOR 1 = 0\nJOGADOR 2 = X\n");
printf("\nJOGADOR %d: Digite a linha: ", jogador);
scanf("%d", &linha);
printf("JOGADOR %d: Digite a coluna: ", jogador);
scanf("%d", &coluna);
}while(linha < 0 || linha > 2 || coluna < 0 || coluna > 2 || jogo[linha][coluna] != ' ');
// salvar coordenadas
if(jogador == 1){
jogo[linha][coluna] = '0';
jogador++;
}
else{
jogo[linha][coluna] = 'X';
jogador = 1;
}
jogadas++;
conferevencedor();
}
}while(ganhou=0);
return 0;
}