Файл: Курсовая работа по дисциплине Основы программирования систем управления (наименование дисциплины).docx
Добавлен: 04.12.2023
Просмотров: 265
Скачиваний: 6
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
| | | |
| МИНОБРНАУКИ РОССИИ | ||
| Федеральное государственное бюджетное образовательное учреждение высшего образования «МИРЭА – Российский технологический университет» РТУ МИРЭА | ||
| Институт искусственного интеллекта | ||
| (наименование института, филиала) | ||
| Кафедра проблем управления | ||
| (наименование кафедры) | ||
| КУРСОВАЯ РАБОТА |
| | | |
| МИНОБРНАУКИ РОССИИ | ||
| Федеральное государственное бюджетное образовательное учреждение высшего образования «МИРЭА – Российский технологический университет» РТУ МИРЭА | ||
| Институт искусственного интеллекта | ||
| (наименование института, филиала) | ||
| Кафедра проблем управления | ||
| (наименование кафедры) | ||
| | Утверждаю |
| | Заведующий кафедрой ПУ _________________ /Романов М.П./ подпись ФИО |
| | «___» ____________ 2022 г. |
| ЗАДАНИЕ | |
| на выполнение курсовой работы по дисциплине «Основы программирования систем управления» | |
-
Язык программирования C++ -
Использование средств машинной графики -
Правила игры TETRIS
-
Блок-схема алгоритма работы программы -
Результаты тестирования и отладки
| Срок представления к защите курсовой работы: до «___»_______________ 2023 г. |
| |
| Задание на выполнение курсовой работы выдал ____________________ (Морозов А.А.) подпись руководителя Ф.И.О. руководителя |
СОДЕРЖАНИЕ
| ВВЕДЕНИЕ 4 | 4 |
| Основная часть 5 | 5 |
| 1. Подготовка программы 5 | 5 |
| 2. Стартовое окно 8 | 8 |
| 3. Основной алгоритм 9 | 9 |
| 4. Меню окончания игры 15 | 9 |
| ЗАКЛЮЧЕНИЕ 17 | 10 |
| СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ 18 | 10 |
| Приложение А 19 | 14 |
| | 15 |
| | 16 |
| | 20 |
| | 27 |
| | 29 |
ВВЕДЕНИЕ
В настоящее время компьютерные игры являются одним из известнейших развлечений не только в кругу молодёжи, но также и среди людей старшего поколения. Наибольшую популярность они приобрели весной две тысячи двадцатого года, когда люди, запертые в четырёх стенах на самоизоляции, искали способы весело и интересно скоротать время дома.Тетрис – это изобретённая и разработанная советским программистом Алексеем Пажитновым в тысяча девятьсот восемьдесят четвертом году головоломка, которая знакома практически каждому человеку. Даже спустя тридцать восемь лет она не потеряла своей популярности, и стоит на первом месте списка «Лучших игр всех времён» по мнению журнала Time.Правила игры в Тетрис довольно просты: в изначально пустом поле поочерёдно «падают» различные фигурки, состоящие из нескольких квадратов. Игрок может перемещать их влево или вправо в пределах поля, а так же поворачивать на девяносто градусов. Фигурка может опускаться до тех пор, пока не окажется на дне поля, либо на другой фигурке. Если фигурки образуют заполненную линию, то есть, в пределах одного из рядов поля не окажется ни одного пустого места, то линия удаляется и все ряды над ней опускаются на позицию ниже. Теоретически игра может продолжаться бесконечно, но на практике она заканчивается, когда новая фигурка не может поместиться в стакан. Поэтому задачей игрока является заполнение рядов фигурками таким образом, чтобы игра длилась как можно дольше.ОСНОВНАЯ ЧАСТЬ
-
Подготовка программы
check(). Функция проверки тетрамино на выход за границы игрового поля довольно-таки простая и состоит из двух условий if(): первое условие if() проверяет, не вышли ли мы за границы поля слева, справа и снизу. Так как мы движемся сверху вниз, то выйти за границу сверху мы не можем, соответственно, проверять её нет смысла; второе условие if() проверяет, свободна ли сейчас ячейка, расположенная на пути движения, или занята другими тетрамино.// Проверка на выход за границы игрового поляbool check(){ for (int i = 0; i < 4; i++) if (a[i].x < 0 || a[i].x >= N || a[i].y >= M) return 0; else if (field[a[i].y][a[i].x]) return 0; return 1;};Установим условную границу, при пересечении которой игра будет проиграна, для этого создана функция endGame(). Параметром она принимает указатель на объект класса RenderWindow. При пересечении условной границы так же будет вызвана функция close() у объекта, переданного в функцию:bool endGame(RenderWindow* window){ for (int i = 0; i < N; i++) { if (field[2][i]) { window->close(); return false;}}} Для отображения фигур, меню старта, меню окончания игры созданы текстуры и спрайты:// Создание и загрузка текстурыTexture texture,texture_background, texture_frame, texture_start, texture_game_over; texture.loadFromFile("tiles.png"); texture_background.loadFromFile("background.png"); texture_frame.loadFromFile("frame.png"); texture_start.loadFromFile("start.png"); texture_game_over.loadFromFile("game_over.png"); // Создание спрайта Sprite sprite(texture), sprite_background(texture_background), sprite_frame(texture_frame), sprite_start(texture_start), sprite_game_over(texture_game_over);Теперь нужно выделить из спрайта тетрамино отдельный квадратик, чтобы можно было его использовать для построения нужных нам фигур Тетриса. Для этого воспользуемся методом setTextureRect().Затем введены переменные, которые будут использоваться в течение работы программы для отображения различных состояний или вычислений: dx типа int и rotate типа bool, которым присваиваем значение нуля – горизонтального перемещения и вращения соответственно; colorNum, которой присваиваем значение единицы типа int – разноцветности тетрамино; beginGame
типа bool, которой присваиваем значение true – первое появление фигурки на поле; n типа int, которой присваивается рандомное значение от нуля до 6; timer, которому присваиваем значение нуля, delay, которому присваиваем значение 0,3 типа float, clock объект класса Clock – перемещение фигурок; IsRun – состояние игры( в процессе или окончание).// Переменные для горизонтального перемещения и вращенияint dx = 0; bool rotate = 0; int colorNum = 1; bool beginGame = true; int n = rand() % 7; // Переменные для таймера и задержкиfloat timer = 0, delay = 0.3;Clock clock; bool IsRun = true;
-
Стартовое окно
-
Основной алгоритм