(C) input bez nutnosti potvrdenia ENTEROM

Sekcia: Programovanie 13.04.2012 | 15:56
Erik   Návštevník
robim jednoduchu hru v C a posledna vec co mi chyba je ovladanie. Potrebujem, aby mi program cital vstup bez toho, aby ho uzivatel musel potvrdzovat enterom.
Docital som sa o finkcii o getch() z kniznice ncurses, no problem je ten, ze funkcia vstup zoberie, ale nic s nim nerobi + aj tak tam musim trieskat do enteru.
zapis: void controlk() {
char con;
int x = TRUE;

while((con = getchar()) != 'x' )
{
switch(con)
{
case 'a': goLeft(); break;
case 'd': goRight(); break;
case 'w': goUp(); break;
case 's': goDown(); break;
case 'e': pickBox(); break;
case 'r': relaseBox(); break;
default: break;
}
}

*kniznicu pri kompilacii zadavam: -lncurses
*nevypisuje ziadne chyby
*getchar() mi funguje v pohode (len mi vadi ze treba ENTER davat)

-- conio.h sa v linuxe asi neda pouzit, ci?
    • Re: (C) input bez nutnosti potvrdenia ENTEROM 13.04.2012 | 22:51
      johnny   Návštevník
      void controlk() {
      initscr(); //inicializa ncurses
      raw(); //znamena ze getch caka, kym sa nieco nestlaci
      noecho (); //vevypisuje co si stlacil
      keypad(stdscr, TRUE); //enable F1 F2 ...
      char con;
      int x = TRUE;

      while((con = getch()) != 'x' )
      {
      switch(con)
      {
      case 'a': goLeft(); break;
      case 'd': goRight(); break;
      case 'w': goUp(); break;
      case 's': goDown(); break;
      case 'e': pickBox(); break;
      case 'r': relaseBox(); break;
      default: break;
      }
      endwin(); //ukoncenie ncurses
      }