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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Granin
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 19
#1

Работа с while, kbhit() и getch() - C++

08.09.2013, 21:10. Просмотров 1825. Ответов 5
Метки нет (Все метки)

Здравствуйте!
Подскажите пожалуйста,
Задача, сделать точку в консоли, которая бы двигалась в заданном направление и меняла его при нажатие на клавиши ( W A S D )
Как я это вижу, точка двигается пока не заданно другое (т.е. прошлое место заменяется на пробел, место +1 меняется на точку).
При нажатие клавиши пускаем функцию отвечающую за смену направления. Может не прав?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void change() // считываем что нажато
   {
char klava; //
klava = getch(); // 
switch (klava) // 
     {
 case 'w':  cout<<"eto W";   break;
 case 's':  cout<<"eto s";   break;
 case 'a':  cout<<"eto a";   break;
 case 'd':  cout<<"eto d";   break;
 default : break;           
     }
   }

При таком коде, он прекращает работу при нажатие любой клавиши.
C++
1
2
while(!kbhit())
cout<<"*";
А как мне задать что при нажатие на A одна функция, при нажатие W вторая и т.д.?

Благодарю!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2013, 21:10     Работа с while, kbhit() и getch()
Посмотрите здесь:

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

Странная работа getch - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { int m; m=getch(); switch (m)

Некорректная работа ф-ции getch() в цикле - C++
while (iKey != 27) { iKey = getch(); cout &lt;&lt; &quot;qwer&quot;; } Не могу понять почему после нажатия любой клавиши(понятно кроме...

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

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

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

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

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

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

Подскажите с функцией kbhit() - C++
Подскажите как сделать что-бы функция kbhit() реагировала на нажатие определенной клавиши, например клавишу &quot;q&quot;. Вот пример код, хочу что...

немогу разобратся с kbhit() - C++
научите как kbhit() юзать? borland 3.1 если на пробел нажимаю(32) вроде нормально выполняет.. а если на кнопку &quot;d&quot; (100) то пару раз...

Как сбросить значение kbhit()? - C++
Доброго времени суток. Появилась следующая проблема. Экспериментируя с функцией rand(), написал программу, выводящую случайные числа по...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 1
08.09.2013, 21:15     Работа с while, kbhit() и getch() #2
использовать switch-case?

Добавлено через 24 секунды
засунутый в цикл do-while
Granin
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 19
08.09.2013, 21:22  [ТС]     Работа с while, kbhit() и getch() #3
Цитата Сообщение от Nullik Посмотреть сообщение
использовать switch-case?

Добавлено через 24 секунды
засунутый в цикл do-while
Я это пробовал изначально. Но видно что-то не так пишу

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main(int argc, char* argv[])
{
 
    int a = 0; 
    
    do // начало цикла do while
    {
     cout<<"*";
     a = getch();
     char klava;
    }
     //
 
    while ( a != 0 ); // конец цикла do while
    system("pause");
    return 0;
}
Belfegor
Ghost
172 / 172 / 6
Регистрация: 16.09.2012
Сообщений: 524
08.09.2013, 21:22     Работа с while, kbhit() и getch() #4
http://www.cyberforum.ru/blogs/34326/blog263.html
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 1
08.09.2013, 21:30     Работа с while, kbhit() и getch() #5
Granin

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
do
{
cin >> a;
 
switch (a)
{
case (код клавиши, напрмиер)
{
}
case (другой код клавиши)
{
}
....
 
}
 
}while();
Добавлено через 1 минуту
т.е., суть этого кода в том, что внешний while будет ждать такую а, (должен ждать такую а), при которой он (цикл) сделает стоп.

А вот свич - условный оператор, т.е., пока есть такое, делаем так.
Granin
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 19
08.09.2013, 23:39  [ТС]     Работа с while, kbhit() и getch() #6
вот так работает как надо, но как можно сделать то-же самое, но без GetAsyncKeyState а с kbhit() и getch() ? Благодарю!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    while(TRUE)
    {
        printf("ab");
        if(GetAsyncKeyState(VK_LEFT))
        {
            keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0);//Отжимаем кнопку
            printf("done\n");
            break;
            
        }
   
    }
    return 0;
}
Yandex
Объявления
08.09.2013, 23:39     Работа с while, kbhit() и getch()
Ответ Создать тему
Опции темы

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