Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Итак Задача:

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

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

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

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

Коды клавиш и обработка событий клавиатуры в консоли - C++
Многие часто спрашивают один и тот же вопрос по поводу обработки событий нажатия клавиш в консоли. вот простейший пример перехвата: ...

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

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

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

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

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

2
KeyGen
384 / 291 / 6
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 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();
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
Привет! Вот еще темы с ответами:

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

Обработка нескольких событий - C++
На форму за короткое время приходит несколько (3-7) одинаковых событий, которые вызывают в свою очередь один и тот же метод. Каким образом...

Обработка событий от мыши С++ - C++
Форумчане, сильно прошу, просто умоляю подкинуть какой то информации по обработке событий на чистом С++ без всяческих библиотек и тому...

CodeBlocks и Graphics.h обработка событий - C++
Всем привет! Нужно написать программу в CodeBlocks, а раньше я писал в Visual. Написал программу, которая рисует ферзей на шахматной...


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

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

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