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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
IFree Host
Заблокирован
#1

Тетрис - Реализация таймера и обработка событий с клавиатуры - C++

11.02.2012, 01:07. Просмотров 1544. Ответов 2
Метки нет (Все метки)

Пишу консольный тетрис. Столкнулся с проблемой таймера и перехвата событий с клавиатуры. Раньше с такими вопросами не сталкивался, поэтому испытываю трудности.

Итак Задача:

1. Создается экземпляр класса Figur
2. Далее фигура должна перемещаться вниз с определенным временным интервалом
3. При этом, не нарушая обработку событий таймера необходимо перехватывать события с клавиатуры
для того чтобы вращать фигурку и перемещать ее вправо или влево

Разместил все в процедуре MoveDown
Обрабатываю вращение объекта при помощи getch();
Вместо таймера применил do-while

Естественно ничего не работает так как getch() ждет событий с клавиатуры и останавливает мой никудышный таймер.

Какое решение было бы самым приемлимым в этом случае?
Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2012, 01:07     Тетрис - Реализация таймера и обработка событий с клавиатуры
Посмотрите здесь:
C++ Коды клавиш и обработка событий клавиатуры в консоли
Реализация таймера в C++/CLI C++
C++ Пакман на Си. Реализация таймера
C++ функция SetTimer и обработка события таймера
Реализация журнала ошибок и протоколирования событий C++
C++ Реализация программы на С++ (Найти вероятности следующих событий:)
Обработка событий от мыши С++ C++
C++ Обработка нескольких событий
C++ CodeBlocks и Graphics.h обработка событий
C++ Обработка событий (events) в Visual Studio
обработка клавиатуры C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KeyGen
383 / 290 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
11.02.2012, 02:47     Тетрис - Реализация таймера и обработка событий с клавиатуры #2
Вот посмотри все уже написано)
Написал тетрис. Прокомментируйте код пожалуйста )
Я использовал #include <conio.h> и вот такую конструкцию:
C++
1
2
3
for(int i=0; i<gor; i++)
                 if(kbhit())
                        speed[i] = getch();
IFree Host
Заблокирован
11.02.2012, 03:41  [ТС]     Тетрис - Реализация таймера и обработка событий с клавиатуры #3
Сделал вот так и пошло как по маслу

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int i_tick = 0;
char c_input = 0;
 
while( хххххх ) // здесь контролирую колизию фигуры с основанием стакана или другой фигурой
{
      i_tick++;
        
      if(kbhit()) c_input = getch();
 
    if(c_input == 72 )
             c_input = 0;
            ....
            ....
 
    Sleep(10);
 
    if(i_tick >= speed)  // speed может менять скорость падения фигуры
    {
            i_tick = 0;
            ....
    }
}
Yandex
Объявления
11.02.2012, 03:41     Тетрис - Реализация таймера и обработка событий с клавиатуры
Ответ Создать тему
Опции темы

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