Advertisement
Marcos_Carvalho

jogo da velha concluido algoritmos

Jun 15th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.69 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <locale.h>
  5. #include <time.h>
  6.  
  7. /* querida professora como a senhora pediu, um jogo simples mas todo elaborado linha a linha por mim,
  8.    vai dar para perceber pois os codigos são como sempre usei nas atividades logicas que fiz. */
  9.  
  10.  
  11. //-------------------------------------------------variavel global que representa o tabuleiro.
  12. char velha[3][3];
  13. int coluna, linha;
  14. int cont=0; //-------------------------------------controla as jogadas ate 9 vezes
  15. char nomejogador[50];
  16.  
  17. struct dadosdojogo{
  18.      
  19.     char usuariox,cpu; //-------------------------JOGADORES X E O;
  20.     int numero;
  21. }jogo;
  22.  
  23.  
  24. void print(){  //-------------------------------printa o tabuleiro apos o vencedor.
  25.     for(int i =0; i < 3;i++){
  26.         if(i > 0)
  27.             printf("\t-----------\n");
  28.         for(int j =0; j < 3;j++){
  29.             if(j == 0)
  30.                 printf("\t");
  31.             printf(" %c ",velha[i][j]);
  32.             if(j<2)
  33.                 printf("|");
  34.         }
  35.         printf("\n");
  36.     }
  37. }
  38.  
  39. void velhalimpar(){  //--------------------------limpar o tabuleiro
  40.    
  41.     for(int i =0; i < 3;i++){
  42.         for(int j =0; j < 3;j++){  
  43.        
  44.                 velha[i][j]=' ';
  45.         }
  46.     }
  47. }
  48.  
  49.  
  50. void velhaimagem(){  //-------------------------mostrar o tabuleiro preenchido
  51.    
  52.     for(int i =0; i < 3;i++){
  53.         for(int j =0; j < 3;j++){
  54.                
  55.             if(j%2==0) 
  56.                 velha[i][j]='O';
  57.             else
  58.                 velha[i][j]='X';
  59.         }
  60.     }
  61.    
  62.     printf("\n\n \t\t%c | %c | %c\n",velha[0][0],velha[0][1],velha[0][2]);
  63.     printf("\t\t---------\n");
  64.     printf(" \t\t%c | %c | %c\n",velha[1][0],velha[1][1],velha[1][2]);
  65.     printf("\t\t---------\n");
  66.     printf(" \t\t%c | %c | %c\n",velha[2][0],velha[2][1],velha[2][2]);
  67.  
  68. }
  69.  
  70.  
  71.  int vencedor(int cont){ //---------------------------------------função verificar se há ganhador em cada jogada.
  72.        
  73.     int x=10;
  74. //----------------------------------------ver se existe ganhador na horizontal
  75.          
  76.          if((velha[0][0]==velha[0][1]) && (velha[0][1]==velha[0][2]) && (velha[0][0]!=' ')){
  77.             system("CLS");
  78.              print(); //--------------------------printa a ultima jogada.
  79.             return x ;
  80.         }
  81.         else if((velha[1][0]==velha[1][1]) && (velha[1][1]==velha[1][2])&& (velha[1][0]!=' ')){
  82.             system("CLS");
  83.             print();
  84.             return x ;
  85.         }
  86.         else if((velha[2][0]==velha[2][1]) && (velha[2][1]==velha[2][2]) &&  (velha[2][0]!=' ')){
  87.             system("CLS");
  88.             print();
  89.             return x;
  90.  
  91.     ///--------------------------------------------ganhador vertical
  92.         }
  93.         else if((velha[0][0]==velha[1][0]) && (velha[1][0]==velha[2][0]) && (velha[0][0]!=' ')){
  94.             system("cls");
  95.             print();
  96.             return x;
  97.            
  98.         }
  99.         else if((velha[0][1]==velha[1][1]) && (velha[1][1]==velha[2][1])&& (velha[0][1]!=' ')){
  100.             system("CLS");
  101.             print();
  102.        
  103.            
  104.             return x;
  105.          }
  106.         else if((velha[0][2]==velha[1][2]) && (velha[1][2]==velha[2][2]) && (velha[0][2]!=' ')){
  107.             system("CLS");
  108.             print();
  109.             return x;
  110.         }
  111.         ///-------------------------------------------------ganhador diagonal
  112.          if((velha[0][0]==velha[1][1]) && (velha[2][2]==velha[0][0]) && (velha[0][0]!=' ')){
  113.             system("CLS");
  114.             print();
  115.             return x;
  116.            
  117.         }else if((velha[0][2]==velha[1][1]) && (velha[1][1]==velha[2][0]) && (velha[1][1]!=' ')){
  118.             system("CLS");
  119.             print();
  120.            
  121.            
  122.             return x;
  123.         }
  124.        
  125. }
  126.  
  127.  
  128.  
  129. void tabuleiro(char usuariox, char cpu){  //-------------------------------------------------------jogo em si codigo da função principal.
  130.         srand(time(NULL));
  131.         cont=0;  //--------------------------------------contagem de jogadas/controle de jogador para jogadas.
  132.     do{
  133.    
  134.         system("CLS");
  135.         int coluna=1, linha=1;
  136.        
  137.         print();//------------------------------------------------printar o tabuleiro após a ultima jogada.
  138.        
  139.  
  140.        
  141.         if(linha >0 && coluna >0 && coluna <=3 && linha <=3){ //-------------------------------------------------condição para manterr as jogadas regulares
  142.        
  143.             if(cont%2==0){//--------------------------------------------------CONTROLA QUEM JOGA PAR JOGADOR o outro impar.
  144.                 //vez do nome do jogador ----------------------------se caso precisar mudar o rand para um jogador .
  145.                 //printf("vez de %s ",nomejogador);
  146.                 printf("digite a linha: ");  //---------------------------jogada da pessoa que esta jogando.
  147.                 scanf("%d",&linha);
  148.            
  149.                 printf("digite a coluna : ");
  150.                 scanf("%d",&coluna);
  151.                
  152.                
  153.            
  154.                 if (velha[linha-1][coluna-1]==' '){ //--------------------------------------------------------------condição para não repetir as jogadas
  155.                    
  156.                     velha[linha-1][coluna-1]=usuariox;
  157.                     cont++;
  158.                     printf("jogada %d\n",cont);
  159.                     system("pause"); //----------------------------------------------------------------------------pausar apos cada jogada
  160.                 }
  161.                
  162.                 vencedor(cont);
  163.                 int vet;
  164.                
  165.                 vet=vencedor(cont);
  166.                 if(vet==10){
  167.                     printf("\n\n --------------   VENCEDOR!  ---------------\n\n");
  168.                     if(cont%2!=0)
  169.                         printf(" \t %s!!!!!!! \n\n",nomejogador);
  170.                     else
  171.                         printf("COMPUTADOR!\n\n");
  172.                        
  173.                     system("pause");   
  174.                     return;
  175.                
  176.                 }
  177.             }
  178.            
  179.             if(cont%2!=0)//--------------------------------------------------CONTROLA QUEM JOGA IMPAR CPU
  180.             {   //-----------------------------------------------------------cont controla a vez de quem é.
  181.                 printf("vez do computador ");
  182.                
  183.             //--------------------------------------------------------------------jogada da cpu.
  184.                 linha=rand()%3+1;
  185.                 srand(time(NULL));
  186.                 coluna=rand()%3+1;
  187.                 //---------------------------------------------------------------se quiser jogar por dois jogadores
  188.             //printf("jogada do computador: ");
  189.             //scanf("%d %d", &linha,&coluna);
  190.                
  191.        
  192.  
  193.                 if(velha[linha-1][coluna-1]==' '){ //-------------------------------------------------------------------    condição para não repetir as jogadas
  194.            
  195.                     velha[linha-1][coluna-1]=cpu;
  196.                     cont++;
  197.                 }
  198.                
  199.                 vencedor(cont);
  200.                 int vet; //----------------------------------------------------------------------------------------varaivel que recebe a saida do vencedor.
  201.                
  202.                 vet=vencedor(cont); //------------------------------------------------------------------------aqui é o principio para imprimir quem ganhou
  203.                 if(vet==10){
  204.                     printf("\n\n --------------   VENCEDOR!  ---------------\n\n");
  205.                     if(cont%2!=0)
  206.                         printf("\t %s !!!!!!!\n\n",nomejogador);
  207.                     else
  208.                         printf("COMPUTADOR!\n\n");
  209.                        
  210.                     system("pause");   
  211.                     return;
  212.                 }
  213.                
  214.                
  215.             }
  216.            
  217.            
  218.         }
  219.         //-----------------------------------------------------------------------MOSTRAR JOGADA INRREGULAR
  220.         else if (linha > 4 || linha < 1 || coluna > 4 ||coluna < 1) {
  221.             printf("jogada inrregular");
  222.             system("PAUSE");   
  223.          }
  224.          
  225.          vencedor(cont);//---------------------função para ver se existe vencedor
  226.        
  227.         if(cont >8 ){
  228.              printf("\n PARTIDA EMPATADA! :/ ");
  229.              system("PAUSE");
  230.              return;
  231.             }
  232.        
  233.    
  234.          
  235.     }while(cont < 9);
  236.            
  237. }
  238. //-----------------------------------case 2 xplicando as regras do jogo.
  239. void regras(){
  240.         system("CLS");
  241.         printf("\n  REGRAS DO JOGO\n\n");
  242.         printf("    1 -O tabuleiro  é uma matriz  de três linhas por três colunas.\n");
  243.         printf("    2- Dois jogadores escolhem uma marcação cada um, geralmente um círculo (O) e um xis (X).\n");   
  244.         printf("    3- Os jogadores jogam alternadamente, uma marcação por vez, numa lacuna que esteja vazia.\n");
  245.         printf("    4- O objectivo é conseguir três círculos ou três xis em linha, quer horizontal, vertical ou diagonal.\n");
  246.         printf("    5- Se os dois jogadores jogarem sempre da melhor forma, o jogo terminará sempre em empate.\n");
  247.         printf("    6- Em nenhum momento voçe pode jogar repetidamente na mesma casa do jogo\n");
  248.         printf("\n\n        INSTRUÇÕES PARA O JOGADOR.\n\n\n");
  249.         printf("    Ganhar: Se você tem duas peças numa linha, ponha a terceira.\n");
  250.         printf("    Bloquear: Se o oponente tiver duas peças em linha, ponha a terceira para bloqueá-lo.\n");
  251.         printf("    Triângulo: Crie uma oportunidade em que você poderá ganhar de duas maneiras.\n");
  252.         printf("    Bloquear o Triângulo do oponente.\n");
  253.         printf("    Centro: Jogue no centro\n");
  254.         printf("\n\n \t \t  aproveite e divirta-se ^_^   ");
  255.         system("pause");       
  256. }
  257.  
  258. int main ()
  259.  {
  260.     srand(time(NULL));
  261.     //variavel do jogo escopo local
  262.     int opcaomenu;
  263.    
  264.     setlocale(LC_ALL,"portuguese");
  265.     do{
  266.    
  267.         //printando o menu;
  268.         system("CLS"); 
  269.         printf("-------------JOGO DA VELHA-------------");
  270.         printf("\n\n       ----------MENU-----------");
  271.         printf("\n\n \t\t1-JOGAR \n\t\t2-INSTRUÇÕES \n\t\t3-SAIR");
  272.         velhaimagem();
  273.        
  274.         printf("\n\ndigite o digito de opção: ");
  275.         scanf("%d",&opcaomenu);
  276.        
  277.         //controle do menu principal.
  278.         switch(opcaomenu){
  279.             case 1:
  280.                 system("CLS");
  281.                 printf("digite seu nome: ");
  282.                 setbuf(stdin,NULL);
  283.                 fgets(nomejogador,50,stdin);
  284.                 system("CLS");
  285.                 printf("digite '1' se quer começar com O ou '2' se quer começar com X: ");
  286.                 scanf("%d",&jogo.numero);
  287.                 if(jogo.numero==1){
  288.                     jogo.usuariox='X';
  289.                     jogo.cpu='O';
  290.                     }
  291.                 else if(jogo.numero==2){
  292.                     jogo.usuariox='O';
  293.                     jogo.cpu='x';
  294.                     }
  295.                 else{
  296.                     printf("\n\n você vai iniciar com o X");
  297.                     jogo.usuariox='X';
  298.                     jogo.cpu='O';
  299.                  } 
  300.                  
  301.                 printf("aperte qualquer tecla para começar: ");
  302.                 system("CLS");
  303.                 velhalimpar();  //-----------------------------------------limpar o tabuleiro
  304.                 tabuleiro(jogo.usuariox,jogo.cpu); //------------------- função recebe quem é x e O.
  305.                
  306.                 system("CLS");
  307.                 break;
  308.                
  309.                 case 2:
  310.                    
  311.                     regras();//------------------------------funçaõ para apenas printar as regras
  312.                        
  313.                 case 3:
  314.                     printf("\n VOCÊ SAIU DO JOGO! \n");
  315.                    
  316.                
  317.                 if(opcaomenu > 3)
  318.                     printf("\n OPÇÃO INVALIDA! \n");
  319.                        
  320.                 }
  321.    
  322.     }while(opcaomenu!=3);
  323.  
  324.     return 0;
  325. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement