How to stop receiving keystrokes?

Asked

Viewed 47 times

1

This is a memory game and while the numbers are playing I want the user not to be able to 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**
  • To be honest, your question is very confusing. Don’t you have a console print to illustrate what you want? Anyway, I think maybe I can solve it by using a boolean type variable to determine whether or not you can ask the user for numbers.. is a way.

  • My program generates numbers and these numbers will appear for x time for the user to memorize. Next the user needs to say which numbers have been shown. Now the problem is that the user can type the answers while the numbers are being shown.

2 answers

0

You can use the command stty -echo and stty echo on a call from system(), where stty -echo disables keyboard input, and stty echo and active back, as said in this post.

In your case just run the command before the 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 standard ), if you are in a windows environment, you may need to adapt the command.

0

Really this kind of confusing, it would be nice if Voce put the rules of the game. I suggest you try to do something about it:

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

}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.