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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.79
lips!!
2 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 86
#1

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

15.04.2011, 22:53. Просмотров 6620. Ответов 3
Метки нет (Все метки)

научите как 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++
Сейчас пишу на борланде 3.1 игру похожую на марио.. так вот.. немогу избавится от такой проблемы когда зажимаеш кнопку на секунду.. и...

Немогу разобратся с идентификатором - C++
Доброе время суток! В общем создал Win32 проект (dll библиотеки, с использованием MFC). Добавил код (.cpp , .h файлы) User.h ...

немогу разобратся в масивах такого типа - C++
1) С помощью цикла заполнить массив размером 30 числами от 60 до 90 2) Матрицу 5х5 заполнить нулями и вывести на экран. Потом диагональ...

kbhit - C++
Привет всем. kbhit() умеет различать какая клавиша нажата? или для этого уже что то нужно посложнее?

Аналог kbhit - C++
Подскажите пожалуйста, какую функцию необходимо использовать в С++, чтобы прога поняла, что нажата клавиша на клаве (вместо функции kbhit,...

Kbhit() - не определяется - C++
Подпараграф "Вариация на тему цикла for" из книги Шилдта "C++ Базовый курс" предлагает вот такой пример использования функции kbhit(): ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
16.04.2011, 03:16 #2
учимся искать сами http://msdn.microsoft.com/en-us/library/58w7c94c
lips!!
2 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 86
16.04.2011, 22:11  [ТС] #3
Цитата Сообщение от panicwassano Посмотреть сообщение
учимся искать сами http://msdn.microsoft.com/en-us/library/58w7c94c
нуну.. я так то поискал уже.. и походу вот до меня дошло.. если правельно ещё канешно дошло...
то после того как мы берём в буфер клавиатуры клавишу, то как потом этот буфер очистить??
при условии if(getch()==32)
если в буфере был пробел, то оно выполняется бесконечно, (тоесть надо нажать пробел один раз чтоб он без остановки прыгал пока мы не нажмём чтонибудь другое)
как это поправить???
vitaska
84 / 84 / 2
Регистрация: 04.02.2010
Сообщений: 162
16.04.2011, 22:15 #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;
                }
        }
    }
тут вроде все без труда можно разобрать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2011, 22:15
Привет! Вот еще темы с ответами:

Функция kbhit - C++
как сделать чтобы функция kbhit реагировала не на любую нажатую клавишу, а только на определенную?

Ошибка kbhit() - C++
Добрый день, подскажите пожалуйста. При сборке программы выдаёт такую ошибку Ошибка 1 error C4996: 'kbhit': The POSIX name for this...

альтернатива kbhit() и getch - C++
А кто подскажет,чем можно заменить kbhit() and getch в коде. Компилятор выдает ошибку,т.к. данные ф-ции устаревшие int i=0; enum...

Очистка буфера kbhit() - C++
Доброго времени суток! Вопрос в следующем. Как очистить буфер функции kbhit? Код такого рода: while (exit==0) { if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.04.2011, 22:15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru