Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
3 / 3 / 0
Регистрация: 04.02.2015
Сообщений: 48

аналог INKEY$ в С++

14.02.2017, 16:52. Показов 1826. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!!
В Qbasic есть оператор INKEY$ который работает обычно
в цикле и по которому можно узнать какая клавиша была
нажата и при этом цикл не останавливается. Есть ли аналог
такого оператора или функции в С++.
Функция getch() в С++ мне не подходит так как он цикл
останавливает и ждет нажатие клавиши, а мне нужно
чтобы функция ждала нажатие клавиши и цикл работал
как в Qbasic оператор INKEY$. Может ли есть какой-нибудь трюк
с getch() чтобы функция ждала нажатие клавиши в работающем цикле
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.02.2017, 16:52
Ответы с готовыми решениями:

Аналог inkey$
В QuicBasic есть очень хороший оператор INKEY$, я так понимаю он служит чтоб программа выполняла какие то операции но при этом ждала что я...

Аналог INKEY$(ф-ция из QuickBasic) на PureBasic
Собственно вопрос в названии темы. Спрашиваю, т.к. нужна данная функция в графическом режиме. Я, конечно её сэмулировал с помощью...

Синоним Inkey в Си
Здравствуйте, переучиваюсь с бэйсика на си, и сталкнулся с проблемкой считать один символ с клавиатуры, помогите найти команду как можно...

8
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
14.02.2017, 16:58
http://www.cprogramming.com/fod/kbhit.html
https://msdn.microsoft.com/ru-... .120).aspx
1
3 / 3 / 0
Регистрация: 04.02.2015
Сообщений: 48
15.02.2017, 06:19  [ТС]
Рассматриваю функцию kbhit, если вдруг не подойдет напишу об этом

Добавлено через 21 минуту
Функция kbhit() не подходит так как возвращает ложь и истину при нажатии любых клавиш, а мне нужно чтобы возвращались символы(в цифрах) в кодировке ASCII. Так как в моем коде необходимо чтобы рисунок двигался вправо при нажатие клавиши вправо. Влево-влево. а если применить kbhit() то при наджатие любых клавиш будет двигаться вправо.

Добавлено через 10 минут
мне нужно чтобы функция была наподобие INKEY$ в QBfsice там идет цикл и если я нажимаю на необходимую
клавшу то INKEY$ принимает код в цифрах этой клавиши и это значение заносится в переменную например a
затем a сравнивается с другой переменной d =13 в котором храниться цифра символа на клавиатуре. И если я например
нажал не та ту клавишу то ни чего происходить не будет. А если я нажал на клавишу с кодом 13 то будет какое то действие например сдвиг рисунка вправо. И что самок ГЛАВНОЕ цикл не останавливается. Если бы в с++ Функция getch()
не останавливат бы цикл ожидая нажатие клавиши то оно бы подошло
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
15.02.2017, 06:49
Цитата Сообщение от Роман72234 Посмотреть сообщение
А если я нажал на клавишу с кодом 13 то будет какое то действие например сдвиг рисунка вправо. И что самок ГЛАВНОЕ цикл не останавливается.
Элементарно. Пройдите в цикл обработки сообщений, найдите там GetMessage и поменяйте на PeekMessage. Если никаких сообщений (в том числе о нажатии клавиш) вам не приходило, оно вернет ноль.
Если же цикл с GetMessage от вас упрятали куда-то под капот, то элементарно вряд ли получится. Приложение для многозадачных ОС, все же в первую очередь нацелено на модель "ты все равно ждешь, так дай другим процессор погонять". А то что вы хотите, принято делать вынесением цикла в отдельный поток. Велосипед для общения с этим потоком предлагается делать самостоятельно.
1
3 / 3 / 0
Регистрация: 04.02.2015
Сообщений: 48
15.02.2017, 07:11  [ТС]
Ваше сообщение для меня уж слишком заумно сказано. Можно расшифровать попроще
на пальцах Все таки тема в разделе для начинающих......

Добавлено через 7 минут
Вот есть функция getch() хорошая функция оно считает нажатие любой одной клавиши
но проблема в том что ставлю его в свой цикл а он берет и останавливает цикл ожидая
нажатие клавиши. Как сделать так чтобы getch() считывала клавиши не останавливая цикл
если в с++ нет аналога INKEY$ (QBAsic)
Функция kbhit() вообще не подходит так как она срабатывает при нажатие любых клавиш
а мне нужно одной например скажим ESC или другой клавиши а при нажатие других клавиш не срабатывала
и цикл при этом не останавливался как при getch()
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12933 / 6801 / 1820
Регистрация: 18.10.2014
Сообщений: 17,213
15.02.2017, 07:17
Цитата Сообщение от Роман72234 Посмотреть сообщение
Есть ли аналог такого оператора или функции в С++.
Нет, ничего подобного в С++ нет.

Искать что-то подобное вы можете в посторонних, платформенно-зависимых библиотеках.
1
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
15.02.2017, 07:21
Цитата Сообщение от Роман72234 Посмотреть сообщение
Ваше сообщение для меня уж слишком заумно сказано. Можно расшифровать попроще
на пальцах Все таки тема в разделе для начинающих......
В Qbasic у вас был INKEY$ проверяющий не была ли нажата клавиша. Теперь сделали PeekMessage проверяющий не произошло ли с программой чего ни будь нуждающегося в ее реакции. Может кнопка нажата, может программу закрыли, все идет через PeekMessage. Или через GetMessage.
Тем не менее, если у вас рисунки влево-вправо двигаются не на чистом WinAPI, скорее всего все PeekMessage упрятаны под капот.
Ну а если еще проще:
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
bool keyPressed=false;
int code=0;//код нажатой клавиши
void loop()
{
    while(true)//нужный вам цикл
    {
        if(keyPressed)
        {
            std::cout<<code<<std::endl;
            keyPressed=false;
        }
    }
}
 
int main()
{
    std::thread thread(loop);
    while(true)
    {
        std::cin>>code;//здесь читайте код чем вам удобно, не парясь о "остановит цикл"
        keyPressed=true;
    }
    return 0;
}
1
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
15.02.2017, 14:56
Цитата Сообщение от Роман72234 Посмотреть сообщение
Функция kbhit() не подходит так как возвращает ложь и истину при нажатии любых клавиш, а мне нужно чтобы возвращались символы(в цифрах) в кодировке ASCII.
https://msdn.microsoft.com/ru-... .120).aspx
Функция _kbhit проверяет консоль на последнее сочетание клавиш. Если функция возвращает ненулевое значение, сочетание клавиш ожидает в буфере. Программа может затем вызвать _getch или _getche для получения сочетания клавиш.
Извлекай из буфера символы и обрабатывай.
C++
1
2
3
4
5
6
7
8
    while(1)
    {
        if(kbhit())
        {
            if (_getch() == 'a')
                std::cout << 'a';
        }
    }
1
3 / 3 / 0
Регистрация: 04.02.2015
Сообщений: 48
15.02.2017, 15:08  [ТС]
А вот теперь эти два кода мне подходят. Это что мне нужно!!!
Нашел выход из положения. Спасибо!!! выучу эти коды наизусть
Так как потом пригодятся. Тема закрыта
БЛАГОДАРЮ ВСЕХ!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.02.2017, 15:08
Помогаю со студенческими работами здесь

Оператор INKEY$
Кто-нибудь может мне объяснить, что это такое? А то в учебнике непонятно написано. Я понял, что это оператор, следящий за нажатыми...

Аналог Компрессора Данфосс FR-8.5A, Не могу найти аналог компрессора
Кто-нибудь подбирал аналог данного компрессора,он стоит на низкотемпиратурном ларе? Заранее спасибо!

Аналог Zilog 1883, Аналог Zilog 1883 Модуль EATON A1 D20
Подскажите плз есть ли аналог у Zilog 1883 cm20a (так написано на самой микросхеме)? Модулек EATON A1 D20. Или документацию какую на...

Аналог this из C++
Здравствуйте. Имеется код: typedef struct { void* subItems; // Array of subitems int subItemQuan; // Subitems...

Аналог L
Аналог L&quot;строка&quot; для переменных есть? Или как использовать для переменной?


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru