Advertisement
etdhbtehae

jogo da velha filipe

May 25th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.11 KB | None | 0 0
  1. /*
  2.   Programa Jogo da Velha
  3.   Práticas de Fundamentos de Programação
  4.   prof.: Filipe Costa Fernandes - 1ºsemestre/2017
  5.   INSTRUÇÕES NO ENUNCIADO EM PDF
  6. */
  7.  
  8. #include<stdio.h>
  9. #include<conio.h>
  10. #include<stdlib.h>
  11. #include<locale.h>
  12. //area de declaracao de constantes
  13. #define lim 3
  14. #define Jogador 'J'
  15. #define Maquina 'M'
  16.  
  17.     /*variáveis globais utilizadas no programa*/
  18.  
  19.     int c; //variável de controle para laços
  20.     char op; //opção do jogador utilizado no programa principal
  21.     int vezde; //variável que define de quem é a vez para jogar
  22.     int jogo; //recebe o retorno das funções que define o fim do jogo
  23.     char jv[3][3]; //matriz jogo 3 X 3
  24.  
  25. //procedimento utilizado para limpeza da matriz, colocando '0' em toda a matriz
  26. void limpeza()
  27. {
  28. int linha, coluna;
  29.     for (linha=0;linha<lim; linha++)
  30.     {
  31.         for(coluna=0; coluna<lim; coluna++)
  32.         jv [linha][coluna]=0;
  33.     }
  34.    
  35. printf("\t          0       1      2\n\n");
  36. printf("\t      _________________________\n");
  37. printf("\t0     |       |       |       |\n");
  38. printf("\t      |       |       |       |    \n");
  39. printf("\t      |   %d   |   %d   |   %d   |\n",jv[0][0],jv[0][1],jv[0][2]);
  40. printf("\t      |       |       |       |   \n");
  41. printf("\t      |_______|_______|_______|\n");
  42. printf("\t      |       |       |       |\n");
  43. printf("\t      |       |       |       |\n");
  44. printf("\t1     |   %d   |   %d   |   %d   |  \n",jv[1][0],jv[1][1],jv[1][2]);
  45. printf("\t      |       |       |       |   \n");
  46. printf("\t      |_______|_______|_______|\n");
  47. printf("\t      |       |       |       |\n");
  48. printf("\t      |       |       |       |\n");
  49. printf("\t2     |   %d   |   %d   |   %d   |  \n",jv[2][0],jv[2][1],jv[2][2]);
  50. printf("\t      |       |       |       |   \n");
  51. printf("\t      |_______|_______|_______|\n");
  52. printf("\n\n\n");
  53. printf("\n\n\n");
  54. }
  55.  
  56. //procedimento utilizado para visualizar o conteúdo da matriz
  57. void visualizar()
  58. {
  59.      int w,k;
  60.     printf("\n");
  61.     for (w=0;w<lim;w++)
  62.     {
  63.     for (k=0;k<lim;k++)
  64.        printf("\t%c",jv[w][k]);
  65.        printf("\n\n");
  66.     }
  67. }
  68. //esta função verifica se houve ou não ganhador, retornando true (verdadeiro) se houver,
  69. //ou false (falso) se não tiver ganhador para cada jogada
  70. int velha(char jog)
  71. { //printf("Em construção........");
  72.     //ESSE SERÁ O RESULTADO , CHECAR SE HOUVE GANHADOR NA PARTIDA;
  73. /*
  74.     int x,o;                      
  75.     if((jv[0][0]==x&& jv[0][1]==x && jv[0][2]==1 + vez)|| //           |          |
  76.     (jv[0][0]==x && jv[1][0]==x && jv[2][0]== 1 + vez)|| //   jv[0][0] | jv[0][1] |  jv[0][2]
  77.     (jv[0][0]==x && jv[1][1]==x && jv[2][2]== 1 + vez)|| //   ---------|----------|------------
  78.     (jv[0][2]==x && jv[0][1]==x && jv[0][0]== 1 + vez)|| //   jv[1][0] | jv[1][1] | jv[1][2]
  79.     (jv[2][0]==x && jv[1][0]==x && jv[0][0]== 1 + vez)|| //   ---------|----------|------------
  80.     (jv[2][2]==x && jv[1][1]==x && jv[0][0]== 1 + vez)|| //   jv[2][0] | jv[2][1] | jv[2][2]
  81.     (jv[0][1]==x && jv[1][1]==x && jv[2][1]== 1 + vez)|| //
  82.     (jv[0][2]==x && jv[1][2]==x && jv[2][2]== 1 + vez)|| //
  83.     (jv[0][2]==x && jv[1][1]==x && jv[2][0]== 1 + vez)|| //
  84.     (jv[1][0]==x && jv[1][1]==x && jv[1][2]== 1 + vez)|| //
  85.     (jv[2][0]==x && jv[2][1]==x && jv[2][2]== 1 + vez)|| //
  86.     (jv[2][1]==x && jv[1][1]==x && jv[0][1]== 1 + vez)|| //
  87.     (jv[2][2]==x && jv[1][2]==x && jv[0][2]== 1 + vez)|| //
  88.     (jv[2][0]==x && jv[1][1]==x && jv[0][2]== 1 + vez)|| //
  89.     (jv[1][2]==x && jv[1][1]==x && jv[1][0]== 1 + vez)|| //
  90.     (jv[2][2]==x && jv[2][1]==x && jv[2][0]== 1 + vez))
  91.     printf("Jogador Vencedor!!");
  92.    
  93.     else       
  94.     if((jv[0][0]==x && jv[0][1]==x && jv[0][2]==x)||
  95.         (jv[0][0]==x && jv[1][0]==x && jv[2][0]==x)||
  96.         (jv[0][0]==x && jv[1][1]==x && jv[2][2]==x)||
  97.         (jv[0][2]==x && jv[0][1]==x && jv[0][0]==x)||
  98.         (jv[2][0]==x && jv[1][0]==x && jv[0][0]==x)||
  99.         (jv[2][2]==x && jv[1][1]==x && jv[0][0]==x)||
  100.         (jv[0][1]==x && jv[1][1]==x && jv[2][1]==x)||
  101.         (jv[0][2]==x && jv[1][2]==x && jv[2][2]==x)||
  102.         (jv[0][2]==x && jv[1][1]==x && jv[2][0]==x)||
  103.         (jv[1][0]==x && jv[1][1]==x && jv[1][2]==x)||
  104.         (jv[2][0]==x && jv[2][1]==x && jv[2][2]==x)||  
  105.         (jv[2][1]==x && jv[1][1]==x && jv[0][1]==x)||
  106.         (jv[2][2]==x && jv[1][2]==x && jv[0][2]==x)||
  107.         (jv[2][0]==x && jv[1][1]==x && jv[0][2]==x)||
  108.         (jv[1][2]==x && jv[1][1]==x && jv[1][0]==x)||
  109.         (jv[2][2]==x && jv[2][1]==x && jv[2][0]==x))
  110.         printf("Jogador Vencedor!!");
  111.  
  112.     else           
  113.     printf("Não houve ganhador, JOGUEM DE NOVO!!");*/
  114. }
  115.  
  116. //esta função recebe uma posição da matriz e verifica se esta posição já foi
  117. //selecionada, retornando true (verdadeiro) se já tiver sido selecionada ou
  118. //false (falso) caso contrário
  119. int posicao( int l, int c)
  120. {
  121.     printf("Escolha a coluna: ");
  122.     scanf("%d",&c);
  123.     printf("Escolha a linha: ");
  124.     scanf("%d",&l);    
  125.     jv[3][3] = jv[l][c];
  126.    
  127.     if(c > 3 || c < 0)
  128.     {
  129.         if(l > 3 || l < 0)
  130.         printf("Opção Inválida");
  131.     }
  132.     //printf("Em construção........");
  133. }
  134.  
  135. //esta função utiliza a função random (rand) para selecionar uma nova jogada da máquina,
  136. //retornando true (verdadeiro) se a jogada resultou em vitória ou false (falso) caso contrário
  137. int maquinajoga()
  138. {
  139.   int l,c,rposicao,v;
  140.   rposicao = 1;
  141.   do
  142.   {
  143.     l = rand()%3;
  144.     c = rand()%3;
  145.     rposicao = posicao(l,c);
  146.     if (!rposicao)
  147.         jv[l][c] = Maquina;
  148.   }while ( rposicao );
  149.   visualizar();
  150.   v = velha(Maquina);
  151.   if ( v )
  152.   {
  153.      printf(" A MAQUINA VENCEU O JOGO..........\n");
  154.      return 1;
  155.   }
  156.   else return 0;
  157. }
  158.  
  159. //esta função faz a jogada do jogador, que seleciona uma nova jogada válida,
  160. //retornando true (verdadeiro) se a jogada resultou em vitória ou false (falso) caso contrário }
  161. int jogadorjoga()
  162. {
  163.     //printf("Em construção........");
  164. }
  165.  
  166. //programa principal. Jogo da Velha, esta parte do programa é a mais importante,
  167. //controla de quem é a vez de jogar, chamando as funções e procedimentos necessários
  168. //para cada execução do programa
  169. int main()
  170. {
  171.     setlocale(LC_ALL,"Portuguese");
  172.     c = 1;
  173.     limpeza();  //chama a função para limpeza da matriz
  174.     visualizar();   //visualiza a matriz 3 X 3 com '0'
  175.     //Controle para selecionar de quem é a primeira jogada MAQUINA ou JOGADOR
  176.     do
  177.     {
  178.         printf("Opção para início do jogo...\n");
  179.         printf(" m = máquina\n");
  180.         printf(" j = jogador\n");
  181.         op = getchar();
  182.     }while ( ( op != 'm' ) && ( op != 'M' ) && ( op != 'j' ) && ( op = 'J' ) );
  183.  
  184.     if ( ( op == 'm' ) || ( op == 'M' ) )
  185.     {
  186.         jogo = maquinajoga();
  187.         vezde = 1;      // está variável é muito importante no programa,
  188.         //fazendo com que após a máquina jogar ela sede a vez para o jogador.
  189.     }
  190.     else
  191.     {
  192.         jogo = jogadorjoga();
  193.         vezde = 0;  //esta variável é muito importante no programa,
  194.         //fazendo com que após o jogador jogar ele sede a vez para a maquina
  195.     }
  196.  
  197.     //este laço controla as jogadas e só termina quando alguém ganha ou quando
  198.     //der empate: OBS.: uma ótima modificação neste programa seria o jogador
  199.     //selecionar se quer parar ou começar um novo jogo
  200.  
  201.     do
  202.     {
  203.         if ( vezde )
  204.         {
  205.             jogo = jogadorjoga();
  206.             vezde = 0;
  207.         }
  208.         else
  209.         {
  210.             jogo = maquinajoga();
  211.             vezde = 1;
  212.         }
  213.         c++;
  214.     }while (( c <= 8 ) && ( !jogo ));
  215.     getch();
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement