jonsmau Posted April 2, 2012 at 11:25 AM Report #447033 Posted April 2, 2012 at 11:25 AM Olá pessoal, Puseram-me uma dúvida e eu não soube responder. É o seguinte: Existe algum comando que espere por um input do utilizador (apenas por apenas 1 tecla e não até o '\n'), sem interromper a execução do código? O objectivo seria fazer o jogo da snake, em que num ciclo (entre outras coisas) se verificava se alguma das teclas de direcionamento tinham sido carregadas. Por exemplo, tanto o getchar() como o scanf, pausam o programa e esperam por um '\n'? Espero que tenham compreendido a dúvida e obrigado. Cumprimentos. 😛
pmg Posted April 2, 2012 at 11:30 AM Report #447035 Posted April 2, 2012 at 11:30 AM A solução mais prática é usares ncurses. O que acontece é que, quando um programa em C começa, o stdin (o teclado) é ligado a um buffer. As teclas vão entrando nesse buffer, mas o programa só as vê quando o buffer fica cheio ou quando esse buffer é despejado automáticamente ao receber um '\n'. Podes tentar mudar o comportamento do buffer (ver setvbuf()) ou usar outra maneira de ler o teclado (ver select(), não é C Standard). What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
brunoais Posted April 2, 2012 at 11:58 AM Report #447037 Posted April 2, 2012 at 11:58 AM Tens também a hipótese de trabalhar com threads. Dedicas uma thread só a ler bytes do teclado e a meter diretamente no buffer do teu programa. O teu programa só precisa depois de tentar ler do buffer cada vez que faz sentido tentar ler uma tecla. Isto é uma outra maneira de atuar. Não é necessariamente boa ou má, é uma maneira. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
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