Курсовая Работа Java - Игра (Game)
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
им. Р.Е. АЛЕКСЕЕВА
ИНСТИТУТ ЭКОНОМИКИ И УПРАВЛЕНИЯ
КУРСОВАЯ РАБОТА
«Разработка собственной игры на языке Java»
Выполнил: Студент группы 20-САИ
Наймушин Сергей Михайлович Проверил: И. В. Тюрин
Нижний Новгород 2021
Содержание:
Введение………………………………………………………. 3 стр
Постановка основной задачи ………………………………… 4 стр
Описание работы программы…………………………… 5 – 11 стр
Скриншоты работы программы и ссылка на GitHub…. 13 – 15 стр
Введение:
В данной работе рассматривается решение поставленной задачи, а именно разработка собственной игры, на языке программирования Java, с помощью знаний, полученных в процессе обучения.
Основная задача:
Я решил сделать небольшую и простенькую игру, но которая будет затрагивать все пройденные нами темы в ходе обучения.
Базой своей игры я решил сделать, всем известную змейку, но с изменением большей части игрового аспекта. Мне требуется реализовать игровое поле, определённого цвета и размера, на котором будет перемещаться Гном и собирать Руду. Поле должно быть ограниченным, имеющим стены и возможность столкновения с ними. Также требуется реализовать механику столкновения с врагами, в виде Гоблинов, после которого наступает конец игры, что собственно тоже необходимо создать.
Описание работы:
Класс MainWindow
Это основной класс. Прописываем в нем конструктор и здесь же задаём основные параметры и свойства нашего окна (Название окна, размеры поля, отображение, кнопки на окне). Программа будет начинать работу с функции main, так как именно в ней создается экземпляр класса MainWindow.
Класс GameField
Это наш экран с основным действием игры.
Тут начинаем с внесения констант и необходимых переменных, для дальнейшего написания кода.
В отдельных переменных мы храним координаты Руды и Гоблинов, а в отдельных массивах храним координаты нашего Гнома.
Поля left, right, up и down ответственны за передвижение Гнома.
Здесь мы также устанавливаем размер одного блока игрового поля, время отрисовки и цвет фона.
С помощью строки initGame, мы начинаем непосредственно нашу игру.
После создания необходимых полей и внесения переменных, мы создаем необходимые методы для работы программы:
loadImages – метод с помощью которого мы загружаем наши изображения в игру через ImageIcon. Не забывая при этом заранее сделать все исходники размером 16x16 пикселей, так как именно 16 пикселей являются размером одного блока игрового поля.
initGame() – в этом методе задаю Гнома в единственном числе и через цикл for задаю начальные координаты его появления. Здесь же создаем таймер, который будет отрисовывать изображения Гнома 1 раз в 200 мили секунд. Тут же вызываем метод createOre() для создания Руды и Гоблинов на игровом поле, после начала.
createOre() – в этом методе задаем случайное создание Руды и Гоблинов по X и Y координатам. При этом их появление строго ограничено количеством блоков игрового поля, что мы и указываем.
actionPerformed() – метод, который будет вызываться по каждому тику таймера. Для импорта данного метода используем интерфейс ActionListener. В этот метод помещаем все методы, которые контролируют процессы игры и требуют таймера. В этом же методе указываем перерисовку поля с помощью метода repaint().
move() – в этом методе прописана вся логика передвижения Гнома по игровому полю и блокам, с помощью изменения координат X и Y. Так как этот метод является отслеживающим методом игры, то есть требующим таймер, то мы помещаем его в метод actionPerformed().
paintComponent() – метод, который рисует наше игровое поле.
И по условию если мы находимся в игре if(inGame), то у нас происходит отрисовка трёх изображений, а именно Гнома (dot), Гоблина (Goblin) и Руды (Оre).
Изображения рисуются каждый тик по заданным координатам, но если мы находимся не в игре, то есть inGame = false, то на экран выводится надпись поражения и наступает конец игры. Как мы видим сама надпись поражения мы можем изменять, устанавливать шрифт, размер, цвет и расположение относительно игрового окна.
checkApple() – метод, который отвечает за столкновение Гнома с Рудой и Гоблинами. Схема такова, если координаты Гнома станут равны координатам одного из случайно появившихся объектов, то в случае с Рудой, это запустит метод createOre(), а в случае с Гоблином приведёт к концу игры, так как у нас присутствует установка inGame = false.
checkCollisions() – метод, который отвечает за выход Гнома за границы игрового поля, то есть столкновение со стеной. Здесь делаем привязку к изначально заданному размеру игрового поля и за выход за границы этого поля, присуждается поражение.
class FieldKeyListener
Это класс, который расширяет KeyAdapter, а точнее, его метод keyPressed.
Здесь мы делаем особые установки в управлении Гнома, такие как невозможность вернуться следующим шагом, на предыдущий блок игрового поля. То есть невозможность передвигаться назад.
Скриншоты работы программы и ссылка на GitHub
Как мы видим, здесь присутствует Гном, который перемещается по серой пещере, и случайным образом появляющиеся Гоблины и Руда.
Экран поражения, в случае столкновения с врагом или же выходом за пределы игрового поля.
Ссылка на github:
https://github.com/KoniSavara/ITS-ME-KONIO/tree/Cursovay-2021/DwarfCave