How to stop receiving keyboard digits?

1

This is a game of memory and while the numbers are being displayed I want the user can not type.

**for (i=0;i<2;i++) //Exibe os números que estão no vetor numeros[]
                            {
                                printf ("%d\t", numeros[i]); //Mostra no ecrã
                            }
                            Sleep (1000); //Aguarda 1 segundo
                        }
                        while (j>0); //Esta sequência acontece até que o j seja maior do que 0

                        system ("cls"); // Limpa o ecrã
                        printf ("Que números foram exibidos? \n\n"); //Mostra no ecrã


                        for (i=0;i<2;i++)
                        {
                            printf ("\t%d° número: ", i+1); //Pede todos os números para o utilizador
                            scanf ("%d", &respostas[i]); //Recebe os números do utilizadorfor (i=0;i<2;i++) //Exibe os números que estão no vetor numeros[]
                            {
                                printf ("%d\t", numeros[i]); //Mostra no ecrã
                            }
                            Sleep (1000); //Aguarda 1 segundo
                        }
                        while (j>0); //Esta sequência acontece até que o j seja maior do que 0

                        system ("cls"); // Limpa o ecrã
                        printf ("Que números foram exibidos? \n\n"); //Mostra no ecrã


                        for (i=0;i<2;i++)
                        {
                            printf ("\t%d° número: ", i+1); //Pede todos os números para o utilizador
                            scanf ("%d", &respostas[i]); //Recebe os números do utilizador**
    
asked by anonymous 07.05.2018 / 17:54

2 answers

0

It's really a bit confusing, it would be nice if you put the rules of the game. I suggest you try something like this:

while(acertos != x)
//enquanto o usuario nao acertar todos os numeros o programa continua
{
   for (i=0;i<2;i++) //Exibe os números que estão no vetor numeros[]
   {
        printf ("%d\t", numeros[i]); //Mostra no ecrã
        Sleep (1000); //Aguarda 1 segundo
        system("cls");
   }

printf ("Que números foram exibidos? \n\n"); //Mostra no ecrã


for (i=0;i<2;i++)
{
    printf ("\t%d° número: ", i+1); //Pede todos os números para o utilizador
    scanf ("%d", &respostas[i]); //Recebe os números do utilizadorfor (i=0;i<2;i++) //Exibe os números que estão no vetor numeros[]
}
// voce pode colocar um if else, como não sei a regra do jogo não vou colocar,
//mas se for oq eu estou pensando, se o usuario acertar os numeros voce acrescenta no
//contador acertos++, caso errar voce mostra o os numeros novamente

}
    
07.05.2018 / 20:43
0

You can use the stty -echo and stty echo command in a system() call, where stty -echo disables the appearance of the keyboard entry, and stty echo is active back, as said in this post .

In your case just run the command before sleep, the code would look like this:

**for (i=0;i<2;i++) //Exibe os números que estão no vetor numeros[]
                            {
                                printf ("%d\t", numeros[i]); //Mostra no ecrã
                            }
                            system("stty -echo");
                            Sleep (1000); //Aguarda 1 segundo
                            system("stty echo");
                        }
                        while (j>0); //Esta sequência acontece até que o j seja maior do que 0

                        system ("cls"); // Limpa o ecrã
                        printf ("Que números foram exibidos? \n\n"); //Mostra no ecrã


                        for (i=0;i<2;i++)
                        {
                            printf ("\t%d° número: ", i+1); //Pede todos os números para o utilizador
                            scanf ("%d", &respostas[i]); //Recebe os números do utilizadorfor (i=0;i<2;i++) //Exibe os números que estão no vetor numeros[]
                            {
                                printf ("%d\t", numeros[i]); //Mostra no ecrã
                            }
                            system("stty -echo");
                            Sleep (1000); //Aguarda 1 segundo
                            system("stty echo");
                        }
                        while (j>0); //Esta sequência acontece até que o j seja maior do que 0

                        system ("cls"); // Limpa o ecrã
                        printf ("Que números foram exibidos? \n\n"); //Mostra no ecrã


                        for (i=0;i<2;i++)
                        {
                            printf ("\t%d° número: ", i+1); //Pede todos os números para o utilizador
                            scanf ("%d", &respostas[i]); //Recebe os números do utilizador**

This solution works for the Bash terminal (ubuntu default), if it is in a windows environment, you may need to adapt the command.

    
07.05.2018 / 23:16