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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
IFree Host
Заблокирован
11.02.2012, 01:07     Тетрис - Реализация таймера и обработка событий с клавиатуры #1
Пишу консольный тетрис. Столкнулся с проблемой таймера и перехвата событий с клавиатуры. Раньше с такими вопросами не сталкивался, поэтому испытываю трудности.

Итак Задача:

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

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

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

Какое решение было бы самым приемлимым в этом случае?
Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2012, 01:07     Тетрис - Реализация таймера и обработка событий с клавиатуры
Посмотрите здесь:

C++ Обработка событий (events) в Visual Studio
C++ Коды клавиш и обработка событий клавиатуры в консоли
C++ Реализация программы на С++ (Найти вероятности следующих событий:)
C++ Обработка нескольких событий
C++ функция SetTimer и обработка события таймера
C++ Пакман на Си. Реализация таймера
C++ Обработка событий в SFML

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KeyGen
 Аватар для KeyGen
333 / 289 / 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     Тетрис - Реализация таймера и обработка событий с клавиатуры
Ответ Создать тему
Опции темы

Текущее время: 03:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru