All pastes #2062894 Raw Edit

Jogo da Velha

public text v1 · immutable
#2062894 ·published 2011-05-18 01:14 UTC
rendered paste body
#include<stdio.h>
#include<stdlib.h>
#include <time.h>

char matriz[3][3]; // a matriz do jogo

char checar(void);
void inicia_matriz(void);
void movimento_jogador(void);
void movimento_computador(void);
void mostrar_matriz(void);

int main(void)
{
    char done;
    int rev, rod, jog, comp;
    rev = rod = jog = comp = 0;
    srand ( time(NULL) ); // gera seed baseada no relogio para alimentar rand()
    system("cls");
    printf("Digite quantas vezes deseja jogar o Jogo da Velha: ");
    scanf("%d", &rod);
    system("cls");

    for(int i=1; i<=rod; i++)
    {
            printf("\n       PLACAR\nJogador    -> %d \nComputador -> %d\n\n\n", jog, comp);
            done = ' ';
            inicia_matriz();
            do{
            mostrar_matriz();
            movimento_jogador();
            system("cls");
            done = checar(); // verifica se ha vencedor
            if(done != ' ')
                    break;
            movimento_computador();
            done = checar();
            }while(done == ' ');

            if(done == 'X')
            {
                    printf("O Jogador ganhou!\n\n\n");
                    jog++;
            }
            else
            {
            printf("O Computador ganhou!\n");
            comp++;
            }
            mostrar_matriz();  // mostra as posicoes finais
            system("pause");
            system("cls");

    }
            printf("\n       PLACAR\nJogador    -> %d \nComputador -> %d\n\n\n", jog, comp);

            if(jog>comp) printf("Dessa vez o Jogador venceu!!!\n\n");
            else if(comp>jog) printf("Dessa vez o Computador venceu!!!\n\n");
            else printf("Dessa vez empatou.\n\n");

            printf("Digite 1 para jogar novamente ou pressione qualquer outra tecla para sair: ");
            fflush(stdin);
            scanf("%d", &rev);
            if(rev == 1) main();
            else {
                 printf("%d", rev);
                 system("pause");
                 exit(0);
                 }

            system("pause");
}



    void inicia_matriz(void) //inicializa a matriz
    {
         int i, j;

         for(i=0; i<3; i++)
           for(j=0; j<3; j++)
                    matriz[i][j] = ' ';
    }



    void movimento_jogador(void) // Obtem a sua jogada
    {
         int x, y;

         printf("Digite as coordenadas para X.");
         printf("\nDigite a linha: ");
         scanf("%d", &x);
         printf("Digite a coluna: ");
         scanf("%d", &y);

         x--;
         y--;

         if(matriz[x][y] != ' ')
         {
               printf("Posicao invalida, tente novamente. \n");
               movimento_jogador();
         }
         else
               matriz[x][y] = 'X';
    }



    void movimento_computador(void) // RECEBE A JOGADA DO COMPUTADOR
    {
         int i, j;
         i = rand() %3;
         j = rand() %3;
         if(matriz[i][j] != ' ')
         {
              movimento_computador();
         }
         else
               matriz[i][j] = 'O';
    }



    void mostrar_matriz(void) // MOSTRA A MATRIZ NA TELA
    {
         int i;

         for(i=0; i<3; i++)
         {
                  if(i==0)
                       printf("\nJOGO DA VELHA\n\n");
                  printf("%d   %c | %c | %c ", i+1, matriz[i][0], matriz[i][1], matriz[i][2]);
                  if(i != 2)
                       printf("\n   ---|---|---\n");
                  else
                       printf("\n    1   2   3\n");
         }

         printf("\n");
    }



    char checar(void) // VERIFICA SE HA UM VENCEDOR
    {
         int i;

         for(i=0; i<3; i++)  // VERIFICA AS LINHAS
                  if(matriz[i][0] == matriz[i][1] && matriz[i][0] == matriz[i][2])
                     return matriz[i][0];

         for(i=0; i<3; i++) // VERIFICA AS COLUNAS
                  if(matriz[0][i] == matriz[1][i] && matriz[0][i] == matriz[2][i])
                     return matriz[i][0];

         if(matriz[0][0] == matriz[1][1] && matriz[0][0]== matriz[2][2]) // VERIFICA AS DIAGONAIS
                  return matriz[0][0];
         if(matriz[0][2] == matriz[1][1] && matriz[0][2]== matriz[2][0])
                  return matriz[0][2];
         return ' ';
    }