Реализация таймера для программы тетрис - C (СИ)
Формулировка задачи:
Здравствуйте. Возникла необходимость написать таймер обратного отсчета для реализации движения фигуры в тетрисе с определенным интервалом времени. Суть в том, что при каждом смещении падающей фигурки вниз нужно подождать определенное время, например 1 секунду. Но функцию Sleep в данном случае использовать не получится, т.к. нужна не пауза, а ожидание ввода какой-либо клавиши в течение этой секунды (для смещения или разворота фигуры). Попытался реализовать с помощью функции clock() в простенькой тестирующей программе, вот что получилось:
По моему замыслу в течение одной секунды компьютер должен был выводить на экран заданное сообщение. Однако произошло это всего лишь один раз. Пожалуйста, подскажите, в чем же тут ошибка, или какой-нибудь другой способ реализовать задуманное.
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { clock_t start, end; start = clock(); //Сохраняем текущее время в переменной start end = start + 1; //Присваиваем переменной end значение start, увеличенное на 1 секунду while(clock() < end) //Пока текущее время меньше, чем необходимое printf("1 seconds has not yet passed"); //Выводить сообщения return 0; }
Решение задачи: «Реализация таймера для программы тетрис»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> int main() { printf("Start\n"); float start, s = 3.0, k = 0.0; // s - требуемое время start = clock()/CLOCKS_PER_SEC; while(k < s) { k += clock()/CLOCKS_PER_SEC - start; start = clock()/CLOCKS_PER_SEC; } printf("End"); getch(); }
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream, stdlib.h, time.h, conio.h
- Объявление переменных: start (начальное время), s (требуемое время), k (переменная для хранения времени, прошедшего с начала игры)
- Вычисление начального времени
- Вход в цикл while, который будет выполняться до тех пор, пока время, прошедшее с начала игры, не достигнет требуемого времени
- Внутри цикла вычисляется время, прошедшее с начала игры до текущего момента
- Обновляется значение start (текущее время)
- Выполняется код, соответствующий игре
Тетрис
- После окончания игры выводится сообщение
End
- Программа ожидает нажатия клавиши для завершения работы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д