Форум программистов, компьютерный форум CyberForum.ru

немогу разобратся с kbhit() - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.79
lips!!
2 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 86
15.04.2011, 22:53     немогу разобратся с kbhit() #1
научите как kbhit() юзать?
borland 3.1
если на пробел нажимаю(32) вроде нормально выполняет.. а если на кнопку "d" (100) то пару раз выполняет и выходит из программы
хотя вроде не должен!!
помогите студенту)))
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
while(x!=45 && y!=8)
 {
  while(!kbhit())
  {
   gotoxy(1,1);
   cprintf("%i  %i    ",x,y);
   if(getch()==32)
   {
    gotoxy(y,x);
    cprintf(" ");
    x--;
    y++;
    gotoxy(y,x);
    cprintf("@");
    delay(300);
    //
    gotoxy(y,x);
    cprintf(" ");
    y++;
    gotoxy(y,x);
    cprintf("@");
    delay(300);
    //
    gotoxy(y,x);
    cprintf(" ");
    y++;
    x++;
    gotoxy(y,x);
    cprintf("@");
    delay(300);
    break;
   }
   if(getch()==100) //BnpaBo
   {
    gotoxy(y,x);
    cprintf(" ");
    y++;
    gotoxy(y,x);
    cprintf("@");
    delay(300);
    break;
   }
  }
 
 }
Добавлено через 3 минуты
в условии мб как то не так с гетчем написал?

Добавлено через 1 час 24 минуты
ауууууууу
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2011, 22:53     немогу разобратся с kbhit()
Посмотрите здесь:

немогу разобратся в масивах такого типа C++
Немогу разобратся с задержками C++
C++ kbhit
Подскажите с функцией kbhit() C++
Немогу разобратся с идентификатором C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
16.04.2011, 03:16     немогу разобратся с kbhit() #2
учимся искать сами http://msdn.microsoft.com/en-us/library/58w7c94c
lips!!
2 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 86
16.04.2011, 22:11  [ТС]     немогу разобратся с kbhit() #3
Цитата Сообщение от panicwassano Посмотреть сообщение
учимся искать сами http://msdn.microsoft.com/en-us/library/58w7c94c
нуну.. я так то поискал уже.. и походу вот до меня дошло.. если правельно ещё канешно дошло...
то после того как мы берём в буфер клавиатуры клавишу, то как потом этот буфер очистить??
при условии if(getch()==32)
если в буфере был пробел, то оно выполняется бесконечно, (тоесть надо нажать пробел один раз чтоб он без остановки прыгал пока мы не нажмём чтонибудь другое)
как это поправить???
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
16.04.2011, 22:15     немогу разобратся с kbhit() #4
вот попробуй поковырять этот кусок кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
    enum VKey {MVK_UP = 72, MVK_LEFT = 75, MVK_RIGHT = 77, MVK_DOWN = 80, MVK_F12 = 134, MVK_ESC = 27, MVK_ENTER = 13};
 
    int ch = 0;
    for( ; ; ){
        ch = _getch();
        if( !_kbhit() ){
            //Отлавливаем нажатие клавиши ENTER
            if( ch == 13 ){
                cout << "MVK_ENTER\n";
            }
            //Отлавливаем нажатие клавиши ESC
            if( ch == 27 )
                cout << "MVK_ESCAPE\n";
        }
        //Отлавливаем нажатие клавиш LEFT, RIGHT, UP, DOWN, F12
        else if( _kbhit() && ( ch == 0x00 || ch == 0xE0 ) ){
                ch = _getch();
                switch( ch )
                {
                    case MVK_LEFT:
                        cout << "MVK_LEFT\n";
                        break;
                    case MVK_UP:
                        cout << "MVK_UP\n";
                        break;
 
                    case MVK_RIGHT:
                        cout << "MVK_RIGHT\n";
                        break;
                    case MVK_DOWN:
                        cout << "MVK_DOWN\n";
                        break;
 
                    case MVK_F12:
                        cout << "MVK_F12\n";
                        break;
 
                    default:
                        cout << "GGGG\n";
                        break;
                }
        }
    }
тут вроде все без труда можно разобрать
Yandex
Объявления
16.04.2011, 22:15     немогу разобратся с kbhit()
Ответ Создать тему
Опции темы

Текущее время: 16:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru