Jump to content

Concepção do programa Mastermind


tiagoagm
 Share

Recommended Posts

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;
}
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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;
}
Link to comment
Share on other sites

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).

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.