Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
34 / 34 / 17
Регистрация: 27.01.2013
Сообщений: 200

Обработка событий клавиатуры

11.04.2013, 15:10. Показов 4560. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем печенек и доброго времени суток!
Суть вопроса: подскажите фукцию для обработки событий клавиатуры в играх.
Подоплёка вопроса:
В качестве курсача выбрал тему "тетрис". Всё написал, всё робит, защитил, получил "отлично", но хочу улучшить(для себя) качество работы программы. Конкретная часть требующая улучшения:
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
46
47
48
//.....
#include <windows.h>
//.....
bool f=0;//флаг возможности управления фигуркой
while(1)
{
for(int kdel=0;kdel<3;kdel++,f=0)//данный цикл реализует паузу в 501 мс перед тем как фигура сдвинется на 1 вниз.
//Внутри цикла осуществляется обработка событий клавиатуры(то есть пока фигурка "висит" на месте мы можем
//покрутить ей как хотим
            {
                if(GetAsyncKeyState(VK_ESCAPE) < 0)
                {
                    // тут код для выхода из игры
                }
                if((GetAsyncKeyState('R') < 0) || (GetAsyncKeyState(VK_RETURN) < 0))
                {
                     //тут код поворота фигурки вокруг своей оси
                }
                if(GetAsyncKeyState(VK_DOWN) < 0)
                {
                    //быстрый сброс фигурки
                    fastdown=1;
                    f=0;
                }
                if(GetAsyncKeyState(VK_LEFT) < 0)
                {
                    if(!f)
                    { 
                            //смещаем на 1 влево
                            //....
                            f=1;
                    }
                }    
                if(GetAsyncKeyState(VK_RIGHT) < 0)
                {
                    if(!f)
                    { 
                            //смещаем на 1 вправо
                            //....
                            f=1;
                    }
                }
                if(!fastdown)
                delay(167);
                else
                delay(20);
            } 
      }
ТО бишь данный код позволяет отработать три команды по смещению фигурки влево или вправо. Возможность управлять именно количеством таких отработок делает флаг f и три итерации цикла for. На винде 7 всё работает шустро, как надо. А вот на винде ХП надо обязательно ткнуть на кнопку несколько раз прежде чем команда сработает.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2013, 15:10
Ответы с готовыми решениями:

Обработка событий клавиатуры
Всем ДОброго вечера! Есть необходимость сделать кроссворд на сайте. Задумка сделать таблицу &lt;table&gt; итд.. в ячейки вставить поля...

Обработка событий с клавиатуры
Задание звучит так: &quot;В рамках выполнения данной лабораторной работы необходимо написать программу на языке FreePascal, обеспечивающую...

Обработка событий клавиатуры
Доброе время суток. Столкнулся с проблемкой - никак не могу считать данные с клавиатуры. ЗЫ Пытаюсь сделать примитивный калькулятор ...

1
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
11.04.2013, 23:09
GetKeyState function
What's the difference between GetKeyState and GetAsyncKeyState?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.04.2013, 23:09
Помогаю со студенческими работами здесь

Обработка событий клавиатуры
В Lazarus можно обрабатывать события клавиатуры?

Обработка событий клавиатуры
Здравствуйте! И вновь не удаётся найти ответ в документации. Удалось научиться различать латиницу System::Void...

Обработка событий клавиатуры
Прошу помощи о опытных, суть такова ракетка ,на ней шарик, по нажатию на пробел ,шарик должен лететь вверх Интересует как правильно...

Обработка событий клавиатуры и мыши
Я не могу найти ошибку в программе которая показывает, как можно получать информацию о событиях, генерируемых системой при нажатии клавиш...

Обработка событий мыши и клавиатуры на vb6
Нужна помощ,подскажите сайт или сбросте материал по теме: обработка событий мыши и клавиатуры на vbasik 6.0


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru