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

Visual C++

Войти
Регистрация
Восстановить пароль
 
Luedos
0 / 0 / 0
Регистрация: 17.07.2017
Сообщений: 1
#1

Нажатие клавиш - Visual C++

17.07.2017, 16:48. Просмотров 104. Ответов 0
Метки нет (Все метки)

Итак вот в чем вопрос. Я начал осваивать SDL2, и в целом он мне нравится, однако, мне не нравится его система ивентов. То есть она конечно рабочая, однако она работает не так как я представлял. Суть в чем, для реализации нажатия клавиш SDL2 нужно вызывать функцию которая проверит нажата ли какая либо клавиша. Это можно реализовать через двойной while например как то так:

C++
1
2
3
4
5
6
7
8
9
10
SDL_Event event;
 
    while (!game.bQuitGame)
        while (SDL_PollEvent(&event))
        {
            SDL_PumpEvents();
 
            if (event.type == SDL_QUIT)
                game.EndGame();
        }
Однако для этого код должен быть занят проверкой на ивенты и это черт побери не удобно. Непосредственно с такой проблемой я столкнулся когда делал змейку. Мне необходимо было каждые 250 мс запускать функцию Move(), дабы змейка двигалась, однако получается что проверять нажата ли клавиша я могу только когда приходит время выполнять эту функцию, и это жутко не удобно играть. Пришлось насильно, через SDL_Delay(25) поднять фреймрейт и ввести интеджер который каждый кадр увеличивался, а когда равнялся 10, выполнялась функция Move() и итеджер сбрасывался до нуля. Это конечно сработало, и играть стало приятнее, однако это больше костыль чем решение.

Мой вопрос заключается вот в чем. Есть ли способ в с++, что бы при нажатии какой либо клавиши вызывалась некая функция не зависимо от выполнения главного кода?

Я не очень опытен в с++ и надеюсь вы меня поймете. До SDL2 я использовал с++ только в UnrealEngine4 и там некое подобие вещей, о которых я здесь спрашиваю, было выполнено. Надеюсь на вас)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2017, 16:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нажатие клавиш (Visual C++):

Нажатие клавиш - Visual C++
Помогите пожалуйста разобраться с проблемой. Есть диалоговое окно которое состоит с простого комбо бокса и 2-ух кнопок "Добавить",...

Нажатие клавиш WASD из консоли в окно - Visual C++
Доброго времени суток. Я совсем новенький в C++ и надо чтоб клавиши зажимались на 1 секунду, а то и более. Вот код: Примечание: всё...

Как можно сделать такое? (Автоматическое нажатие клавиш и все что с этим связанно) - C++
У меня возник вопрос как можно сделать чтоб программа автоматически нажимала на определенные клавиши? Например в игре GTA SAMP: Чтоб...

Обработка комбинации клавиш! - Visual C++
Здравствуйте! Пишу проcтой графически редактор, решил добавить отмену последнего действия, написал для этого функцию, в меню создал кнопку,...

Перехват нажатий клавиш - Visual C++
Уже всё перерыл, чтобы найти что-то подобное! Если нахожу пример - он либо не компилируется, либо сделан на другом языке! Попробую...

Отслеживание нажатия клавиш на C++ - C++
Здравствуте, прочитал статью про то как перехватывать нажатие клавиш средствами...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2017, 16:48
Привет! Вот еще темы с ответами:

Считывание клавиш в форме - Visual C++
есть форма и бекгроундворкер. в нем у меня считывание клавиш. устал уже. капец как. вот этот код в консольке работает, а тут нет: code...

Изменение горячих клавиш - Visual C++
Как поменять местами в Visual C++ 2010 Express кнопки F5 и Ctrl + F5. Чтобы после F5 окно не закрывалось. P.S. Просьба всякие pause и get...

автоматическое нажатие ЛКМ - C++
Доброго времени суток! кто сможет помочь? нужно написать программу или скрипт, чтоб имитировать нажатие левой кнопки мыши через каждые 10...

Переназначение клавиш без перезагрузки. - Visual C++
Доброго времени суток )) Появилась мысль написать маленькую утилитку для отключения клавиш Win и Shift. Просто решил помочь "заядлым"...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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