Ir ao conteúdo
  • Cadastre-se

jogo da velha


devair1010

Posts recomendados

 olá galera, meu professor de lógica de programação pediu para fazer um programa de jogo da velha, para jogar contra o computador .   então fiz esse código mas está dando um monte de erros e não estou conseguindo descobrir onde e qual é o erro .   por favor será que alguém pode ajudar ? Agradeço desde já. 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <windows.h>
int vet [4][4];
int vet2[4][4];
int i,j,a,b,g,h,r,k,w,f;
int qg,vjc,qjp,cg,vg;
int ja[11][7]={{126, 32, 32, 32, 33, 18, 12}, /* letra J*/
               { 28, 34, 65, 65, 65, 34, 28}, /* letra O*/
               { 60, 66,  1,  1,113, 98, 92}, /* letra G*/
               { 28, 34, 65, 65, 65, 34, 28}, /* letra O*/
               { 31, 33, 65, 65, 65, 33, 31}, /* letra D*/
               { 28, 34, 65, 65,127, 65, 65}, /* letra A*/
               { 65, 65, 65, 34, 34, 20,  8}, /* letra V*/
               { 63,  1,  1, 31,  1,  1, 63}, /* letra E*/
               {  1,  1,  1,  1,  1,  1,127}, /* letra L*/
               { 65, 65, 65,127, 65, 65, 65}, /* letra H*/
               { 28, 34, 65, 65,127, 65, 65}};/* letra A*/
char c[5];
void gotoxy(int x, int y){
  COORD c;
  c.X = x;
  c.Y = y;
  SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
void desenha(int vt){
    gotoxy(71,4) ;printf(" ///"  );
    gotoxy(71,5) ;printf("(. .)" );
    gotoxy(72,6) ;printf(" -"    );
    gotoxy(72,18);printf("%c",184);
    gotoxy(0,0)  ;printf("\n\n"  );
    printf("        1   2   3\n" );
    printf("        %c   %c   %c\n\n",31,31,31);
    for(i=1;i<4;i++){
        if(i==1){printf(" A -%c  ",16);}
        else{
            if(i==2){printf(" B -%c  ",16);}
            else{
                printf(" C -%c  ",16);
            }
        }
        for(j=1;j<4;j++){
            if(vt==1){
                if(vet[i][j]==1){if(vjc==1){printf(" O ");}else{printf(" X ");}}
            else{
                if(vet[i][j]==2){if(vjc==2){printf(" O ");}else{printf(" X ");}}
                else{printf("   ");}
            }}
            else{
                if(vet2[i][j]==1){if(vjc==1){printf(" O ");}else{printf(" X ");}}
            else{
                if(vet2[i][j]==2){if(vjc==2){printf(" O ");}else{printf(" X ");}}
                else{printf("   ");}
            }}
            if(j==3){printf("\n");}
            if(j<3){printf("|");}
        }
        if(i<3){printf("       -----------\n");}
    }
    printf("                                          Vit%crias Do Computador ------> %d\n",224,cg);
    printf("                                          Vit%crias Do Jogador Humano --> %d\n",224,vg);
}
int inicio(int tp){
    c[0]='p';
    if(tp==1){printf("\nVoc%c Quer Jogar Mais Uma Partida ?   S/N ",136);gets(c);goto l6;}
    do{
        desenha(2);
        if(tp==2){printf("\nO Computador Ganhou Essa Partida");}
        if(tp==3){printf("\nVoc%c Ganhou Essa Partida ",136);}
        printf("\nVoc%c Quer Jogar Mais Uma Partida ?       S / N ",136);
        for(f=0;f<100000;f++){for(k=0;k<3000;k++);}
        desenha(1);
        if(tp==2){printf("\nO Computador Ganhou Essa Partida");}
        if(tp==3){printf("\nVoc%c Ganhou Essa Partida ",136);}
        printf("\nVoc%c Quer Jogar Mais Uma Partida ?       S / N ",136);
        for(f=0;f<100000;f++){for(k=0;k<1000;k++);}
        if(kbhit()){gets(c);}
    }while(c[0]!='s'&&c[0]!='n');
    l6:
    k=0;
    if(c[0]=='n'){k=27;}
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            vet[i][j]=0;
        }
    }
    system("cls");
    desenha(1);
    return k;
}
int verifica_se_ganhou(int g,int h){
    for(i=1;i<4;i++){for(j=1;j<4;j++){vet2[i][j]=vet[i][j];}}
    if(vet[1][1]==h&&vet[1][2]==h&&vet[1][3]==h){g=1;vet2[1][1]=3;vet2[1][2]=3;vet2[1][3]=3;}
    if(vet[2][1]==h&&vet[2][2]==h&&vet[2][3]==h){g=1;vet2[2][1]=3;vet2[2][2]=3;vet2[2][3]=3;}
    if(vet[3][1]==h&&vet[3][2]==h&&vet[3][3]==h){g=1;vet2[3][1]=3;vet2[3][2]=3;vet2[3][3]=3;}
    if(vet[1][1]==h&&vet[2][1]==h&&vet[3][1]==h){g=1;vet2[1][1]=3;vet2[2][1]=3;vet2[3][1]=3;}
    if(vet[1][2]==h&&vet[2][2]==h&&vet[3][2]==h){g=1;vet2[1][2]=3;vet2[2][2]=3;vet2[3][2]=3;}
    if(vet[1][3]==h&&vet[2][3]==h&&vet[3][3]==h){g=1;vet2[1][3]=3;vet2[2][2]=3;vet2[3][3]=3;}
    if(vet[1][1]==h&&vet[2][2]==h&&vet[3][3]==h){g=1;vet2[1][1]=3;vet2[2][2]=3;vet2[3][3]=3;}
    if(vet[1][3]==h&&vet[2][2]==h&&vet[3][1]==h){g=1;vet2[1][3]=3;vet2[2][2]=3;vet2[3][1]=3;}
    return g;
}

void marca(){/*para jogar com X ou O */
    l7:
    gotoxy(23,22);
    printf("Voc%c Quer Jogar Com   X  ou  O ",136);
    scanf("%s",&c[0]);
    if((c[0]!='x' && c[0]!='X') && (c[0]!='o' && c[0]!='O')){goto l7;}
    if(c[0] =='x'|| c[0] =='X'){vjc=1;}/*voce joga com */
    if(c[0] =='o'|| c[0] =='O'){vjc=2;}
}
int tela(){
    int y1=5,x1=23,y2=y1;
    for(i=0;i<11;i++){
        if(i==4){y1=13;x1=10;y2=y1;}
        if(i==6){y1=13;x1=30;y2=y1;}
        for(j=0;j<7;j++){
            gotoxy(x1,y1);
            a=ja[i][j];
            for(b=0;b<7;b++){
                if(a % 2 != 0){printf("%c",219);}else{printf(" ");}
                a=a/2;
            }
            y1++;
        }
        x1=x1+8;
        y1=y2;
    }
    printf(" %c",169);
    gotoxy(5,1);printf("%c",201);
    for(i=2;i<23;i++){
        gotoxy(5,i) ;printf("%c",186);
        gotoxy(72,i);printf("%c",186);
    }
    for(i=6;i<72;i++){
        gotoxy(i,1) ;printf("%c",205);
        gotoxy(i,23);printf("%c",205);
        gotoxy(i,21);printf("%c",205);
    }
    gotoxy(72,1) ;printf("%c",187);
    gotoxy(72,23);printf("%c",188);
    gotoxy(5,23) ;printf("%c",200);
    gotoxy(5,21) ;printf("%c",204);
    gotoxy(72,21);printf("%c",185);
    gotoxy(66,3) ;printf("%c%c%c",92,92,92);
    gotoxy(66,4) ;printf("(. .)" );
    gotoxy(66,5) ;printf("  -"   );
    return 0;
}
int main(){
    tela();
    qjp=1;
    marca();
    do{
        l1:
        system("cls");
        desenha(1);
        printf("\nDigite   A B C   p/ Linha");
        printf("\nDigite   1 2 3   p/ Coluna  < ou  S para Parar >");
        gotoxy(10,16);printf("%c%c%c%c%c%c",201,205,205,205,205,187);
        gotoxy(10,20);printf("%c%c%c%c%c%c",200,205,205,205,205,188);
        gotoxy(10,17);printf("%c    %c"    ,186,186                );
        gotoxy(10,18);printf("%c    %c"    ,186,186                );
        gotoxy(10,19);printf("%c    %c"    ,186,186);gotoxy(12,18  );
        fflush(stdin);
        gets(c);
        if(c[0]=='a' || c[0]=='A'){a=1;}
        if(c[0]=='b' || c[0]=='B'){a=2;}
        if(c[0]=='c' || c[0]=='C'){a=3;}
        if(c[1]=='1'){b=1;}
        if(c[1]=='2'){b=2;}
        if(c[1]=='3'){b=3;}
        if(c[0]=='s'||c[0]=='S'){printf("\n\n");break;}
        if(strlen (c) > 2){      printf("\n\n\nS%c Pode Ser Duas Coordenadas   >>> Tecle <<<",224);getch();goto l1;}
        if(vet[a][b] != 0){       printf("\n\n\nEsta Posi%c%co Est%c Ocupada   >>> Tecle <<<",135,198,160);getch();goto l1;}
        if(c[0]!='a'&&c[0]!='b'&&c[0]!='c'){printf("\n\n\nS%c Pode Ser A B C   >>> Tecle <<<",224);getch();goto l1;}
        if(c[1]!='1'&&c[1]!='2'&&c[1]!='3'){printf("\n\n\nS%c Pode Ser 1 2 3   >>> Tecle <<<",224);getch();goto l1;}
        vet[a][b] = 2;/*voce joga*/
        system("cls");
        desenha(1);
        g = 0; h = 2; qg = 0;/* 2 é humano*/
        r=verifica_se_ganhou(g,h);/*se r=1 então humano ganhou*/
        system("cls");
        desenha(1);
        if(r == 1){printf("\nVoc%c Ganhou Essa Partida ",136);vg++;k=inicio(3);qg=1;}
        if(k == 27){goto l5;}else{if(r==1){marca();}}

        l5:
        if(k!=27){}
    }while(k!=27);
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

    olá galera, consegui terminar o jogo da velha, fiz uma IA baseada no minimax e parece que ficou boa mas teria como melhorar alguma coisa ?

aqui está  código :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <windows.h>
int vet [4][4];
int vet2[4][4];
int i,j,a,b,g,h,r,k,w,f;
int vg,cg,qg,qjp,f,e,m,vjc;
int ja[11][7]={{126, 32, 32, 32, 33, 18, 12}, /* letra J*/
               { 28, 34, 65, 65, 65, 34, 28}, /* letra O*/
               { 60, 66,  1,  1,113, 98, 92}, /* letra G*/
               { 28, 34, 65, 65, 65, 34, 28}, /* letra O*/
               { 31, 33, 65, 65, 65, 33, 31}, /* letra D*/
               { 28, 34, 65, 65,127, 65, 65}, /* letra A*/
               { 65, 65, 65, 34, 34, 20,  8}, /* letra V*/
               { 63,  1,  1, 31,  1,  1, 63}, /* letra E*/
               {  1,  1,  1,  1,  1,  1,127}, /* letra L*/
               { 65, 65, 65,127, 65, 65, 65}, /* letra H*/
               { 28, 34, 65, 65,127, 65, 65}};/* letra A*/
char c[5];
void gotoxy(int x, int y){
  COORD c;
  c.X = x;
  c.Y = y;
  SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
void desenha(int vt){
    gotoxy(71,4) ;printf(" ///"  );
    gotoxy(71,5) ;printf("(. .)" );
    gotoxy(72,6) ;printf(" -"    );
    gotoxy(72,18);printf("%c",184);
    gotoxy(0,0)  ;printf("\n\n"  );
    printf("        1   2   3\n" );
    printf("        %c   %c   %c\n\n",31,31,31);
    for(i=1;i<4;i++){
        if(i==1){printf(" A -%c  ",16);}
        else{
            if(i==2){printf(" B -%c  ",16);}
            else{
                printf(" C -%c  ",16);
            }
        }
        for(j=1;j<4;j++){
            if(vt==1){
                if(vet[i][j]==1){if(vjc==1){printf(" O ");}else{printf(" X ");}}
            else{
                if(vet[i][j]==2){if(vjc==2){printf(" O ");}else{printf(" X ");}}
                else{printf("   ");}
            }}
            else{
                if(vet2[i][j]==1){if(vjc==1){printf(" O ");}else{printf(" X ");}}
            else{
                if(vet2[i][j]==2){if(vjc==2){printf(" O ");}else{printf(" X ");}}
                else{printf("   ");}
            }}
            if(j==3){printf("\n");}
            if(j<3){printf("|");}
        }
        if(i<3){printf("       -----------\n");}
    }
    printf("                                          Vit%crias Do Computador ------> %d\n",224,cg);
    printf("                                          Vit%crias Do Jogador Humano --> %d\n",224,vg);
}
int verifica_se_ganhou(int g,int h){
    for(i=1;i<4;i++){for(j=1;j<4;j++){vet2[i][j]=vet[i][j];}}
    if(vet[1][1]==h&&vet[1][2]==h&&vet[1][3]==h){g=1;vet2[1][1]=3;vet2[1][2]=3;vet2[1][3]=3;}
    if(vet[2][1]==h&&vet[2][2]==h&&vet[2][3]==h){g=1;vet2[2][1]=3;vet2[2][2]=3;vet2[2][3]=3;}
    if(vet[3][1]==h&&vet[3][2]==h&&vet[3][3]==h){g=1;vet2[3][1]=3;vet2[3][2]=3;vet2[3][3]=3;}
    if(vet[1][1]==h&&vet[2][1]==h&&vet[3][1]==h){g=1;vet2[1][1]=3;vet2[2][1]=3;vet2[3][1]=3;}
    if(vet[1][2]==h&&vet[2][2]==h&&vet[3][2]==h){g=1;vet2[1][2]=3;vet2[2][2]=3;vet2[3][2]=3;}
    if(vet[1][3]==h&&vet[2][3]==h&&vet[3][3]==h){g=1;vet2[1][3]=3;vet2[2][2]=3;vet2[3][3]=3;}
    if(vet[1][1]==h&&vet[2][2]==h&&vet[3][3]==h){g=1;vet2[1][1]=3;vet2[2][2]=3;vet2[3][3]=3;}
    if(vet[1][3]==h&&vet[2][2]==h&&vet[3][1]==h){g=1;vet2[1][3]=3;vet2[2][2]=3;vet2[3][1]=3;}
    return g;
}
int inicio(int tp){
    c[0]='p';
    if(tp==1){printf("\nVoc%c Quer Jogar Mais Uma Partida ?   S/N ",136);gets(c);goto l6;}
    do{
        desenha(2);
        if(tp==2){printf("\nO Computador Ganhou Essa Partida");}
        if(tp==3){printf("\nVoc%c Ganhou Essa Partida ",136);}
        printf("\nVoc%c Quer Jogar Mais Uma Partida ?       S / N ",136);
        for(f=0;f<100000;f++){for(k=0;k<3000;k++);}
        desenha(1);
        if(tp==2){printf("\nO Computador Ganhou Essa Partida");}
        if(tp==3){printf("\nVoc%c Ganhou Essa Partida ",136);}
        printf("\nVoc%c Quer Jogar Mais Uma Partida ?       S / N ",136);
        for(f=0;f<100000;f++){for(k=0;k<1000;k++);}
        if(kbhit()){gets(c);}
    }while(c[0]!='s'&&c[0]!='n');
    l6:
    k=0;
    if(c[0]=='n'){k=27;}
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            vet[i][j]=0;
        }
    }
    system("cls");
    desenha(1);
    return k;
}
int raciocinio(int p){
    if(vet[2][2]==0){vet[2][2]=1;return 1;}
    if(vet[2][2]==p){if(vet[1][1]==p){if(vet[3][3]==0){vet[3][3]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[1][2]==p){if(vet[3][2]==0){vet[3][2]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[1][3]==p){if(vet[3][1]==0){vet[3][1]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[2][3]==p){if(vet[2][1]==0){vet[2][1]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[3][3]==p){if(vet[1][1]==0){vet[1][1]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[3][2]==p){if(vet[1][2]==0){vet[1][2]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[3][1]==p){if(vet[1][3]==0){vet[1][3]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[2][1]==p){if(vet[2][3]==0){vet[2][3]=1;return 1;}}}
    if(vet[1][1]==p){if(vet[1][2]==p){if(vet[1][3]==0){vet[1][3]=1;return 1;}}}
    if(vet[1][1]==p){if(vet[2][1]==p){if(vet[3][1]==0){vet[3][1]=1;return 1;}}}
    if(vet[1][1]==p){if(vet[1][2]==p){if(vet[1][3]==0){vet[1][3]=1;return 1;}}}
    if(vet[1][1]==p){if(vet[1][3]==p){if(vet[1][1]==0){vet[1][1]=1;return 1;}}}
    if(vet[1][2]==p){if(vet[1][1]==p){if(vet[1][3]==0){vet[1][3]=1;return 1;}}}
    if(vet[1][2]==p){if(vet[1][3]==p){if(vet[1][1]==0){vet[1][1]=1;return 1;}}}
    if(vet[1][3]==p){if(vet[1][2]==p){if(vet[1][1]==0){vet[1][1]=1;return 1;}}}
    if(vet[1][3]==p){if(vet[1][1]==p){if(vet[1][2]==0){vet[1][2]=1;return 1;}}}
    if(vet[1][3]==p){if(vet[2][3]==p){if(vet[3][3]==0){vet[3][3]=1;return 1;}}}
    if(vet[1][3]==p){if(vet[2][1]==p){if(vet[2][3]==0){vet[2][3]=1;return 1;}}}
    if(vet[2][3]==p){if(vet[1][3]==p){if(vet[3][3]==0){vet[3][3]=1;return 1;}}}
    if(vet[2][3]==p){if(vet[3][3]==p){if(vet[1][3]==0){vet[1][3]=1;return 1;}}}
    if(vet[3][3]==p){if(vet[2][3]==p){if(vet[1][3]==0){vet[1][3]=1;return 1;}}}
    if(vet[3][3]==p){if(vet[1][3]==p){if(vet[2][3]==0){vet[2][3]=1;return 1;}}}
    if(vet[3][3]==p){if(vet[3][2]==p){if(vet[3][1]==0){vet[3][1]=1;return 1;}}}
    if(vet[3][3]==p){if(vet[3][1]==p){if(vet[3][2]==0){vet[3][2]=1;return 1;}}}
    if(vet[3][2]==p){if(vet[3][1]==p){if(vet[3][3]==0){vet[3][3]=1;return 1;}}}
    if(vet[3][2]==p){if(vet[3][3]==p){if(vet[3][1]==0){vet[3][1]=1;return 1;}}}
    if(vet[3][1]==p){if(vet[3][2]==p){if(vet[3][3]==0){vet[3][3]=1;return 1;}}}
    if(vet[3][1]==p){if(vet[3][3]==p){if(vet[3][1]==0){vet[3][1]=1;return 1;}}}
    if(vet[3][1]==p){if(vet[2][1]==p){if(vet[1][1]==0){vet[1][1]=1;return 1;}}}
    if(vet[3][1]==p){if(vet[1][1]==p){if(vet[2][1]==0){vet[2][1]=1;return 1;}}}
    if(vet[2][1]==p){if(vet[1][1]==p){if(vet[3][1]==0){vet[3][1]=1;return 1;}}}
    if(vet[2][1]==p){if(vet[3][1]==p){if(vet[1][1]==0){vet[1][1]=1;return 1;}}}
    return 0;
}
int computador_joga(){
    printf("\nO Computador Est%c Pensando ",160);
    for(m=0;m<10;m++){
        printf(".");
        for(f=0;f<10000;f++){
            for(e=0;e<30000;e++);
        }
    }
    printf("!");
    for(f=0;f<10000;f++){for(e=0;e<9000;e++){;}}
    r=raciocinio(1);/*se for 1 então computador achou lugar para joggar*/
    if(r==1){return 0;}
    r=raciocinio(2);
    if(r==1){return 0;}
    if(vet[1][1]==0){vet[1][1]=1;return 0;}
    if(vet[1][3]==0){vet[1][3]=1;return 0;}
    if(vet[3][3]==0){vet[3][3]=1;return 0;}
    if(vet[3][1]==0){vet[3][1]=1;return 0;}
    if(vet[1][2]==0){vet[1][2]=1;return 0;}
    if(vet[2][3]==0){vet[2][3]=1;return 0;}
    if(vet[3][2]==0){vet[3][2]=1;return 0;}
    if(vet[2][1]==0){vet[2][1]=1;return 0;}
    return 1;
}
int verifica_se_empatou(){
    int w=0;
    for(f=1;f<4;f++){
        for(e=1;e<4;e++){
            if(vet[f][e]==0){w=1;}
        }
    }
    return w;/*se w=0 então acabou a partida*/
}
void marca(){/*para jogar com X ou O */
    l7:
    gotoxy(23,22);
    printf("Voc%c Quer Jogar Com   X  ou  O ",136);
    scanf("%s",&c[0]);
    if((c[0]!='x' && c[0]!='X') && (c[0]!='o' && c[0]!='O')){goto l7;}
    if(c[0] =='x'|| c[0] =='X'){vjc=1;}/*voce joga com */
    if(c[0] =='o'|| c[0] =='O'){vjc=2;}
}
int tela(){
    int y1=5,x1=23,y2=y1;
    for(i=0;i<11;i++){
        if(i==4){y1=13;x1=10;y2=y1;}
        if(i==6){y1=13;x1=30;y2=y1;}
        for(j=0;j<7;j++){
            gotoxy(x1,y1);
            a=ja[i][j];
            for(b=0;b<7;b++){
                if(a % 2 != 0){printf("%c",219);}else{printf(" ");}
                a=a/2;
            }
            y1++;
        }
        x1=x1+8;
        y1=y2;
    }
    printf(" %c",169);
    gotoxy(5,1);printf("%c",201);/*╔*/
    for(i=2;i<23;i++){
        gotoxy(5,i) ;printf("%c",186);/*║*/
        gotoxy(72,i);printf("%c",186);
    }
    for(i=6;i<72;i++){
        gotoxy(i,1) ;printf("%c",205);/*═*/
        gotoxy(i,23);printf("%c",205);
        gotoxy(i,21);printf("%c",205);
    }
    gotoxy(72,1) ;printf("%c",187);/*╗*/
    gotoxy(72,23);printf("%c",188);/*╝*/
    gotoxy(5,23) ;printf("%c",200);/*╚*/
    gotoxy(5,21) ;printf("%c",204);
    gotoxy(72,21);printf("%c",185);
    gotoxy(66,3) ;printf("%c%c%c",92,92,92);
    gotoxy(66,4) ;printf("(. .)" );
    gotoxy(66,5) ;printf("  -"   );
    return 0;
}
int main(){
    tela();
    qjp=1;
    marca();
    do{
        l1:
        system("cls");
        desenha(1);
        printf("\nDigite   A B C   p/ Linha");
        printf("\nDigite   1 2 3   p/ Coluna  < ou  S para Parar >");
        gotoxy(10,16);printf("%c%c%c%c%c%c",201,205,205,205,205,187);
        gotoxy(10,20);printf("%c%c%c%c%c%c",200,205,205,205,205,188);
        gotoxy(10,17);printf("%c    %c"    ,186,186                );
        gotoxy(10,18);printf("%c    %c"    ,186,186                );
        gotoxy(10,19);printf("%c    %c"    ,186,186);gotoxy(12,18  );
        fflush(stdin);
        gets(c);
        if(c[0]=='a' || c[0]=='A'){a=1;}
        if(c[0]=='b' || c[0]=='B'){a=2;}
        if(c[0]=='c' || c[0]=='C'){a=3;}
        if(c[1]=='1'){b=1;}
        if(c[1]=='2'){b=2;}
        if(c[1]=='3'){b=3;}
        if(c[0]=='s'||c[0]=='S'){printf("\n\n");break;}
        if(strlen (c) > 2){      printf("\n\n\nS%c Pode Ser Duas Coordenadas   >>> Tecle <<<",224);getch();goto l1;}
        if(vet[a][b] != 0){       printf("\n\n\nEsta Posi%c%co Est%c Ocupada   >>> Tecle <<<",135,198,160);getch();goto l1;}
        if(c[0]!='a'&&c[0]!='b'&&c[0]!='c'){printf("\n\n\nS%c Pode Ser A B C   >>> Tecle <<<",224);getch();goto l1;}
        if(c[1]!='1'&&c[1]!='2'&&c[1]!='3'){printf("\n\n\nS%c Pode Ser 1 2 3   >>> Tecle <<<",224);getch();goto l1;}
        vet[a][b] = 2;/*voce joga*/
        system("cls");
        desenha(1);
        g = 0; h = 2; qg = 0;/* 2 é humano*/
        r=verifica_se_ganhou(g,h);/*se r=1 então humano ganhou*/
        system("cls");
        desenha(1);
        if(r == 1){printf("\nVoc%c Ganhou Essa Partida ",136);vg++;k=inicio(3);qg=1;}
        if(k == 27){goto l5;}else{if(r==1){marca();}}
        r=verifica_se_empatou();
        if(r == 0 && qg == 0 && k != 27){
            printf("\nEssa Partida Terminou Empatada   >>> Tecle <<<");
            getch();
            k = inicio(0);
            if(k == 27 ){goto l5;}else{if(r==0){marca();}}
            if(qjp == 1){qg=1;qjp=2;goto l3;}/*se for 1 é humano*/
            if(qjp == 2){qg=2;qjp=1;goto l4;}
        }
        l2:
        if(qg == 0){computador_joga();}
        system("cls");
        desenha(1);
        g= 0;h = 1;
        r=verifica_se_ganhou(g,h);desenha(1);/*se r=1 então computador ganhou*/
        if(r==1){printf("\nO Computador Ganhou Essa Partida ");cg++;;k=inicio(2);qg=2;}
        if(k==27){goto l5;}else{if(r==1){marca();}}
        l3:
        if(qg==1&&k!=27){qg=0;printf("\nO Computador Vai Iniciar A Partida   >>> Tecle <<<");getch();qjp=2;goto l2;}
        l4:
        if(qg==2){qg=0;printf("\nO Humano Vai Iniciar A Partida   >>> Tecle <<<");getch();qjp=1;goto l1;}
        r=verifica_se_empatou();
        if(r==0&&qg==0&&k!=27){
            printf("\nEssa Partida Terminou Empatada   >>> Tecle <<<");
            getch();
            k=inicio(0);
            if(k==27){goto l5;}
            if(qjp==1){qg=1;goto l3;}
            if(qjp==2){qg=2;goto l4;}
        }
        l5:
        if(k!=27){}
    }while(k!=27);
    return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

ficou legal. Agora você poderia repetir com uma interface =D.
Sobre se é possível melhorar não sei lhe dizer. possivelmente com o minimax o usuário nunca ganhe >_<. Talvez deveria ter um porcentagem de erros por parte do computador, si não ao menor descuido do jogador vitória do computador, e sem possibilidade de recuperar. =D Fazer com probabilidades. Tipo 95% de chances do computador jogar corretamente, etc. você até poderia basear a probabilidade da maquina na própria do jogador para não ficar chato. Tipo se o jogador comete 90% de jogadas corretas e 10% ruins, o computador poderia ter essas mesmas chances de vencer. Sei lá... praticamente são infinitas as melhoras que você pode fazer no seu programa.

adicionado 0 minutos depois

Ou inclusive ter nível de dificuldade.

adicionado 1 minuto depois

Mas ficou show o programa.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Hehe mas jogo da velha é assim mesmo, não lembra no filme Jogos de Guerra (clássico dos anos 80) que o personagem do Matthew Broderick fez o computador torrar jogando jogo da velha contra si mesmo e impedindo ele de lançar os misseis.

 

https://www.youtube.com/watch?v=F7qOV8xonfY

 

Ficou excelente o jogo cara, concordo com nosso amigo, realmente merece uma interface gráfica.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Benjamin Breeg      bom esse vídeo,  quanto a interface  não sei como implementar na linguagem c por que não sei como criar gráficos no c, pois se eu instalar a biblioteca graphic.h creio que até funciona, mas quem não tiver essa biblioteca instalada não conseguirá rodar o código.   aqui apenas modifiquei o código para que o jogador humano tenha mais chances de ganhar .

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <windows.h>
int vet [4][4];
int vet2[4][4];
int i,j,a,b,g,h,r,k,w,f;
int vg,cg,qg,qjp,f,e,m,vjc;
int ja[11][7]={{126, 32, 32, 32, 33, 18, 12}, /* letra J*/
               { 28, 34, 65, 65, 65, 34, 28}, /* letra O*/
               { 60, 66,  1,  1,113, 98, 92}, /* letra G*/
               { 28, 34, 65, 65, 65, 34, 28}, /* letra O*/
               { 31, 33, 65, 65, 65, 33, 31}, /* letra D*/
               { 28, 34, 65, 65,127, 65, 65}, /* letra A*/
               { 65, 65, 65, 34, 34, 20,  8}, /* letra V*/
               { 63,  1,  1, 31,  1,  1, 63}, /* letra E*/
               {  1,  1,  1,  1,  1,  1,127}, /* letra L*/
               { 65, 65, 65,127, 65, 65, 65}, /* letra H*/
               { 28, 34, 65, 65,127, 65, 65}};/* letra A*/
char c[5];
void gotoxy(int x, int y){
  COORD c;
  c.X = x;
  c.Y = y;
  SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
void desenha(int vt){
    gotoxy(71,4) ;printf(" ///"  );
    gotoxy(71,5) ;printf("(. .)" );
    gotoxy(72,6) ;printf(" -"    );
    gotoxy(72,18);printf("%c",184);
    gotoxy(0,0)  ;printf("\n\n"  );
    printf("        1   2   3\n" );
    printf("        %c   %c   %c\n\n",31,31,31);
    for(i=1;i<4;i++){
        if(i==1){printf(" A -%c  ",16);}
        else{
            if(i==2){printf(" B -%c  ",16);}
            else{
                printf(" C -%c  ",16);
            }
        }
        for(j=1;j<4;j++){
            if(vt==1){
                if(vet[i][j]==1){if(vjc==1){printf(" O ");}else{printf(" X ");}}
            else{
                if(vet[i][j]==2){if(vjc==2){printf(" O ");}else{printf(" X ");}}
                else{printf("   ");}
            }}
            else{
                if(vet2[i][j]==1){if(vjc==1){printf(" O ");}else{printf(" X ");}}
            else{
                if(vet2[i][j]==2){if(vjc==2){printf(" O ");}else{printf(" X ");}}
                else{printf("   ");}
            }}
            if(j==3){printf("\n");}
            if(j<3){printf("|");}
        }
        if(i<3){printf("       -----------\n");}
    }
    printf("                                          Vit%crias Do Computador ------> %d\n",224,cg);
    printf("                                          Vit%crias Do Jogador Humano --> %d\n",224,vg);
}
int verifica_se_ganhou(int g,int h){
    for(i=1;i<4;i++){for(j=1;j<4;j++){vet2[i][j]=vet[i][j];}}
    if(vet[1][1]==h&&vet[1][2]==h&&vet[1][3]==h){g=1;vet2[1][1]=3;vet2[1][2]=3;vet2[1][3]=3;}
    if(vet[2][1]==h&&vet[2][2]==h&&vet[2][3]==h){g=1;vet2[2][1]=3;vet2[2][2]=3;vet2[2][3]=3;}
    if(vet[3][1]==h&&vet[3][2]==h&&vet[3][3]==h){g=1;vet2[3][1]=3;vet2[3][2]=3;vet2[3][3]=3;}
    if(vet[1][1]==h&&vet[2][1]==h&&vet[3][1]==h){g=1;vet2[1][1]=3;vet2[2][1]=3;vet2[3][1]=3;}
    if(vet[1][2]==h&&vet[2][2]==h&&vet[3][2]==h){g=1;vet2[1][2]=3;vet2[2][2]=3;vet2[3][2]=3;}
    if(vet[1][3]==h&&vet[2][3]==h&&vet[3][3]==h){g=1;vet2[1][3]=3;vet2[2][2]=3;vet2[3][3]=3;}
    if(vet[1][1]==h&&vet[2][2]==h&&vet[3][3]==h){g=1;vet2[1][1]=3;vet2[2][2]=3;vet2[3][3]=3;}
    if(vet[1][3]==h&&vet[2][2]==h&&vet[3][1]==h){g=1;vet2[1][3]=3;vet2[2][2]=3;vet2[3][1]=3;}
    return g;
}
int inicio(int tp){
    c[0]='p';
    if(tp==1){printf("\nVoc%c Quer Jogar Mais Uma Partida ?   S/N ",136);gets(c);goto l6;}
    do{
        desenha(2);
        if(tp==2){printf("\nO Computador Ganhou Essa Partida");}
        if(tp==3){printf("\nVoc%c Ganhou Essa Partida ",136);}
        printf("\nVoc%c Quer Jogar Mais Uma Partida ?       S / N ",136);
        for(f=0;f<100000;f++){for(k=0;k<3000;k++);}
        desenha(1);
        if(tp==2){printf("\nO Computador Ganhou Essa Partida");}
        if(tp==3){printf("\nVoc%c Ganhou Essa Partida ",136);}
        printf("\nVoc%c Quer Jogar Mais Uma Partida ?       S / N ",136);
        for(f=0;f<100000;f++){for(k=0;k<1000;k++);}
        if(kbhit()){gets(c);}
    }while(c[0]!='s'&&c[0]!='n');
    l6:
    k=0;
    if(c[0]=='n'){k=27;}
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            vet[i][j]=0;
        }
    }
    system("cls");
    desenha(1);
    return k;
}
int raciocinio(int p){
    if(vet[2][2]==0){vet[2][2]=1;return 1;}
    srand(time(NULL));
    int as=rand()%100;
    if(as>50){
    if(vet[2][2]==p){if(vet[1][1]==p){if(vet[3][3]==0){vet[3][3]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[1][2]==p){if(vet[3][2]==0){vet[3][2]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[1][3]==p){if(vet[3][1]==0){vet[3][1]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[2][3]==p){if(vet[2][1]==0){vet[2][1]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[3][3]==p){if(vet[1][1]==0){vet[1][1]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[3][2]==p){if(vet[1][2]==0){vet[1][2]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[3][1]==p){if(vet[1][3]==0){vet[1][3]=1;return 1;}}}
    if(vet[2][2]==p){if(vet[2][1]==p){if(vet[2][3]==0){vet[2][3]=1;return 1;}}}
    if(vet[1][1]==p){if(vet[1][2]==p){if(vet[1][3]==0){vet[1][3]=1;return 1;}}}
    if(vet[1][1]==p){if(vet[2][1]==p){if(vet[3][1]==0){vet[3][1]=1;return 1;}}}
    if(vet[1][1]==p){if(vet[1][2]==p){if(vet[1][3]==0){vet[1][3]=1;return 1;}}}
    if(vet[1][1]==p){if(vet[1][3]==p){if(vet[1][1]==0){vet[1][1]=1;return 1;}}}
    if(vet[1][2]==p){if(vet[1][1]==p){if(vet[1][3]==0){vet[1][3]=1;return 1;}}}
    if(vet[1][2]==p){if(vet[1][3]==p){if(vet[1][1]==0){vet[1][1]=1;return 1;}}}
    if(vet[1][3]==p){if(vet[1][2]==p){if(vet[1][1]==0){vet[1][1]=1;return 1;}}}
    if(vet[1][3]==p){if(vet[1][1]==p){if(vet[1][2]==0){vet[1][2]=1;return 1;}}}
    if(vet[1][3]==p){if(vet[2][3]==p){if(vet[3][3]==0){vet[3][3]=1;return 1;}}}
    if(vet[1][3]==p){if(vet[2][1]==p){if(vet[2][3]==0){vet[2][3]=1;return 1;}}}
    if(vet[2][3]==p){if(vet[1][3]==p){if(vet[3][3]==0){vet[3][3]=1;return 1;}}}
    if(vet[2][3]==p){if(vet[3][3]==p){if(vet[1][3]==0){vet[1][3]=1;return 1;}}}
    if(vet[3][3]==p){if(vet[2][3]==p){if(vet[1][3]==0){vet[1][3]=1;return 1;}}}
    if(vet[3][3]==p){if(vet[1][3]==p){if(vet[2][3]==0){vet[2][3]=1;return 1;}}}
    if(vet[3][3]==p){if(vet[3][2]==p){if(vet[3][1]==0){vet[3][1]=1;return 1;}}}
    if(vet[3][3]==p){if(vet[3][1]==p){if(vet[3][2]==0){vet[3][2]=1;return 1;}}}
    if(vet[3][2]==p){if(vet[3][1]==p){if(vet[3][3]==0){vet[3][3]=1;return 1;}}}
    if(vet[3][2]==p){if(vet[3][3]==p){if(vet[3][1]==0){vet[3][1]=1;return 1;}}}
    if(vet[3][1]==p){if(vet[3][2]==p){if(vet[3][3]==0){vet[3][3]=1;return 1;}}}
    if(vet[3][1]==p){if(vet[3][3]==p){if(vet[3][1]==0){vet[3][1]=1;return 1;}}}
    if(vet[3][1]==p){if(vet[2][1]==p){if(vet[1][1]==0){vet[1][1]=1;return 1;}}}
    if(vet[3][1]==p){if(vet[1][1]==p){if(vet[2][1]==0){vet[2][1]=1;return 1;}}}
    if(vet[2][1]==p){if(vet[1][1]==p){if(vet[3][1]==0){vet[3][1]=1;return 1;}}}
    if(vet[2][1]==p){if(vet[3][1]==p){if(vet[1][1]==0){vet[1][1]=1;return 1;}}}
    }
    return 0;
}
int computador_joga(){
    printf("\nO Computador Est%c Pensando ",160);
    for(m=0;m<10;m++){
        printf(".");
        for(f=0;f<10000;f++){
            for(e=0;e<30000;e++);
        }
    }
    printf("!");
    for(f=0;f<10000;f++){for(e=0;e<9000;e++){;}}
    r=raciocinio(1);/*se for 1 então computador achou lugar para joggar*/
    if(r==1){return 0;}
    r=raciocinio(2);
    if(r==1){return 0;}
    if(vet[1][1]==0){vet[1][1]=1;return 0;}
    if(vet[1][3]==0){vet[1][3]=1;return 0;}
    if(vet[3][3]==0){vet[3][3]=1;return 0;}
    if(vet[3][1]==0){vet[3][1]=1;return 0;}
    if(vet[1][2]==0){vet[1][2]=1;return 0;}
    if(vet[2][3]==0){vet[2][3]=1;return 0;}
    if(vet[3][2]==0){vet[3][2]=1;return 0;}
    if(vet[2][1]==0){vet[2][1]=1;return 0;}
    return 1;
}
int verifica_se_empatou(){
    int w=0;
    for(f=1;f<4;f++){
        for(e=1;e<4;e++){
            if(vet[f][e]==0){w=1;}
        }
    }
    return w;/*se w=0 então acabou a partida*/
}
void marca(){/*para jogar com X ou O */
    l7:
    gotoxy(23,22);
    printf("Voc%c Quer Jogar Com   X  ou  O ",136);
    scanf("%s",&c[0]);
    if((c[0]!='x' && c[0]!='X') && (c[0]!='o' && c[0]!='O')){goto l7;}
    if(c[0] =='x'|| c[0] =='X'){vjc=1;}/*voce joga com */
    if(c[0] =='o'|| c[0] =='O'){vjc=2;}
}
int tela(){
    int y1=5,x1=23,y2=y1;
    for(i=0;i<11;i++){
        if(i==4){y1=13;x1=10;y2=y1;}
        if(i==6){y1=13;x1=30;y2=y1;}
        for(j=0;j<7;j++){
            gotoxy(x1,y1);
            a=ja[i][j];
            for(b=0;b<7;b++){
                if(a % 2 != 0){printf("%c",219);}else{printf(" ");}
                a=a/2;
            }
            y1++;
        }
        x1=x1+8;
        y1=y2;
    }
    printf(" %c",169);
    gotoxy(5,1);printf("%c",201);/*╔*/
    for(i=2;i<23;i++){
        gotoxy(5,i) ;printf("%c",186);/*║*/
        gotoxy(72,i);printf("%c",186);
    }
    for(i=6;i<72;i++){
        gotoxy(i,1) ;printf("%c",205);/*═*/
        gotoxy(i,23);printf("%c",205);
        gotoxy(i,21);printf("%c",205);
    }
    gotoxy(72,1) ;printf("%c",187);/*╗*/
    gotoxy(72,23);printf("%c",188);/*╝*/
    gotoxy(5,23) ;printf("%c",200);/*╚*/
    gotoxy(5,21) ;printf("%c",204);
    gotoxy(72,21);printf("%c",185);
    gotoxy(66,3) ;printf("%c%c%c",92,92,92);
    gotoxy(66,4) ;printf("(. .)" );
    gotoxy(66,5) ;printf("  -"   );
    return 0;
}
int main(){
    tela();
    qjp=1;
    marca();
    do{
        l1:
        system("cls");
        desenha(1);
        printf("\nDigite   A B C   p/ Linha");
        printf("\nDigite   1 2 3   p/ Coluna  < ou  S para Parar >");
        gotoxy(10,16);printf("%c%c%c%c%c%c",201,205,205,205,205,187);
        gotoxy(10,20);printf("%c%c%c%c%c%c",200,205,205,205,205,188);
        gotoxy(10,17);printf("%c    %c"    ,186,186                );
        gotoxy(10,18);printf("%c    %c"    ,186,186                );
        gotoxy(10,19);printf("%c    %c"    ,186,186);gotoxy(12,18  );
        fflush(stdin);
        gets(c);
        if(c[0]=='a' || c[0]=='A'){a=1;}
        if(c[0]=='b' || c[0]=='B'){a=2;}
        if(c[0]=='c' || c[0]=='C'){a=3;}
        if(c[1]=='1'){b=1;}
        if(c[1]=='2'){b=2;}
        if(c[1]=='3'){b=3;}
        if(c[0]=='s'||c[0]=='S'){printf("\n\n");break;}
        if(strlen (c) > 2){      printf("\n\n\nS%c Pode Ser Duas Coordenadas   >>> Tecle <<<",224);getch();goto l1;}
        if(vet[a][b] != 0){       printf("\n\n\nEsta Posi%c%co Est%c Ocupada   >>> Tecle <<<",135,198,160);getch();goto l1;}
        if(c[0]!='a'&&c[0]!='b'&&c[0]!='c'){printf("\n\n\nS%c Pode Ser A B C   >>> Tecle <<<",224);getch();goto l1;}
        if(c[1]!='1'&&c[1]!='2'&&c[1]!='3'){printf("\n\n\nS%c Pode Ser 1 2 3   >>> Tecle <<<",224);getch();goto l1;}
        vet[a][b] = 2;/*voce joga*/
        system("cls");
        desenha(1);
        g = 0; h = 2; qg = 0;/* 2 é humano*/
        r=verifica_se_ganhou(g,h);/*se r=1 então humano ganhou*/
        system("cls");
        desenha(1);
        if(r == 1){printf("\nVoc%c Ganhou Essa Partida ",136);vg++;k=inicio(3);qg=1;}
        if(k == 27){goto l5;}else{if(r==1){marca();}}
        r=verifica_se_empatou();
        if(r == 0 && qg == 0 && k != 27){
            printf("\nEssa Partida Terminou Empatada   >>> Tecle <<<");
            getch();
            k = inicio(0);
            if(k == 27 ){goto l5;}else{if(r==0){marca();}}
            if(qjp == 1){qg=1;qjp=2;goto l3;}/*se for 1 é humano*/
            if(qjp == 2){qg=2;qjp=1;goto l4;}
        }
        l2:
        if(qg == 0){computador_joga();}
        system("cls");
        desenha(1);
        g= 0;h = 1;
        r=verifica_se_ganhou(g,h);desenha(1);/*se r=1 então computador ganhou*/
        if(r==1){printf("\nO Computador Ganhou Essa Partida ");cg++;;k=inicio(2);qg=2;}
        if(k==27){goto l5;}else{if(r==1){marca();}}
        l3:
        if(qg==1&&k!=27){qg=0;printf("\nO Computador Vai Iniciar A Partida   >>> Tecle <<<");getch();qjp=2;goto l2;}
        l4:
        if(qg==2){qg=0;printf("\nO Humano Vai Iniciar A Partida   >>> Tecle <<<");getch();qjp=1;goto l1;}
        r=verifica_se_empatou();
        if(r==0&&qg==0&&k!=27){
            printf("\nEssa Partida Terminou Empatada   >>> Tecle <<<");
            getch();
            k=inicio(0);
            if(k==27){goto l5;}
            if(qjp==1){qg=1;goto l3;}
            if(qjp==2){qg=2;goto l4;}
        }
        l5:
        if(k!=27){}
    }while(k!=27);
    return 0;
}

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

É acho que para C seria legal aprender o SDL, eu também não entrei nessa parte de interfaces ainda, primeiro quero assimilar bem a linguagem C++, ai depois seguir nessa linha SDL ou Allegro, dizem que Allegro é mais fácil para quem esta começando.

 

Parabéns, ficou excelente, impressionante a velocidade que você conseguiu implementar o algoritmo minimax.

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Thyago Buch     para piscar coloquei um vetor, no caso, vet2 que armazena as posições da linha que venceu, e nesse vetor é copiado o vet1 deixando as posições da linha como zero, e então na hora que vence ele vai para a função inicio aí é colocado o conteúdo do vet1 e espera um pouco e em seguida é colocado o vet2 com isso dá  impressão de que está piscando .

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@vangodp    vi que se instalar a biblioteca graphic.h terá como fazer gráficos, porém só quem tiver essa biblioteca vai conseguir rodar o código por isso não estou querendo instalar ela não.  mas estou tentando usar  o modo windows  application  nele vi que usa uma janela do windows, então vou pesquisar sobre ele .

Link para o comentário
Compartilhar em outros sites

@devair1010 Acho que você se está complicando muito hsheusuhe. Use SFML2 que é bem fácil de usar. Tem exemplos na própria pagina e se pode lograr resultados muito bons com relativa facilidade.

adicionado 0 minutos depois

Se quiser ajuda para instalar e por para rodar posso lhe ajudar.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@devair1010 Sim... se pode dizer assim. Mas o certo é que você deve integrar ele em um projeto que dependendo do IDE varia. Digamos que você precisa configurar o IDE para trabalhar com SFML. Parra isso é que eu lhe prestaria ajuda, para configurar o IDE. No caso de que você use codeblocks, porque eu n4ao uso outros.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Mas acho que é justamente o que ele não quer, que a pessoa tenha que instalar e configurar uma API para desenvolver em cima do código pra fins educacionais que ele posta, se fosse para soltar o produto final ai não teria problema era só enviar o dll de execução e pronto. Realmente uma pena o C/C++ não terem uma biblioteca gráfica padrão mesmo que básica.

 

Achei bem legal essa SFML, achei os vídeos desse cara aqui ele demonstrou bem o que é possível fazer com ela.

 

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

14 minutos atrás, Benjamin Breeg disse:

Mas acho que é justamente o que ele não quer, que a pessoa tenha que instalar e configurar uma API para desenvolver em cima do código pra fins educacionais que ele posta

O dia em que C/C++ tenha uma biblioteca gráfica por padrão passará a se chamar Java ou c#. >_<

adicionado 4 minutos depois

SFML praticamente o que traz são um conjunto de classes que lhe ajudam a manejar gráficos, tempo, red, controles, sons, etc, etc, etc, tudo o que você precisa para fazer um jogo mediano, que na sua maioria abarca os 2D. Mas também pode usar 3D, só que neste ultimo caso acho que existe outras melhores para 3D.

adicionado 7 minutos depois

SFML é relativamente nova comparada com as outras semelhantes como SDL e Allegro porém está pegando uma força muito grande, sobre tudo aqui em europa, já que foi criada em França. Se seu linguagem é C++ e pensa em fazer gráficos 2D certamente SFML é a melhor opção.

Com fazer umas poucas coisas e comparar com SDL você verá que é muito mais fácil em relação a esta ultima.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...