С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/10: Рейтинг темы: голосов - 10, средняя оценка - 4.50
IFree Host
Заблокирован
1

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

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

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

Итак Задача:

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

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

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

Какое решение было бы самым приемлимым в этом случае?
Спасибо!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2012, 01:07
Ответы с готовыми решениями:

Коды клавиш и обработка событий клавиатуры в консоли
Многие часто спрашивают один и тот же вопрос по поводу обработки событий...

Пакман на Си. Реализация таймера
Есть проблема с реализацией таймера обратного отсчета. Нужно делать...

Реализация таймера в C++/CLI
Добрый день! Подскажите как реализовать неблокирующий таймер на C++/CLI. Что...

Реализация событий в С++
Мне нужно реализовать события, как в Дельфи или С++ Builder, на Visual C++. Но...

Программная реализация диспетчера процессов с использованием системного таймера
Помогите выполнить задание : Выбрать стратегию диспетчеризации процессов....

2
KeyGen
384 / 291 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
11.02.2012, 02:47 2
Лучший ответ Сообщение было отмечено IFree Host как решение

Решение

Вот посмотри все уже написано)
Написал тетрис. Прокомментируйте код пожалуйста )
Я использовал #include <conio.h> и вот такую конструкцию:
C++
1
2
3
for(int i=0; i<gor; i++)
                 if(kbhit())
                        speed[i] = getch();
1
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;
            ....
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2012, 03:41

функция SetTimer и обработка события таймера
Пишу программу в winapi. В какую часть программы я должен вставить функцию...

Реализация журнала ошибок и протоколирования событий
Добрый день, уважаемое сообщество. При написании выпускной работы появилась...

Реализация программы на С++ (Найти вероятности следующих событий:)
Помогите пожалуйста реализовать на С++ или на С# программу по этой задаче ...


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

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

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