Jogo da velha melhorado

Publicado por Samuel Macedo 13/10/2004

[ Hits: 7.664 ]

Download jogo_da_velha2.c




Versão melhorada do jogo da velha que eu postei ha alguns dias atrás...

  



Esconder código-fonte

#include <stdio.h>

int ctrl[3][3];
char imp[3][3];
int ctrlf(int l1,int c1,int l2,int c2,int param)
{
    int cti,ctj,chp1=0,chp2=0,chv=0,cmp,ctvelha=0;
    if ( param == 1 ){
    --l1; --c1;
    if(ctrl[l1][c1]!= 0) return 5;
    ctrl[l1][c1] = 1; imp[l1][c1] = 'X';
    }
    else{
    --l2; --c2;
    if(ctrl[l2][c2]!= 0) return 5;
    ctrl[l2][c2] = 2; imp[l2][c2] = 'O';
    }

    for(cti=0;cti<3;cti++){
        for(ctj=0;ctj<3;ctj++){
            if(ctrl[cti][ctj] == 1){
               ++chp1;
            }
            if(ctrl[cti][ctj] == 2){
               ++chp2;
            }
            if(ctrl[cti][ctj] == 0){
               chv = 1;
            }
        }
        if (chp1 == 3)
            return 1;
        if (chp2 == 3)
            return 2;
        chp1 = 0;
        chp2 = 0;
    }//checagem linha

    for(cti=0;cti<3;cti++){
        for(ctj=0;ctj<3;ctj++){
            if(ctrl[ctj][cti] == 1){
               ++chp1;
            }
            if(ctrl[ctj][cti] == 2){
               ++chp2;
            }
        }
        if (chp1 == 3)
            return 1;
        if (chp2 == 3)
            return 2;
        chp1 = 0;
        chp2 = 0;
    }//checagem coluna

    for(cti = 0;cti<3;cti++){
            if(ctrl[cti][cti] == 1){
               ++chp1;
            }
            if(ctrl[cti][cti] == 2){
               ++chp2;
            }
    }
    if (chp1 == 3)
            return 1;
    if (chp2 == 3)
            return 2;
    chp1 = 0;
    chp2 = 0;
    // checagem diag. principal

    for(cti=0;cti<3;cti++){
        for(ctj=0;ctj<3;ctj++){
            if(cti + ctj == 2){
            if(ctrl[cti][ctj] == 1){
               ++chp1;
            }
            if(ctrl[cti][ctj] == 2){
               ++chp2;
            }
            }
        }
    }
    if (chp1 == 3)
            return 1;
    if (chp2 == 3)
            return 2;
        chp1 = 0;
        chp2 = 0;
    //checagem diag. sec.



 if (chv == 0){
     return 3;
 }


return 0;


}

impjogo()
{

 int impi, impj;
  system("clear");
 for(impi=0;impi<3;impi++){
    for(impj=0;impj<3;impj++){
       printf("%c ",imp[impi][impj]);
    }
    printf("\n");
 }
}

int central()
{
 int i,j,j1l,j1c,j2l,j2c,result,param,perg;
 for(i=0;i<3;i++){
     for(j=0;j<3;j++){
        ctrl[i][j] = 0;
        imp[i][j] = '*';
     }
 }
 do{
    do{
       impjogo();
       if (result == 5)
           puts("Posicao ja ocupada! Jogue novamente:");
       printf("==Jogador 1==\n");
       do{
       printf("Linha: ");
       scanf("%d",&j1l);
       if(j1l>3||j1l<1){
          puts("Nao existe essa linha!");
          puts("Digita de novo, animal:");
          }
      }while(j1l>3||j1l<1);
       do{
       printf("Coluna: ");
       scanf("%d",&j1c);
           if(j1c>3||j1c<1){
           puts("Nao existe essa coluna!");
           puts("Digita de novo, animal:");
           }
       }while(j1c>3||j1c<1);
       result = ctrlf(j1l,j1c,j2l,j2c,1);
       if ( result != 0 && result != 5)
          break;
          }while(result==5);
    do{
    impjogo();
     if (result == 5)
           puts("Posicao ja ocupada! Jogue novamente:");
    printf("==Jogador 2==\n");
    do{
    printf("Linha: ");
    scanf("%d",&j2l);
    if(j2l>3||j2l<1){
       puts("Nao existe essa linha!");
       puts("Digita de novo, animal:");
       }
    }while(j2l>3||j2l<1);
    do{
    printf("Coluna: ");
    scanf("%d",&j2c);
        if(j2c>3||j2c<1){
       puts("Nao existe essa coluna!");
       puts("Digita de novo, animal:");
       }
    }while(j2c>3||j2c<1);
    result =  ctrlf(j1l,j1c,j2l,j2c,2);
    }while(result==5);
 }while(result == 0);
 impjogo();
 if (result == 1){
    puts("JOGADOR 1 GANHOU");
 }
 if (result == 2){
    puts("JOGADOR 2 GANHOU");
 }
 if (result == 3){
    puts("VELHA...");
 }
 puts("Jogar novamente? ( 0 - Sim / qualquer outra tecla - Nao )");
     scanf("%d",&perg);
     return perg;
}

main()
{
  while(central()==0){
  }
}


Scripts recomendados

clean.h - Biblioteca para limpar um determinado espaço no terminal

Simulador de Cronômetro com 2 digitos

Calculadora simples em C

Verificando se um número é primo.

Sopa de Letras


  

Comentários
[1] Comentário enviado por engos em 14/10/2004 - 10:55h

Poucos detalhes mudaram, mas ficou bem melhor.

Parabéns!

[2] Comentário enviado por vir0se em 15/10/2004 - 05:33h

ficou bem legal agora... parabéns ae ! ;)

[3] Comentário enviado por carlosramos1 em 08/06/2008 - 18:40h

estou precisando de um jogo da velha em c# sou novo na área e meu professor quer um exercicio assim se alguem tiver algum emxemplo bem simples só pra mim ter uma base do código fonte!
seria muito grato.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts