Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Jogo da Velha Orinal em C (Codigo/Explicação/arquivos)

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ Jogo da Velha Orinal em C (Codigo/Explicação/arquivos)

    Iaew galera do GH, hoje vim mostrar um projeto que andei fazendo, e achei entereçante mostrar para vcs, um jogo da velha melhorado ... acho q o material vai servir para quem ta iniciando com c/c++, que manja da logica... chega de papo... e mãos na massa.

    O programa a seguir foi testado apenas no linux, mas a unica coisa que muda é o modo de limpar a tela 'system("clear"); para linux / 'system("cls"); no windows':

    Código PHP:
    /*  @autor felipe B.P <-- Flipp
     *  @version 1.0.0
     */

    #include <stdio.h>
    #include <stdlib.h>

    static char tab[] = {' ',' ',' ',  //faz o vetor q ira 
                                   
    ' ',' ',' ',  //armazenar as posicoes
                                   
    ' ',' ',' '};
    // declara as funcoes criadas
    void Vencedor();
    void update();
    int jogada();
    int jogada2();

    int x;
    int main(void){

        
    int ok 1;
        while(
    ok == 1){         // loop que ira chamar as jogadas
            
    jogador();
            
    jogador2();
        }
        return 
    0;
    }
    int jogador(){
        
    update();          // chama a funcao update para imprimir a face
        
    printf("\t\t        Jogador 1: "); 
        
    scanf("%i",&x);          // vai receber a posicao da jogada
        
    if(tab[x-1] == ' '){           //verifica se a posicao esta ocupada ou nao
            
    switch(x){
                case 
    1tab[0]='X'; break;     // se nao ela e modificada
                
    case 2tab[1]='X'; break;
                case 
    3tab[2]='X'; break;
                case 
    4tab[3]='X'; break;
                case 
    5tab[4]='X'; break;
                case 
    6tab[5]='X'; break;
                case 
    7tab[6]='X'; break;
                case 
    8tab[7]='X'; break;
                case 
    9tab[8]='X'; break;
            }
        }else{ 
            
    jogador();          // se tiver ocupada, a funcao chama a si msm
        
    }  
        
    update();         // atualiza a face
        
    Vencedor();         // chama a funcao q verifica se venceu ou nao
        
    return 0;
    }
    int jogador2(){
        
    update();           // ''
        
    printf("\t\t        Jogador 2: ");
        
    scanf("%i",&x);             // ''
        
    if(tab[x-1] == ' '){
            switch(
    x){
                case 
    1tab[0]='O'; break;
                case 
    2tab[1]='O'; break;
                case 
    3tab[2]='O'; break;   // ''
                
    case 4tab[3]='O'; break;
                case 
    5tab[4]='O'; break;
                case 
    6tab[5]='O'; break;
                case 
    7tab[6]='O'; break;
                case 
    8tab[7]='O'; break;
                case 
    9tab[8]='O'; break;
            }
        }else{
            
    jogador2();     // ''
        
    }
        
    update();        // ''
        
    Vencedor();          // ''
        
    return 0;
    }

    void update(){         // esta funcao gera a face do jogo
        
    system("clear");     //limpa a tela, OBS: no windows se usa system("cls");
        
    printf("\t\t  __________________________________________\n");
        
    printf("\t\t |              Jogo da Velha               |   \n");
        
    printf("\t\t |                                          |   \n");
        
    printf("\t\t |                                          |   \n");
        
    printf("\t\t |              %c  |   %c  |  %c              |\n",tab[0],tab[1],tab[2]);
        
    printf("\t\t |           ______|______|______           |   \n");
        
    printf("\t\t |              %c  |   %c  |  %c              |\n",tab[3],tab[4],tab[5]);
        
    printf("\t\t |           ______|______|______           |   \n");
        
    printf("\t\t |              %c  |   %c  |  %c              |\n",tab[6],tab[7],tab[8]);
        
    printf("\t\t |                 |      |                 |   \n");
        
    printf("\t\t |____                                  ____|   \n");
        
    }
    void novoJogo(){
        
    int i;
        for(
    0;i<9;i++){
            
    tab[i] = ' ';  // zera o tabuleiro
        
    }
        
    main(); // chama a funcao main
    }
    void Vencedor(){  // verifica todas as posibilidades de vitoria
           // Horizontais
        
    if(tab[0] == 'X' && tab[1]=='X' && tab[2] =='X' ||
           
    tab[3] == 'X' && tab[4]=='X' && tab[5] =='X' ||
           
    tab[6] == 'X' && tab[7]=='X' && tab[8] =='X' ||
           
    // Verticais
           
    tab[0] == 'X' && tab[3]=='X' && tab[6] =='X' ||
           
    tab[1] == 'X' && tab[4]=='X' && tab[7] =='X' ||
           
    tab[2] == 'X' && tab[5]=='X' && tab[8] =='X' ||
           
    // Diagonais
           
    tab[0] == 'X' && tab[4]=='X' && tab[8] =='X' ||
           
    tab[6] == 'X' && tab[4]=='X' && tab[2] =='X')
        { 
           
    // se algo for aceito...
           
    printf("\n\t\t  Jogador 1 ganhou :D     [Enter]Novo Jogo");
           
    getchar();getchar();novoJogo();  // espera um caracter e chama 
                                            // a funcao novoJogo     
        
    }
        if(
    tab[0] == 'O' && tab[1]=='O' && tab[2] =='O' ||
           
    tab[3] == 'O' && tab[4]=='O' && tab[5] =='O' ||
           
    tab[6] == 'O' && tab[7]=='O' && tab[8] =='O' ||

           
    tab[0] == 'O' && tab[3]=='O' && tab[6] =='O' ||
           
    tab[1] == 'O' && tab[4]=='O' && tab[7] =='O' ||
           
    tab[2] == 'O' && tab[5]=='O' && tab[8] =='O' ||

           
    tab[0] == 'O' && tab[4]=='O' && tab[8] =='O' ||
           
    tab[6] == 'O' && tab[4]=='O' && tab[2] =='O'){ 
           
    printf("\n\t\t  Jogador 2 ganhou :D     [Enter]Novo Jogo");
           
    getchar();getchar();novoJogo();
           
        }

    Os comentarios no programa ja explicam tudo... mas qualquer duvida ou erro, por favor perguntem ai nos comentarios... i se liga porque ainda vem post bem legal por ai.
    Similar Threads

  • Font Size
    #2
    Esqueci de falar do funcionamento:
    1 | 2 | 3
    _____|_____|_____
    4 | 5 | 6
    _____|_____|_____
    7 | 8 | 9
    | |

    essas sao as coordenadas para fazer a jogada
    vc digita a coordenada " jogador 1: 5 " i ela muda

    1 | 2 | 3
    _____|_____|_____
    4 | X | 6
    _____|_____|_____
    7 | 8 | 9
    | |

    Código PHP:
    /*  @autor felipe B.P <-- Flipp
     *  @version 1.0.0
     */

    #include <stdio.h>
    #include <stdlib.h>

    static char tab[] = {' ',' ',' ',  //faz o vetor q ira 
                                   
    ' ',' ',' ',  //armazenar as posicoes
                                   
    ' ',' ',' '};
    // declara as funcoes criadas
    void Vencedor();
    void update();
    int jogada();
    int jogada2();

    int x;
    int main(void){

        
    int ok 1;
        while(
    ok == 1){         // loop que ira chamar as jogadas
            
    jogador();
            
    jogador2();
        }
        return 
    0;
    }
    int jogador(){
        
    update();          // chama a funcao update para imprimir a face
        
    printf("\t\t        Jogador 1: "); 
        
    scanf("%i",&x);          // vai receber a posicao da jogada
        
    if(tab[x-1] == ' '){           //verifica se a posicao esta ocupada ou nao
            
    switch(x){
                case 
    1tab[0]='X'; break;     // se nao ela e modificada
                
    case 2tab[1]='X'; break;
                case 
    3tab[2]='X'; break;
                case 
    4tab[3]='X'; break;
                case 
    5tab[4]='X'; break;
                case 
    6tab[5]='X'; break;
                case 
    7tab[6]='X'; break;
                case 
    8tab[7]='X'; break;
                case 
    9tab[8]='X'; break;
            }
        }else{ 
            
    jogador();          // se tiver ocupada, a funcao chama a si msm
        
    }  
        
    update();         // atualiza a face
        
    Vencedor();         // chama a funcao q verifica se venceu ou nao
        
    return 0;
    }
    int jogador2(){
        
    update();           // ''
        
    printf("\t\t        Jogador 2: ");
        
    scanf("%i",&x);             // ''
        
    if(tab[x-1] == ' '){
            switch(
    x){
                case 
    1tab[0]='O'; break;
                case 
    2tab[1]='O'; break;
                case 
    3tab[2]='O'; break;   // ''
                
    case 4tab[3]='O'; break;
                case 
    5tab[4]='O'; break;
                case 
    6tab[5]='O'; break;
                case 
    7tab[6]='O'; break;
                case 
    8tab[7]='O'; break;
                case 
    9tab[8]='O'; break;
            }
        }else{
            
    jogador2();     // ''
        
    }
        
    update();        // ''
        
    Vencedor();          // ''
        
    return 0;
    }

    void update(){         // esta funcao gera a face do jogo
        
    system("clear");     //limpa a tela, OBS: no windows se usa system("cls");
        
    printf("\t\t  __________________________________________\n");
        
    printf("\t\t |              Jogo da Velha               |   \n");
        
    printf("\t\t |                                          |   \n");
        
    printf("\t\t |                                          |   \n");
        
    printf("\t\t |              %c  |   %c  |  %c              |\n",tab[0],tab[1],tab[2]);
        
    printf("\t\t |           ______|______|______           |   \n");
        
    printf("\t\t |              %c  |   %c  |  %c              |\n",tab[3],tab[4],tab[5]);
        
    printf("\t\t |           ______|______|______           |   \n");
        
    printf("\t\t |              %c  |   %c  |  %c              |\n",tab[6],tab[7],tab[8]);
        
    printf("\t\t |                 |      |                 |   \n");
        
    printf("\t\t |____                                  ____|   \n");
        
    }
    void novoJogo(){
        
    int i;
        for(
    0;i<9;i++){
            
    tab[i] = ' ';  // zera o tabuleiro
        
    }
        
    main(); // chama a funcao main
    }
    void Vencedor(){  // verifica todas as posibilidades de vitoria
           // Horizontais
        
    if(tab[0] == 'X' && tab[1]=='X' && tab[2] =='X' ||
           
    tab[3] == 'X' && tab[4]=='X' && tab[5] =='X' ||
           
    tab[6] == 'X' && tab[7]=='X' && tab[8] =='X' ||
           
    // Verticais
           
    tab[0] == 'X' && tab[3]=='X' && tab[6] =='X' ||
           
    tab[1] == 'X' && tab[4]=='X' && tab[7] =='X' ||
           
    tab[2] == 'X' && tab[5]=='X' && tab[8] =='X' ||
           
    // Diagonais
           
    tab[0] == 'X' && tab[4]=='X' && tab[8] =='X' ||
           
    tab[6] == 'X' && tab[4]=='X' && tab[2] =='X')
        { 
           
    // se algo for aceito...
           
    printf("\n\t\t  Jogador 1 ganhou :D     [Enter]Novo Jogo");
           
    getchar();getchar();novoJogo();  // espera um caracter e chama 
                                            // a funcao novoJogo     
        
    }
        if(
    tab[0] == 'O' && tab[1]=='O' && tab[2] =='O' ||
           
    tab[3] == 'O' && tab[4]=='O' && tab[5] =='O' ||
           
    tab[6] == 'O' && tab[7]=='O' && tab[8] =='O' ||

           
    tab[0] == 'O' && tab[3]=='O' && tab[6] =='O' ||
           
    tab[1] == 'O' && tab[4]=='O' && tab[7] =='O' ||
           
    tab[2] == 'O' && tab[5]=='O' && tab[8] =='O' ||

           
    tab[0] == 'O' && tab[4]=='O' && tab[8] =='O' ||
           
    tab[6] == 'O' && tab[4]=='O' && tab[2] =='O'){ 
           
    printf("\n\t\t  Jogador 2 ganhou :D     [Enter]Novo Jogo");
           
    getchar();getchar();novoJogo();
           
        }

    [/QUOTE]

    Comment


    • Font Size
      #3
      Legal, parabéns.
      O diabo sabe, não porque é sábio. O diabo sabe porque é velho.

      Skype: sophos.loko

      Não preciso de convite, já faço parte da elite

      Comment


      • Font Size
        #4
        Código PHP:
        #include <show.h> 

        Comment


        • Font Size
          #5
          Legal

          Muito interessante

          Comment


          • Font Size
            #6
            Maravilha

            CARA MUITO BOM SHOWWWWWW! PARABENS
            "Diante de uma larga frente de batalha, procure o ponto mais fraco e, alí, ataque com a sua maior força."
            Sun Tzu

            Comment

            X
            Working...
            X