Разработка и реализация игры Packman
Автор: Lykor • Декабрь 9, 2022 • Практическая работа • 11,728 Слов (47 Страниц) • 165 Просмотры
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Омский государственный технический университет»
Кафедра «Информатика и вычислительная техника»
Расчетно-графическая работа
по дисциплине
«Проектирование и тестирование программного обеспечения»
на тему
«Разработка и реализация игры Packman»
Омск 2021
Содержание
Постановка задачи 3
Алгоритм реализации 4
Тестирование 6
Заключение 10
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 11
ПРИЛОЖЕНИЕ А 12
ПРИЛОЖЕНИЕ Б 29
Постановка задачи
Реализуйте:
1. Обязательные функции
1.1 На игровом поле не менее 50% экрана (можно в коде программы установить фиксированный большой размер) случайным образом расставляются «кусты» и «камни», по одному в ячейке. Пакмен, занимающий одну ячейку, управляется стрелками клавиатуры, может стоять на месте, «поедает» кусты (куст при этом исчезает) и получает за это очки. При столкновении с камнем – теряет жизнь.
1.2 Пакмен анимирован, по крайней мере открывает/закрывает рот когда движется.
1.3 Сохранение/загрузку игры в файл, доску почета (с указанием имени игрока при его внесении на доску).
2. Дополнительные функции
2.1 Раздел «помощь и советы».
2.2 Возможность включения/отключения увеличенной скорости пакмена.
2.3 Несколько ботов, которые движутся не поедая кусты, при столкновении с ними пакмен теряет жизнь или очки.
2.4 Несколько видов ботов.
2.5 Пасхальное яйцо.
Алгоритм реализации
Язык для разработки был выбран Java с использованием стандартных форм JFrame и панелей. В качестве работы с файлами выбор пал на формат json, позволяющий структурировать информацию в файле. Для работы с таким форматом передачи данных json, была подключена библиотека Gson позволяющая сериализовать и десериализовать данные. В качестве среды разработки была выбрана Intellij Idea. Проект формата – maven. Данный проект позволяет привязать библиотеку несколькими строками, которая загружается в автоматическом режиме в IDE Intellij Idea.
Было создано 4 класса – Pacman, Panel, Leader, Game.
В классе Pacman происходит создание окна с меню и добавлением панель, которая является класс Panel. Данный класс наследуется от класса JFrame, позволяющий реализовать окно. Меню окна находится сверху как и обычно у стандартных приложений. В данном меню были добавление пункты – сохрание, загрузка, лидеры, помощь. Вызовы соответствующих функций данных пунктов реализованы в классе Panel, в которой и описана игра. В качестве вывода информации о помощи, последний пункт, применялся стандартный способ вывода сообщений в java – JoptionPane.ShowMessageDialog. Конструктор класса Panel производит инициализацию класса Panel, добавление данного класса в окно созданное и вызов функции по созданию меню.
В классе Panel происходит описание собственно игры. Наследуется от класса JPanel(для реализации отрисовки в панели, т.к. этот объект является панелью которая добавляется в окно в классе Pacman) и использует интерфей ActionListener(для чтения ввода пользователя). В классе описаны движения ботов(призраков), движения игрока(пакмена), рисование объектов модели, события при нажатии, события при смерти, события при пересечении объектов различных в модели игры и т.п. Все данные об игре, хранятся в классе Game. В данном классе, Panel, реализована с работа с ними. Движение призраков и пакмена практически идентично, за исключением что призраки могут проходить сквозь камни без последствий. Собственно движение представляется собой перемножение направления на скорость и суммой данного со старой переменной отвечающей за координату. Направление определяется в случае с призраками случайно, а в случае пакмена в зависимости от введенных пользователем клавиши. Переменная характеризующая направление может хранить числа от -1 до 1, что соответствует движению, если брать координаты по X, влево и вправо. Карта игры рисуется исходя из сгенерированного массива данных. Массив одномерный. Цифры соответствующие объектам на карте - 2(камень), 4(пасхальное яйцо), 16(трава). Сохранение игры происходит путем указания пути и название файла, преобразования объекта Game в формат json и записи в файл с форматом .json. Загрузка сохраненной игры представляет собой выбор файла из проводника(в формате json ранее сохраненный) и после прочтения строки происходит преобразование в объект Game с помощью библиотеки Gson. Таким образом благодаря библиотеке Gson, загрузка и сохранение файлов со строкой json реализуема практически в 2-х строках. В данном классе есть описание таблицы лидеров. После каждой завершенной игры, т.е. игрок умер, пользователю предлагается ввести имя. Данное имя после передается в массив объектов, который запишется в файл посредством использования Gson библиотеки. Вывод таблицы лидеров производится в меню окна, а функция описана в данном классе. Производится сортировка по убыванию лидеров таблицы и выводятся 3 лучший игрока по количеству очков. Игрок может ускоряться в 2 раза и возвращаться на обычную скорость по нажатию кнопки – А. Доступно и остановка игрока кнопкой – S. Завершение игры производится с помощью – Esc.
...