tiagoagm Posted November 18, 2006 at 08:14 PM Report #65182 Posted November 18, 2006 at 08:14 PM oi peço ajuda na concepção em linguagem c e em pseudo código do jogo mastermind, o programa em c e em pseudo código tem d ser ou com matrizes ou com filas, mas gostava antes k fosse com matrizes pk filas n percebo mt 👍 .Agradeço mt td a ajuda possivel. Mt obrigada eu já fiz isto mas dá m erros estruturais alguem m pd ajudar, o problema é k eu n sei ond estão os erros n faço a mínima iedia msm, já corri o rpograma d abixo a cima e nd :S? #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int tentativas,flag2,contador,f,flag,i,j,o,k,l,lenghtcountaux[3],lenghtcountmat[3]; char car[2],mat[3][99],aux[3][99]; //leitura da chave printf("Digite a chave de 6 cores separada por espacos: "); for(i=0;i<=5;i++) { j=0; do { car[1]=getchar(); mat[i][j]=car[1]; j++; }while(car[1]!=' ' && car[1]!='\n'); lenghtcountmat[i]=j-1; } f=0; tentativas=0; do { contador=0; tentativas++; //leitura da tentativa printf("Digite a sequencia de 6 cores: "); for(i=0;i<=5;i++) { j=0; do { car[1]=getchar(); aux[i][j]=car[1]; j++; }while(car[1]!=' ' && car[1]!='\n'); lenghtcountaux[i]=j-1; } //verificar se corresponde for(i=0;i<=5;i++) { //se os tamanhos das palavras nao corresponderem nao vale a pena compara-las flag=0; if (lenghtcountmat[i]==lenghtcountaux[i]) { for(k=0;k<=lenghtcountmat[i]-1;k++) { if (mat[i][k]!=aux[i][k]) { k=lenghtcountmat[i]; flag=1; } } }else {flag=1;} //se forem iguais a flag esta a 0 entao tem d imprimir que esta no sitio certo if (flag==0 && lenghtcountmat[i]==lenghtcountaux[i]) { for(l=0;l<=lenghtcountmat[i]-1;l++) { printf("%c", mat[i][l]); } printf(" esta no sitio correcto\n"); contador++; } //se os tamanhos forem difrentes ou se as palavras tambem forem vai testar com todas as outras palavras if (flag==1) { for(o=0;o<=5;o++) { if (lenghtcountmat[o]==lenghtcountaux[i]) { flag=0; for(k=0;k<=lenghtcountmat[o]-1;k++) { if (mat[o][k]!=aux[i][k]) { flag2=1; flag=1; } } if (flag==0) { for(l=0;l<=lenghtcountaux[i]-1;l++) { printf("%c", aux[i][l]); } printf(" existe noutra posicao\n"); flag2=0; o=3; } }else if (lenghtcountmat[o]!=lenghtcountaux[i]) { flag2=1; } } } if (flag2==1) { for(l=0;l<=lenghtcountaux[i]-1;l++) { printf("%c", aux[i][l]); } printf(" nao existe\n"); flag2=0; } } }while (contador!=6); printf("PARABENS!! Numero de tentativas %d",tentativas); system("PAUSE"); return 0; }
Warrior Posted November 18, 2006 at 08:22 PM Report #65186 Posted November 18, 2006 at 08:22 PM Começas por gerar n (número de bolas) números aleatórios. De seguida, les k tentativas do utilizador. Para cada tentativa, tens que dar a resposta correcta (antes do utilizador inserir a tentativa seguinte) A resposta correcta é dada em função do número de números certos, na posição correcta, e de números correctos, mas em posição errada. Só não estou a perceber para que serve a matriz, visto o MasterMind se basear num só vector.. A menos que queiras guardar as tentativas anteriores.
tiagoagm Posted November 18, 2006 at 08:38 PM Author Report #65195 Posted November 18, 2006 at 08:38 PM A repetição d cores, o numero d cores, a dimensão da chave e o tal maximo d tentativas devem ser definidos á priori pelo utilizador.o computador deve gerar aleatoriamente a uma chave com n cores(representadas com letras), d um conjunto d M cores possiveis.Deverá ser possivel definir chaves com cores(letras) repetidas. O programa deverá ser implementado atraves d vectores bidimensionais alocados dinamicamente d acordo com a dimensão do tabuleiro.
Hipnoted Posted November 18, 2006 at 09:09 PM Report #65201 Posted November 18, 2006 at 09:09 PM Era escusado criar 2 tópicos não? "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
brink@ero Posted November 21, 2006 at 12:14 AM Report #65641 Posted November 21, 2006 at 12:14 AM Cortesia do Triton: [C] Ajuda: Jogo Mastermind Foco o site que fala dos algoritmos envolvidos no jogo wikipedia. Mantenho o tópico aberto para se falar unicamente em algoritmos envolvidos no jogo Mastermind!! Cumpr. bk@ero :ninja:
tiagoagm Posted November 23, 2006 at 04:14 PM Author Report #66195 Posted November 23, 2006 at 04:14 PM oi peço ajuda na concepção em linguagem c e em pseudo código do jogo mastermind, o programa em c e em pseudo código tem d ser ou com matrizes ou com filas, mas gostava antes k fosse com matrizes pk filas n percebo mt 😄 .Agradeço mt td a ajuda possivel. Mt obrigada eu já fiz isto mas dá m erros estruturais alguem m pd ajudar, o problema é k eu n sei ond estão os erros n faço a mínima iedia msm, já corri o rpograma d abixo a cima e nd :S? #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int tentativas,flag2,contador,f,flag,i,j,o,k,l,lenghtcountaux[3],lenghtcountmat[3]; char car[2],mat[3][99],aux[3][99]; //leitura da chave printf("Digite a chave de 6 cores separada por espacos: "); for(i=0;i<=5;i++) { j=0; do { car[1]=getchar(); mat[i][j]=car[1]; j++; }while(car[1]!=' ' && car[1]!='\n'); lenghtcountmat[i]=j-1; } f=0; tentativas=0; do { contador=0; tentativas++; //leitura da tentativa printf("Digite a sequencia de 6 cores: "); for(i=0;i<=5;i++) { j=0; do { car[1]=getchar(); aux[i][j]=car[1]; j++; }while(car[1]!=' ' && car[1]!='\n'); lenghtcountaux[i]=j-1; } //verificar se corresponde for(i=0;i<=5;i++) { //se os tamanhos das palavras nao corresponderem nao vale a pena compara-las flag=0; if (lenghtcountmat[i]==lenghtcountaux[i]) { for(k=0;k<=lenghtcountmat[i]-1;k++) { if (mat[i][k]!=aux[i][k]) { k=lenghtcountmat[i]; flag=1; } } }else {flag=1;} //se forem iguais a flag esta a 0 entao tem d imprimir que esta no sitio certo if (flag==0 && lenghtcountmat[i]==lenghtcountaux[i]) { for(l=0;l<=lenghtcountmat[i]-1;l++) { printf("%c", mat[i][l]); } printf(" esta no sitio correcto\n"); contador++; } //se os tamanhos forem difrentes ou se as palavras tambem forem vai testar com todas as outras palavras if (flag==1) { for(o=0;o<=5;o++) { if (lenghtcountmat[o]==lenghtcountaux[i]) { flag=0; for(k=0;k<=lenghtcountmat[o]-1;k++) { if (mat[o][k]!=aux[i][k]) { flag2=1; flag=1; } } if (flag==0) { for(l=0;l<=lenghtcountaux[i]-1;l++) { printf("%c", aux[i][l]); } printf(" existe noutra posicao\n"); flag2=0; o=3; } }else if (lenghtcountmat[o]!=lenghtcountaux[i]) { flag2=1; } } } if (flag2==1) { for(l=0;l<=lenghtcountaux[i]-1;l++) { printf("%c", aux[i][l]); } printf(" nao existe\n"); flag2=0; } } }while (contador!=6); printf("PARABENS!! Numero de tentativas %d",tentativas); system("PAUSE"); return 0; }
Saco Posted November 23, 2006 at 06:04 PM Report #66218 Posted November 23, 2006 at 06:04 PM Bom, para começar podes e deves usar a ferramenta GeSHi para meteres código... fica muito mais legível, com cores e tal... Tens apenas 2 erros mas que cometes várias vezes... mat[j] é um char[] enquanto que car[1] é um char, logo estás a atribuir um char[] a um char, o que obviamente dá erro. acontece mais ou menos a mesma coisa com o lengthcountmat e lengthcountaux que são ambos int[] e estás a tentar comparar com (e atribuir a) um int. ou seja o problema é que estás a juntar alhos (array de int e array de char) e bogalhos (int e char).
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now