Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/55: Рейтинг темы: голосов - 55, средняя оценка - 4.55
0 / 0 / 1
Регистрация: 08.09.2013
Сообщений: 19
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Подскажите пожалуйста,
Задача, сделать точку в консоли, которая бы двигалась в заданном направление и меняла его при нажатие на клавиши ( 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 вторая и т.д.?

Благодарю!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2013, 21:10
Ответы с готовыми решениями:

альтернатива kbhit() и getch
А кто подскажет,чем можно заменить kbhit() and getch в коде. Компилятор выдает ошибку,т.к. данные...

Аналог getch или русские буквы в getch
Здравствуйте, уважаемые господа. Существуют ли какие-нибудь аналоги getch () и _getch, которые...

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

Неправильная работа getch() в switch
Добрый день! Пишу &quot;Морской бой&quot; на Си. Столкнулся с проблемой, связанной с функцией getch()....

5
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
08.09.2013, 21:15 2
использовать switch-case?

Добавлено через 24 секунды
засунутый в цикл do-while
0
0 / 0 / 1
Регистрация: 08.09.2013
Сообщений: 19
08.09.2013, 21:22  [ТС] 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;
}
0
Ghost
174 / 174 / 40
Регистрация: 16.09.2012
Сообщений: 526
08.09.2013, 21:22 4
https://www.cyberforum.ru/blogs/34326/blog263.html
0
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
08.09.2013, 21:30 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 будет ждать такую а, (должен ждать такую а), при которой он (цикл) сделает стоп.

А вот свич - условный оператор, т.е., пока есть такое, делаем так.
0
0 / 0 / 1
Регистрация: 08.09.2013
Сообщений: 19
08.09.2013, 23:39  [ТС] 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;
}
0
08.09.2013, 23:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.09.2013, 23:39
Помогаю со студенческими работами здесь

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

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

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

Альтернатива kbhit
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; int main (void) { long int a, tmp, max = 0; int i;...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru