[SOURCE]Jogo da velha

Started by _Dr4k0_, 23 de September , 2006, 11:09:54 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

_Dr4k0_

Este daqui é um exemplo do C Completo e Total com algumas modificações feitas por mim...
Espero que gostem..

/* Um exemplo de jogo-da-velha simples */
#include <stdio.h>
#include <stdlib.h>

char matrix[3][3];

char check(void);
void init_matrix(void);
void get_player_move(void);
void get_computer_move(void);
void disp_matrix(void);

void main(void)
{
  char done;

  printf("Este , o jogo da velha.\n");
  printf("Voce vai estar  jogando contra o computador.\nPs.: Pegue leve ele e bem ruim!!\n");
  done = ' ';
  init_matrix();
  do {
    disp_matrix();
    get_player_move();
    done = check(); 
    if(done!=' ') break; 
    get_computer_move();
    done = check(); 
  } while(done==' ');
  if(done=='X') printf("Voce ganhou!\n");
  else printf("Eu ganhei!!!\n");
  disp_matrix(); 
}

void init_matrix(void)
{
  int i, j;

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


void get_player_move(void)
{
  int x, y;

  printf("Entre com os comandos para o X: ");
  scanf("%d%d", &x, &y);
  x--; y--;
  if(matrix[x][y]!=' ') {
    printf("Posicao invalida, tente denovo. \n");
    get_player_move();
  }
  else matrix[x][y] = 'X';
}

void get_computer_move(void)
{
  int i, j;

  for(i=0; i<3; i++) {
    for(j=0; j<3; j++)
      if(matrix[i][j]==' ') break;
    if(matrix[i][j]==' ') break;
  }
  if(i*j==9) {
    printf("empate\n");
    exit(0);
  }
  else
    matrix[i][j] = 'O';
}


void disp_matrix(void)
{
  int t;

  for(t=0; t<3; t++) {
    printf(" %c | %c | %c ", matrix[t][0], matrix[t][1],
         matrix[t][2]);
    if(t!=2) printf("\n---|---|---\n");
  }
  printf("\n");
}


char check(void)
{
  int i;

  for(i=0; i<3; i++)
    if(matrix[i][0]==matrix[i][1] &&
       matrix[i][0]==matrix[i][2]) return matrix[i][0];

  for(i=0; i<3; i++)
    if(matrix[0][i]==matrix[1][i] &&
       matrix[0][i]==matrix[2][i]) return matrix[0][i];

  if(matrix[0][0]==matrix[1][1] &&
     matrix[1][1]==matrix[2][2])
       return matrix[0][0];

  if(matrix[0][2]==matrix[1][1] &&
     matrix[1][1]==matrix[2][0])
       return matrix[0][2];
  return ' ';
}

PS.: Recomendo o livro C Completo e Total
100% Livre!!!Livre para escolher o que há de melhor no Windows e Linux. Livre de preconceito direto ou inverso!
Adote essa filosofia e tenha mais chance de sucesso profissional.

_Dr4k0_

Aqui vai alguns para download:
http://www.4shared.com/network/search.j ... n=&start=0

Esse exemplo é inteiramente de lá.. e vai servir de estudos para vários daqui como serviu para mim
100% Livre!!!Livre para escolher o que há de melhor no Windows e Linux. Livre de preconceito direto ou inverso!
Adote essa filosofia e tenha mais chance de sucesso profissional.