Разработка игры "Lines"

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

Введение

 

В данном курсовом проекте должна быть разработана в среде Delphi игра Lines. Приложение должно иметь графический интерфейс, что предполагает освоение навыков работы с 2D графикой. Ввиду того, что приложение является игрой, следует обратить больше внимание на уровень интерактивности и время отклика системы.

Lines - логическая игра, в которой необходимо очищать игровое поле от шариков. Поле представляет собой квадрат, состоящий из клеток. В начале игры на него выставляется три шарика разных цветов. Как правило, используется семь (классически) различных цветов. За ход игрок может передвинуть один шарик, выделив его и указав его новое местоположение. При этом для совершения хода необходимо, чтобы между начальной и конечной клетками существовал путь из свободных клеток. При выстраивании линии из четырёх и более шариков одного цвета (по горизонтали, вертикали или диагонали) она исчезает. После каждого хода выставляются новые три шарика, но при исчезновении линии этого не происходит.

 

 

1. Постановка задачи

 

Согласно заданию необходимо написать игру Lines на языке Object Pascal в среде Delphi. Игра должна быть разработана как приложение ОС Windows.

Предполагаемый размер поля 10х10 клеток. Опытным путём было получено, что для поля такого размера оптимальное количество цветов равно 5, минимальная длина линии - 5, число появляющихся после хода шаров - 3. Более низкое значение этих параметров сделает игру слишком лёгкой, а высокое - тяжёлой.

Под игровым полем следует поместить счётчик очков. Он должен вести подсчёт убранных шаров.

Должен присутствовать метод оповещения о проигрыше. Методы оповещения о выигрыше не нужны ввиду бесконечности процесса игры.

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

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

 

 

2. Разработка программы

 

Данный раздел отражает основные аспекты программы. От общих схем работы и краткого описания до описания отдельных кусков кода.

 

2.1 Алгоритм работы программы

 

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

 

2.2 Описание метода генерации поля

 

Задачи генерации расположения трёх новых шаров и определения их цветов выполняются с помощью двух функций: Randomize и Random. Обе являются стандартными для Delphi. Randomize используется для того, чтобы каждый раз получить разный результат. Random непосредственно предоставляет случайные значения.

 

 

Рисунок 2.2 - Блок-схема алгоритма игрового процесса

 

.3 Используемые константы и переменные

 

Здесь описано назначение используемых в программе констант и переменных.

Константы:

-COUNT_COLORS - количество цветов;

-COLORS - массив используемых цветов;

-R_MAX - размер шарика;

-R_MIN - размер будущего шарика;

-FIELD_SIZE - размер одной ячейки игрового поля;

-OFFSET_X - отступ игрового поля слева от экрана;

-OFFSET_Y - отступ игрового поля справа от экрана.

Переменные:

-sizeX, sizeY: integer - размеры игрового поля;

-balls: array of array of Ball - массив шариков;

-canvas: TCanvas - холст для рисования.

-selIndexX, selIndexY: integer - индексы выделенного шарика;

-countToGenerate: integer - количество генерирующихся шаров;

-dx, dir: integer - приращение и направление анимации;

-sel, mov: boolean - флаги выбора и перемещения шаров;

-field: array of array of integer - массив чисел для поиска путей;

-score: integer - счётчик очков.

 

.4 Процедуры и функции общего назначения

 

Приведено краткое описание основных используемых функций и процедур с пояснением назначения их параметров.

Procedure doMove (m, n, m2, n2: integer) перемещает шар из одной клетки в другую.

-m, n: integer - начальные координаты;

-m2, n2: integer - конечные координаты.

Procedure doSelect (m, n: integer) производит выбор шара.

-m, n: integer - координаты выбираемого шара.

Procedure draw() отображает на экране текущее состояния игры.

Procedure click (m, n: integer) обрабатывает нажатие левой клавиши мыши.

-m, n: integer - координаты, по которым происходит нажатие;

Procedure tick() - тик от таймера.rocedure clear() - очищает поле от шаров.

Function checkFigure(): boolean проверяет наличие линий.

Function existPath (m, n, m2, n2: integer): boolean проверяет наличие свободного пути между двумя клетками.

-m, n: integer - координаты 1-ой клетки;

-m2, n2: integer - координаты 2-ой клетки.

Procedure start() запускает процесс игры.

Procedure generate() генерирует новые шары. toGameX (x, y: integer) конвертирует оконные координаты в игровую координату Х.

-x, y:integer - экранные координаты х и y.

Function toGameY (x, y: integer) конвертирует оконные координаты в игровую координату Y.

-x, y:integer - экранные координаты х и y.

Procedure lose() отвечает за события в приложении при проигрыше.

игра программа форма lines

2.5 Описание элементов формы. Обработка событий