Jogo da velha, para 2 jogadores, bem simples
Publicado por Samuel Macedo 06/10/2004
[ Hits: 23.697 ]
Este é um jogo da velha bem básico mesmo, para 2 jogadores, em C, que eu fiz bem rápido, em uns 15 minutos... Dá pra melhorar bastante coisa no código, principalmente na parte de checar se dá velha... É interessante p/ estudar matrizes.
#include <stdio.h>
int ctrl[3][3];
char imp[3][3];
int ctrlf(int l1,int c1,int l2,int c2)
{
    int cti,ctj,chp1=0,chp2=0,chv=0,cmp;
    --l1; --c1; --l2; --c2;
    ctrl[l1][c1] = 1; imp[l1][c1] = 'X';
    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;
 for(i=0;i<3;i++){
     for(j=0;j<3;j++){
        ctrl[i][j] = 0;
        imp[i][j] = '*';
     }
 }
 do{
    impjogo();
    printf("==Jogador 1==\n");
    printf("Linha: ");
    scanf("%d",&j1l);
    printf("Coluna: ");
    scanf("%d",&j1c);
    printf("==Jogador 2==\n");
    printf("Linha: ");
    scanf("%d",&j2l);
    printf("Coluna: ");
    scanf("%d",&j2c);
    result =  ctrlf(j1l,j1c,j2l,j2c);
 }while(result == 0);
 impjogo();
 if (result == 1){
    puts("JOGADOR 1 GANHOU");
 }
 if (result == 2){
    puts("JOGADOR 2 GANHOU");
 }
 if (result == 3){
    puts("VELHA...");
 }
 return 1;
}
main()
{
  while(central()==0){
  }
}
Calcular pagamento com a menor quantidade de cédulas possível
Calculo de Área e Diametro do circulo
Converte Farenheit para Celsius
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Instalação dualboot Windows 11 e Debian 13 (0)
Programa fora de escala na tela do pc (33)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









