Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовая Работа Java - Игра (Game)

.docx
Скачиваний:
58
Добавлен:
11.01.2022
Размер:
200.44 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

им. Р.Е. АЛЕКСЕЕВА

ИНСТИТУТ ЭКОНОМИКИ И УПРАВЛЕНИЯ

КУРСОВАЯ РАБОТА

«Разработка собственной игры на языке Java»

Выполнил: Студент группы 20-САИ

Наймушин Сергей Михайлович Проверил: И. В. Тюрин

Нижний Новгород 2021

Содержание:

  1. Введение………………………………………………………. 3 стр

  2. Постановка основной задачи ………………………………… 4 стр

  3. Описание работы программы…………………………… 5 – 11 стр

  4. Скриншоты работы программы и ссылка на GitHub…. 13 – 15 стр

  1. Введение:

В данной работе рассматривается решение поставленной задачи, а именно разработка собственной игры, на языке программирования Java, с помощью знаний, полученных в процессе обучения.

  1. Основная задача:

Я решил сделать небольшую и простенькую игру, но которая будет затрагивать все пройденные нами темы в ходе обучения.

Базой своей игры я решил сделать, всем известную змейку, но с изменением большей части игрового аспекта. Мне требуется реализовать игровое поле, определённого цвета и размера, на котором будет перемещаться Гном и собирать Руду. Поле должно быть ограниченным, имеющим стены и возможность столкновения с ними. Также требуется реализовать механику столкновения с врагами, в виде Гоблинов, после которого наступает конец игры, что собственно тоже необходимо создать.

  1. Описание работы:

  1. Класс MainWindow

Это основной класс. Прописываем в нем конструктор и здесь же задаём основные параметры и свойства нашего окна (Название окна, размеры поля, отображение, кнопки на окне). Программа будет начинать работу с функции main, так как именно в ней создается экземпляр класса MainWindow.

  1. Класс 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.

Здесь мы делаем особые установки в управлении Гнома, такие как невозможность вернуться следующим шагом, на предыдущий блок игрового поля. То есть невозможность передвигаться назад.

  1. Скриншоты работы программы и ссылка на GitHub

Как мы видим, здесь присутствует Гном, который перемещается по серой пещере, и случайным образом появляющиеся Гоблины и Руда.

Экран поражения, в случае столкновения с врагом или же выходом за пределы игрового поля.

Ссылка на github:

https://github.com/KoniSavara/ITS-ME-KONIO/tree/Cursovay-2021/DwarfCave

15