Главная страница

ваав. Создание игрового приложения Тетрис на языке программирования Ja. Курсовая работа Создание игрового приложения на языке программирования Java


Скачать 1.98 Mb.
НазваниеКурсовая работа Создание игрового приложения на языке программирования Java
Дата20.03.2022
Размер1.98 Mb.
Формат файлаrtf
Имя файлаСоздание игрового приложения Тетрис на языке программирования Ja.rtf
ТипКурсовая
#405726
страница2 из 3
1   2   3
» и «теннис»), англ. Tetris - культовая компьютерная игра, изобретённая в СССР Алексеем Пажитновым и представленная общественности 6 июня 1984 года . Идею «Тетриса» ему подсказала купленная им игра в пентамино .
.1 Правила игры тетрис
Случайные фигурки тетрамино падают сверху в прямоугольный стакан шириной 10 и высотой 20 клеток. В полёте игрок может поворачивать фигурку и двигать её по горизонтали. Также можно «сбрасывать» фигурку, то есть ускорять её падение, когда уже решено, куда фигурка должна упасть. Фигурка летит, пока не наткнётся на другую фигурку либо на дно стакана. Если при этом заполнился горизонтальный ряд из 10 клеток, он пропадает и всё, что выше его, опускается на 1 клетку. Темп игры постепенно увеличивается. Название игры происходит от количества клеток, из которых состоит каждая фигура. Игра заканчивается, когда новая фигурка не может поместиться в стакан. Игрок получает очки за каждую фигурку, поэтому его задача - заполнять ряды, не заполняя сам стакан как можно дольше, чтобы таким образом получить как можно больше очков.
.2 Начисление очков в игре тетрис
Начисление очков в разных версиях «Тетриса» довольно разнообразное. Очки могут начисляться за убранные линии, за сброшенные фигурки, за переход на новую скорость и тому подобное.

При начислении очков за линии количество очков обычно зависит от того, сколько линий убрано за один раз. Например, в китайских «Тетрисах» , популярных в СНГ в 1990-х годах, начисление очков обычно было таким: 1 линия - 100 очков, 2 линии - 300 очков, 3 линии - 700 очков, 4 линии (то есть, сделать Тетрис) - 1500 очков. То есть, чем больше линий убирается за один раз, тем больше отношение количества очков к количеству линий. Любопытно, что тетрисом во многих версиях игры также называется действие, после которого исчезает сразу 4 линии. Это можно сделать только одним способом - сбросить «палку» (фигурку, в которой все клетки расположены на одной линии) в «шахту» ширины 1 и глубины как минимум 4.

При начислении очков за сброшенные фигурки могут учитываться высота, на которой остановилась фигурка (например, чем ниже, тем лучше), расстояние, которое пролетела фигурка после «сбрасывания» (ускорения падения). Хотя обычно приоритетом являются линии, а за фигурки начисляется относительно небольшое количество очков.
.3 Теоретические проблемы
Обычно игрок проигрывает из-за того, что не может справиться со слишком быстрым темпом игры, или потому, что данная реализация реагирует на клавиши слишком медленно по сравнению с ускоряющимся темпом падения фигурок, вследствие чего игрок уже не может в принципе приложить достаточное количество сдвигов к фигурке.

Была опубликована статья, автор которой доказывает, что даже если бы игрок реагировал мгновенно и всегда принимал правильные решения, то и в этом случае он бы в конечном счёте проиграл. Проблемой являются S- и Z-образные фигурки. Достаточно большое количество S-фигурок заставит игрока оставить дырку в правом нижнем углу. Достаточно большое количество Z-фигурок после этого заставит игрока оставить дырку в левом углу следующего ряда, не заполнив предыдущую дырку. Если после этого опять выпадет достаточно много S-фигурок, достаточно много Z-фигурок, и так много раз, заполнится (с дырками по краям) всё поле, и для следующей фигурки места не останется. Если генератор случайных чисел идеален, любая (в том числе и такая) комбинация рано или поздно выпадет

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

Некоторые задачи, решения которых применяются в игре, являются NP-полными .

3. Этапы программирования
В данном разделе будет подробно рассмотрен каждый из классов данной работы, его поля и методы.

Для написания окна программы,и панели управления и главного класса и проигрование музыки будем использовать следующие функции которые представлены в таблицах 1 и 2
Таблица -- 1интерфейс игры

Поле

Описание поля

у finalstaticint PLAY = 1

Состояние «игра в процессе»

finalstaticint STOP = 2

Сосотояние «игра остановлена»

finalstaticint PAUSE =3

Состояние «играприостановлена»


Таблица -- 2 интерфейс игры

Метод

Описание метода

publicvoidstartNewGame()

Начать новуюигру

publicvoidpauseGame()

Приостановить игру

publicvoidresumeGame()

Продолжить игру

publicvoidstopGame()

Остановить игру

publicintgetScore()

Получить счет

publicintgetState()

Получить состояние игры

publicvoidfigureMoveRight()

Двигать фигуру вправо

publicvoidfigureMoveLeft()

Двигать фигурувлево

publicvoidfigureMoveDown()

Двигать фигуру вниз

publicvoidfigureRotate()

Повернуть фигуру

publicvoidgamePauseResume()

Изменить состояние игры pause на play и наоборот

publicstaticvoidmain(String[] args)

Запуск программы,

publicclassTetrisFrame

Окно программы

publicTetrisFrame()

Конструктор классаTetrisFrame

privatevoid tetrisGamePanel1KeyPressed (java.awt.event.KeyEventevt)

Обработка нажатия клавиш управления

PrivatevoidmenuNewGame1ActionPerformed (java.awt.event.ActionEventevt)

Обрабка выбора пункта меню «StartNewGame»

privatevoid menuPauseGame1ActionPerformed (java.awt.event.ActionEventevt)

Обрабка выбора пункта меню «StopGame»

privatevoid menuFileExit1ActionPerformed (java.awt.event.ActionEventevt)

Обрабка выбора пункта меню «Exit»

publicvoidcontinueButtonPressed (ActionEventevt)

Обрабка нажатия кнопки «Resume»

publicvoidpauseButtonPressed (ActionEventevt)

Обробка нажатия кнопки «Pause»

publicclassPlaySound

Проигрование музыки

publicPlaySound(String s)

Конструктор класу PlaySound

protectedvoidplay(Stringfile)

Проигрование музыки


Для управления,контструирования,и покраски и их разных типов фигурок тетрамино напишем следующий класс publicclassFigure ,будем использовать следующие функции которые представлены в таблице -3и 4
Таблица -- 3 шаблоны фигур

Поле

Описание поля

finalstaticbyte[][][] PATTERN

Шаблон фигур

finalstaticColor[] COLORS

Шаблон цветных фигур

privateint[][] pat

Шаблон фигур

privateint x

Координата х

privateint y

Координата у

privateintrotation

Угол

privatestaticintnextType

Следующий тип фигуры

privatestaticintnextRot

Следующий угол


Таблица 4.конструктор фигур

Метод

Описание метода

publicFigure()

Конструктор класу Figure

publicintgetX()

Получить х

publicintgetY()

Получить у

publicintgetHeight()

Получить высоту

publicintgetWidth()

Получить ширину

publicintgetCell(int i, int j)

Получить содержимое фигиры

publicvoiddraw(Graphics g)

Рисовать фигуру

publicvoiddrawNext(Graphics g, intpx, intpy)

Рисовать следующию фигиру

publicvoidrotate()

Повернуть фигуру

publicbooleancanDown

Можно двигать фигуру вниз?

publicvoidmoveDown()

Двигать фигуру вниз

publicbooleancanLeft(Glassstakan)

Можно двигать фигурувлево?

publicbooleancanRight(Glassstakan)

Можно двигать фигуру вправо?

publicbooleancanRotate(Glassstakan)

Можно повернуть фигуру ?

publicvoidmoveLeft()

Двигать фигуру влево

publicvoidmoveRight()

Двигать фигуру вправо


Таблица5.создание publicclassGlass - клас стакан

Поле

Описание поля

privateint[] x

Координата х стакана

privateint[] y

Координата у стакана

privateint[][] cells

Содержание стакана


Таблица 6.

Метод

Описание метода

publicGlass()

Конструктор классаGlass

publicvoidclearGlass()

Очистка стакана

publicintgetHeight()

Получить высоту стакана

publicintgetWidth()

Получить ширину стакана

publicintgetCell(int i, int j)

Получить содержимое стакана

publicvoiddraw(Graphics g)

Рисование стакана

publicvoiddrawCell(Graphics g, int i, int j)

Рисование ячейки стакана

publicintacceptFigure(Figure f)

Принятие стаканом фигуры,упала

privateint[] y

Координата у стакана

privateint[][] cells

Содержание стакана

privateintclearFullLines()

Очистка полностью заполненых линий

Для написания панели кнопок будем созвать --publicclassButtonPanel -

Таблица7 -панель кнопок

Метод

Описание метода

publicButtonPanel(TetrisFrameframe)

Конструктор классаButtonPanel

privatevoid jButton1ActionPerformed (java.awt.event.ActionEventevt)

Обробка нажатия кнопки «Resume»

privatevoid jButton2ActionPerformed (java.awt.event.ActionEventevt)

Обробка нажатия кнопки «Pause»


Таблица 8.

Поле

Описание поля

privateGlassstakan

Стакан тетриса

privateFigurefig

Текущаяфигура

privateintscore

Счет игры

privateintgameState

Состояние игры

privateint[] DELAY

Пауза для падения по уровням

privateintlevel

Уровеньигры


Таблица 9.

Метод

Описание метода

publicTetrisGamePanel()

Конструктор классаTetrisGamePanel

publicvoidpaintComponent(Graphics g)

Рисование стакана ,фигуры,счета и уровня игры

publicintgetScore()

Текучий счет игры

publicvoidstartNewGame()

Начать новую игру

publicvoidpauseGame()

Приостановка игры

publicvoidresumeGame()

Продолжение игры после паузы

publicvoidstopGame()

Остановить игру

publicintgetState()

Получить состояние игры

publicvoidfigureMoveRight()

Двигать фигуру вправо

publicvoidfigureMoveLeft()

Двигать фигурувлево

publicvoidfigureMoveDown()

Двигать фигуру вниз

publicvoidfigureRotate()

Перевернуть фигуру

publicvoidgamePauseResume()

Изменить состояние игры payse на play и наоборот

publicvoidactionPerformed(ActionEvent e)

Оброботка действия,события таймера


.1 Описание интерфейса программы
Запустив игру фигуры начинают спускаться. Для управления фигурой нужно пользоваться клавишами навигации. Для того, чтобы приостановить игру нужно нажать кнопку «Pause» или клавишу F3. Для продолжения игры необходимо нажать кнопку «Resume» или клавишу F3. Для начала новой игры нужно выбрать пункт меню «Start New Game» или нажать клавишу F2, а для того, чтобы остановить игру совсем - выбрать пункт меню «Stop Game». Для выхода из игры нужно выбрать пункт меню «Exit» или просто закрыть программу.

Инструкция по установке

На компьютере должна быть установлена JRE (виртуальная машина Java)

Монитор должен поддерживать режим 1024х768х24bit

kb на жестком диске

Чтобы выполнить проект из командной строки, перейдите в каталог, где находится файл и наберите следующее: Java-jar "TetrisGame.jar" или запустите двойным щелчком мыши.
1   2   3


написать администратору сайта