Olá pessoal, tudo bem com vocês?
Bem, recentemente venho estudando linguagem de programação C e peguei uma atividade aparentemente simples para fazer um jogo da velha funcionar e depois otimizá-lo.
Inicialmente, o código veio incompleto para que eu preenchesse as lacunas e com vários erros de sintaxe, então precisava consertar tudo e fazer o mesmo rodar; isso eu já fiz, porém, preciso agora otimizar o mesmo para que funcione melhor.
Poderiam me dar uma força?
#include <stdio.h>
int main (void) {
char Matriz[3][3]; //Declaração da matriz para o jogo
char O = 'O', X = 'X';
int jogadas = 0, j, i;
for (i = 0; i < 3; i++) //Inicialização da matriz do jogo
for (j = 0; j < 3; j++)
Matriz[i][ j] = ' ' ;
while (jogadas <= 9)
{
printf (" JOGO DA VELHA \n");
for (i = 0; i < 3; i++)
{
printf ("\t\t %c | %c | %c\n",Matriz [i] [0], Matriz [i] [1], Matriz
[i] [2]);
if (i < 3-1) {
printf ("\t\t ---+---+--- \n");
}
}
printf ("\nINSIRA AS COORDENADAS, ");
if (jogadas % 2)
printf ("JOGADOR 2\n");
else
printf ("JOGADOR 1\n");
printf ("LINHA :");
scanf ("%d",&i);
printf ("COLUNA: ");
scanf ("%d",&j); //Parâmetros para entrada de dados da coluna
if (Matriz [i-1] [j-1] == ' ')
{
if (jogadas%2)
Matriz [i-1] [j-1] = X;
else
Matriz [i-1] [j-1] = O;
jogadas++;
}
if ((Matriz[0][0]==O && Matriz[0][1]==O && Matriz[0][2]==O) ||
(Matriz[1][0]==O && Matriz[1][1]==O && Matriz[1][2]==O) ||
(Matriz[2][0]==O && Matriz[2][1]==O && Matriz[2][2]==O) ||
(Matriz[0][0]==O && Matriz[1][0]==O && Matriz[2][0]==O) ||
(Matriz[0][1]==O && Matriz[1][1]==O && Matriz[2][1]==O) ||
(Matriz[0][2]==O && Matriz[1][2]==O && Matriz[2][2]==O) ||
(Matriz[0][0]==O && Matriz[1][1]==O && Matriz[2][2]==O) ||
(Matriz[0][2]==O && Matriz[1][1]==O && Matriz[2][0]==O))
{
printf("\n\a\t\tJogador 1, VOCÊ VENCEU!!!\n");
break;
}
if ((Matriz[0][0]==X && Matriz[0][1]==X && Matriz[0][2]==X) ||
(Matriz[1][0]==X && Matriz[1][1]==X && Matriz[1][2]==X) ||
(Matriz[2][0]==X && Matriz[2][1]==X && Matriz[2][2]==X) ||
(Matriz[0][0]==X && Matriz[1][0]==X && Matriz[2][0]==X) ||
(Matriz[0][1]==X && Matriz[1][1]==X && Matriz[2][1]==X) ||
(Matriz[0][2]==X && Matriz[1][2]==X && Matriz[2][2]==X) ||
(Matriz[0][0]==X && Matriz[1][1]==X && Matriz[2][2]==X) ||
(Matriz[0][2]==X && Matriz[1][1]==X && Matriz[2][0]==X))
{
printf ("\n\n\n\n\a\t\tJogador 2, VOCÊ VENCEU!!!\n");
break;
}
if (jogadas==9)
{
// Condição para que a partida termine empatada
printf ("PARTIDA EMPATADA");
break;
}
}
return (0);
}