Tag Archives: input

Input de Mouse e Teclado no Java

Um tutorial interessante para dar input de Mouse e Teclado no Java é esse aqui da GameDev.net:

Java Games: Keyboard and Mouse

Ele explica como fazer a detecção de input tudo pela mesma thread, diferente do método padrão do java, que é por eventos, o que cria threads separadas para cada input, dificultando muitas vezes a programação de jogos.

Se você está aprendendo também, vale a pena dar uma olhadinha. :)

Google Buzz

Entrada de Texto no Allegro

Não é de hoje que as pessoas buscam por métodos para fazer entrada de textos no Allegro, que por sua vez, não nos oferece nenhuma opção concreta, apenas algumas funções para entrada de teclas, e indentificação das mesmas.

Há um tempo atrás, eu também precisei disto, então vi que no site da Allegro.cc continha um exmeplo, então adaptei-o para minha necessidade. Muitas pessoas me perguntam como fazer isso, então, hoje só passo a função modificada que fiz desta, e até que ela anda servindo para bastante gente! hehehe

Por isso resolvi postar aqui. Ela ainda está primitiva, com muitos bugs, mas acredito que sirva para muitas coisas, aqui vai ela:

char *getText(int x, int y, BITMAP *buff, int cor)
{
     char    edittext[128];
     BITMAP *fundo = buff;
     BITMAP *buffer = create_bitmap(screen->w, screen->h);

     int     caret  = 0;

     int l = 0;

     memset(edittext, 0, sizeof(edittext));

     while (l == 0)
     {
           clear(buffer);
           draw_sprite(buffer, fundo, 0, 0);
           vline(buffer, ( caret * 8 ) + x, y-2, y+8, cor);
           if(keypressed())
           {
                    int  newkey   = readkey();
                    char ASCII    = newkey & 0xff;
                    char scancode = newkey >> 8;

                    /* a character key was pressed; add it to the string */
                    if(ASCII >= 32 && ASCII <= 126)
                    {
				             if(caret < 128 - 1)
				             {
				    	              edittext[caret] = ASCII;
					                  caret++;
					                  edittext[caret] = '';
                             }
                    }
                    else if(scancode == KEY_BACKSPACE)
                    {
                         if (caret > 0) caret--;
                         edittext[caret] = '';
                    }
                    else if(scancode == KEY_ENTER)
                    {
				         l = 1;
                    }
             }
             textprintf_ex(buffer, font, x, y, cor, -1, "%s", edittext);
             blit(buffer, screen, 0, 0, 0, 0, 320, 240);
      }

      /*destroy_bitmap(buffer);
      destroy_bitmap(fundo);*/

      return edittext;
}

Os parâmetros dela, são respectivamente:
x: posição na coordenada X que vai conter o texto digitado
y: posição na coordenada Y que vai conter o texto digitado
buff: Bitmap de fundo, que vai ser mostrado enquanto você digita
cor: A cor em que vai ser mostrado o texto

Para usá-la, basta criar uma string:

char string[128];
memset(string, 0, sizeof(string));

E então copiar o resultado da função getText para esta string, assim:

strcpy(string, getText(10,10,buffer,0xFFFFFF));

Está simples, mas funciona, né! hehehe

Google Buzz