Разработка компьютерной игры 'Лабиринт'

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,19 Мб
  • Опубликовано:
    2017-01-18
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка компьютерной игры 'Лабиринт'















Разработка компьютерной игры «Лабиринт»

ВВЕДЕНИЕ

компьютерный игра программный

Ни для кого не секрет, что видео игры прочно заняли свою позицию в современной индустрии развлечений и развитий. Существуют попытки выделить компьютерные игры как отдельную область искусства, наряду с театром, кино и т.п. Разработка игр может оказаться не только увлекательным, развивающим, но и прибыльным делом, примеров этому предостаточно в истории. Первые примитивные компьютерные и видео игры были разработаны в 1950-х и 1960-х года.В настоящее время, разработка игры - это многомиллионный процесс, в котором задействована целая команда разработчиков, сложные современные технологии и даже маркетинговые ходы.Существует область человеческой деятельности, в которой лабиринты являются необходимым атрибутом - это компьютерные игры. Действительно, почти все игры приключенческих жанров и аркады используют лабиринты. Встречаются они и в других жанрах: логические игры, экшен. изредка в симуляторах. В связи с этим у пользователя появляются две задачи: прохождение лабиринтов в игровых программах и создание лабиринтов для "своих" игр. Целью выполнения курсовой работы является разработка компьютерной игры «Лабиринт», позволяющая развивать мышление, логику и непосредственно реакцию. Так же для разработки компьютерной игры, были поставлены следующие задачи:

·    пользователь должен передвигаться с помощью клавиш клавиатуры, с целью нахождения выхода из лабиринта за определенное время;

·    необходимо реализовать статистику прохождения игроков, в которойуказанно время прохождения, имя игрока и баллы за затраченное время. Баллы должны учитываться соответственно с затраченного времени на нахождение выхода из лабиринта;

·    разработать функцию редактора лабиринта.

1.ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ РАЗРАБОТКИ, НАЗНАЧЕНИЯ И ЭКСПЛУАТАЦИИ КОМПЬЮТЕРНОЙ ИГРЫ «ЛАБИРИНТ»

.1 Общие сведения о компьютерной игре «Лабиринт»

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

Лабиринты известны человечеству с древних времен - много раз ветвящиеся узкие коридоры, в которых можно было без проблем заблудиться и остаться там очень надолго. Если вспомнить миф о Тесее и Минотавре, в котором главный герой Тесей расправился с Минотавром. С тех пор лабиринты стали нести оборонительную и развлекательную роль. Осаждающие крепость отряды терялись в коридорах из стен и башен и погибали под градом стрел и камней обороняющихся. Позже стали популярны и садовые лабиринты, в которых располагались скамейки, фонтанчики и другие элементы декора. Особенно часто их создавали в Англии и во Франции.Головоломки стали очень популярны приблизительно в конце 19 века. В них необходимо было найти выход из лабиринта, и разгадывались они, как правило, очень быстро. Со временем вышли в свет и объемные головоломки, в которых необходимо было завести или вывести шарик в центр, или из центраи многие другие разновидности реализации игры «Лабиринт».Главной особенностью игры является мышление ведь оно как ничто другое влияет на полноценное развитие и умственные способности человека. Со временем игра «Лабиринт» стала одной из самых популярных игр, развивающих логическое мышление.

.2 Существующие среды реализации компьютерной игры «Лабиринт»

Существует большое количество языков программирования,с помощью которых можно разработать компьютерную игру «Лабиринт», такие как: С/С++, ActionScript, Java/JavaScript, Pascal, Basic, Delphi и многие другие. Приведем конкретные примеры готовых разработанных версий компьютерной игры «Лабиринт». Рассмотрим пример реализации игры на объектно-ориентированном языке программирования ActionScript. Он являетсяоднимиз диалектов ECMAScriptи используется в основном в качестве основы для построения других скриптовых языков, который добавляет интерактивность, обработку данных и многое другое в содержимое Flash-приложений. ActionScript исполняется виртуальной машиной ,которая является составной частью Flash Player. в основе ActionScript лежит программный код. Код - это инструкции, которые говорят Flash что нужно делать. Когда записываются несколько инструкций подряд, создается программный код. Можно управлять частями созданного кода, вводя определенные параметры.

Перейдем непосредственно к разработанной игре «Лабиринт». Игра создана в программном продукте Flash ,который позволяет разрабатывать интерактивные мультимедийные приложения. с использованием встроенного скриптового языка ActionScript. Версия игры разработана в простом варианте. Пользователь начинает игру нажав правой кнопкой мыши в центр экрана. Фрагмент начала игры представлен на рисунке 1.1.

Рисунок1.1 - Начало игры

Целью этой игры является нахождение выхода из лабиринта. Персонажем,для движения по лабиринту, является красный квадрат, движение осуществляется с помощью стрелок клавиатуры - вверх, вниз, вправо, влево. В игре дается время, ограниченное одной минутой, если пользователь не пройдет до выхода за минуту, то соответственно игра для него окончена и ему предоставляется возможность пройти лабиринт заново. Фрагмент игры представлен на Рисунке1.2.

Рисунок 1.2 - Нахождение пути для выхода из лабиринта

Существует более сложная в реализации версия игры «Лабиринт», которая разработана на встроенном языке программирования 1С:Предприятие - он используется в семействе программ «1С:Предприятие». Данный язык программированияявляется важной частью технологической платформы 1С:Предприятия версии - 8, поскольку позволяет разработчику описывать собственные алгоритмы функционирования прикладного решения. Встроенный язык имеет много общих черт с другими языками, такими как Pascal, Java Script, Basic, что облегчает его освоение начинающими разработчиками. Однако он не является прямым аналогом какого-либо из перечисленных языков.

Перейдем непосредственно к разработанной игре «Лабиринт». Целью игры так же является нахождение выхода из Лабиринта. На рисунке 1.3 представлен фрагмент динамической генерации лабиринта, он может бытьпроизвольных размеров.

Рисунок 1.3 - Генерация лабиринта

Управление персонажем, которым является красный квадрат, осуществляется с помощью цифровых клавиш находящихся на клавиатуре справа, числа :4 - влево, 8- вверх, 6- вправо, 5-вниз.

Существует два режима игры этой версии:

·    Легко - игрок движется в заданном направлении до первого перекрестка или тупика

·    Тяжело - движение в заданном направлении = 1 клетке лабиринта.

Фрагмент игры в легком режиме представлен на рисунке 1.4.

Рисунок 1.4 -Нахождение пути для выхода из лабиринта

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

Существуетверсия компьютерной игры «Лабиринт», разработанная в среде реализации TurboPascal. Онанаписана надиалекте языка программирования Pascal.Turbo Pascal - это интегрированная среда разработки программного обеспечения для многих платформ, языком программирования в этой среде является диалект языка Паскаль от фирмы Borland. Разновидностью языка программирования Pascal , на которой разработана программа, является Object Pascal.

Разработанная игра «Лабиринт» с помощью языка программирования Pascal является в некоторой степени уникальной. Это объясняется тем что цель игры значительно отличается от выше перечисленных существующих компьютерных игр «Лабиринт». Игровое поле представляет собой лабиринт, по которому игрок может перемещаться с помощью клавиш управления курсора. В случайном месте игрового поля возникает «приз» в виде доллара. Задача пользователя - добраться до приза раньше, чем он исчезнет. Если игрок достигает приза, он получает очко. Если пользователь не успевает достичь приза, приз исчезает и в новом случайном месте появляется новый приз. Фрагмент игры представлен на рисунке 1.5.

Рисунок 1.5 - Нахождение «приза»

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

Для разработки компьютерной игры «Лабиринт», по заданной теме курсовой работы, была выбрана наиболее оптимальная среда реализации BorlandC++ Builder 6.0.Это система объектно-ориентированного программирования C++ Builder производства корпорации Borland. Главными причинамивыбора данной среды реализации являются то, что скорость визуальной разработки достаточно высокая, гораздо больше компонент для реализации визуального программирования и конечно же прост в реализации. Самым главным преимуществом является наличие большого количества литературы для изучения данного продукта. Так же большинство компонентов, разработанных в Delphi, можно использовать и в C++ Builder без модификации, но обратное утверждение не верно.++ Builder может быть использован везде, где требуется дополнить существующие приложения расширенным стандартом языка C++, повысить быстродействие и придать пользовательскому интерфейсу качества профессионального уровня.BorlandС++ Builder - это один из самых популярных на сегодняшний день инструментов для создания компьютерных игр.Borland C++Builder предоставляет программисту широкие возможности использования кода за счет наличия библиотеки компонентов.++ Builder объединяет в себе комплекс объектных библиотек (STL, VCL, CLX, MFC и др.), компилятор, отладчик, редактор кода и многие другие компоненты.

2. РАЗРАБОТКА АЛГОРИТМОВ И ПРОГРАММНАЯ РЕАЛИЗАЦИЯКОМПЬЮТЕРНОЙ ИГРЫ «ЛАБИРИНТ»

.1 Разработка алгоритма программы в виде блок-схемы

Первый этап разработки алгоритма являлся самой основной частью программы, который включал в себя все основные компоненты и функции. Первым делом был задан массив чисел, который в будущем будет представлять собой лабиринт. Далее разработан алгоритм определения местоположения персонажа в массиве, вывода лабиринта на экран и непосредственно передвижения персонажа по лабиринту. На рисунке 2.1 представлен разработанный алгоритм реализации считывания двумерного массива с текстового файла, под названием «lab.txt», который в будущем будет являться лабиринтом для прохождения. Он состоит из 41 строки и 30 столбцов.

Рисунок 2.1 -Алгоритм считывания массива с файла

Данный алгоритм реализует функцию «schit();»,эта функция объявлена как глобальная переменная, для того чтобы использовалась в разработчике событий «FormKeyDown» и в функции «TForm1».

На рисунке 2.2 представлен алгоритм функции TForm1, который определяет местоположение в массиве, будущего персонажа.

Рисунок 2.2 - Определение местоположения персонажа

Данныйалгоритмопределяет будущему персонажу положение в лабиринте из массива. Положением будет являтьсячисло4. Следующий алгоритм, представленный на рисунке2.3. называется FormPaint.

Рисунок 2.3 - Алгоритм прорисовки лабиринта

Обработчик событийFormPaint позволяет прорисовать весь лабиринт, в том числе персонажа и выход. В алгоритме описаны условия, в которых зарисовывается тот или иной компонент. Прорисовывающиеся числа из массива являются следующие: 0 - путь, он зарисовывается фиолетовым цветом(Purple), 1- стена, зарисовывается белым цветом(White), 3 - конец лабиринта, зарисовывается синим цветом(Blue) и 4 - персонаж, зарисовывается красным цветом (Red). Следующим шагом разработкиалгоритмов программы, является обработчик событийFormKeyDown, алгоритм представлен на рисунке 2.4.


Рисунок 2.4 - Алгоритм движения персонажа

Обработчик событий FormKeyDownпозволяет реализовать движение заданным персонажем ,какими либо клавишами клавиатуры. В данном случае были применены стандартные стрелки клавиатуры, их коды 37 - влево,38- вверх, 39 - вправо,40 - вниз, соответствуют номеру на стандартной клавиатуре с 101 клавишей. При прохождении лабиринта до конца, игра скрывается и выводится на экран окно с полем для записи имени, затраченного времени на прохождение и определение баллов за прохождение лабиринта в файл, который в дальнейшем можно открыть в меню игры. Так же в обработке событий реализовано включение таймера, при начале движения персонажа для отсчета времени и в дальнейшей записи результата в текстовый файл. Следующим решениемразработки алгоритмов программы сталоприменение компонентыTimer1, алгоритм которой представлен на рисунке 2.5.

Рисунок 2.5 -Алгоритм отсчета таймера

Данный алгоритм выполняет отсчет таймера, при нажатии на какую либо клавишу передвижения. Отсчет времени начинается с 60 секунд в обратную сторону, то есть пользователю нужно пройти лабиринт в течение 60 секунд, при окончании времени игра приостанавливается и открывается Form5, окно в котором предоставляется возможность пройти игру заново, или вовсе выйти из нее.

На рисунке 2.6. представлен алгоритм позволяющий редактировать лабиринт.

Рисунок 2.6 - Алгоритм редактирования лабиринта

В данномалгоритме осуществляется замена 0 и 1. Пользователь может передвигаться по всему лабиринту произвольно меняя стену(1) на путь(0) или наоборот. при нажатии на клавишу с кодом 32, то есть «пробел». Так же в программе редактирования лабиринта, созданалгоритм сохранения отредактированного лабиринта, на рисунке 2.7 представлен алгоритм реализации.

Рисунок 2.7 - Алгоритм сохранения массива в файл

Данная функция называется «save();» она так же объявлена как глобальная переменная и используется в программе редактирования лабиринта, при нажатии на командную кнопку «Сохранить».

2.2 Программная реализация и тестирование разработанного программного продукта

Программная реализация алгоритмов осуществлялась с помощью программного продуктаBorland C++ Builder 6.0.Для реализации компьютерной игры «Лабиринт» выбран способ визуального программирования, в котором использовались визуальные компоненты среды реализации C++ Builder.

В коде разработанной программы подключены стандартные библиотеки «#include <vcl.h>» - предназначена для поддержки принципов визуального программирования, «#include <stdio.h>» - стандартный заголовочный файл ввода-вывода. Так же подключены к главному проекту файлы с кодами.

#include "Unit1.h"

#include "Unit2.h"

#include "Unit7.h"

Файл «"Unit1.h"» содержит код, который выводит на экран главное меню игры. Меню игры представлено на рисунке 2.8.

Рисунок 2.8 - Главное меню игры

Как видно изначально на этом рисунке описана цель игры, которая заключается в прохождении лабиринта за определенное время.

Для создания меню использовались такие компоненты как :Label- предназначена для показа текста в форме программы,Button-простая командная кнопка. Изменение цвета текста осуществлялось в свойствах компоненты Label.

Для открытия какого-либо окна используется функция «Form->Show();» Первым делом при нажатии на кнопку «начать новую игру» в проекте «"Unit2.h"» с текстового файла считывается массив чисел, который позволяет вывести лабиринт на экран. Ниже представлен код реализации данного действия:

fstreamfs( "lab.txt" );

for( int i = 0; i < n; i++ )

for( int j = 0; j < m; j++ )>> mas[i][j];.close();

На рисунке 2.9 представлен фрагмент начала игры, после считывания с текстового файла массива при нажатии на кнопку начать новую игру.

Рисунок 2.9 - Начало игры

Для прорисовки лабиринта цветами, использовалсякласс -Canvas. Он предназначен для вывода и хранения графических объектов в C++ Builder, так же свойством,который используется для установки цвета, текстуры при заливке графических фигур и фона класса Canvas, является «Brush».Ниже представлен код реализации прорисовки всех компонентов лабиринта.

 

for( inti=0; i<n; i++ )( int j=0; j<m; j++ )

{( mas[i][j] == 0 )>Brush->Color = clPurple;if( mas[i][j] == 1 )>Brush->Color = clWhite;if ( mas[i][j] == 4)>Brush->Color = clRed;if ( mas[i][j] == 3)

Canvas->Brush->Color = clBlue;

Как было описано в цели и правилах игры, при начале движения начнется отсчет времени. Ниже представлен код,в котором реализовано движение персонажа клавишами клавиатуры с помощью оператора «switch».

 

void __fastcall TForm2::FormKeyDown(TObject *Sender, WORD &Key,Shift)

{switch( Key )

{37 : { if(ypr.x>0 && mas[ypr.x - 1][ypr.y] != 1) ypr.x--;} break; 38 : { if(ypr.y>0 && mas[ypr.x][ypr.y - 1] != 1) ypr.y--;} break;

...

}

Данный код осуществляется в обработчике событий, который и позволяет передвижение персонажа. В операторе «switch» реализован выбор клавиши: «сase 37»означает номер клавиши клавиатуры, которая является стрелкой влево, «сase 37» является стрелкой вверх и т.д.

Для начала отсчета времени был применен компонент «Timer», к таймеру присвоили компонент «Label», для вывода отсчета времени. Ниже представлен код, в котором осуществляется отсчет таймера и присвоение таймера к текстовому выводу:

 

void __fastcall TForm2::Timer1Timer(TObject *Sender)

{if(t> 0)

{t--;->Caption = IntToStr(t);

}{Timer1->Enabled = false;Form5->Show();}}

После того как пользователь начал движение персонажем, происходит отсчет времени, то есть таймер включается. Первоначально таймер имеет значение false, а приначале движения, таймер принимает значение true.

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

.

Рисунок 2.10 - Выбор «да» или «нет».

Если же игрок успевает пройти лабиринт до того как пройдет 60 секунд, то открывается окно с сохранением имени. Ниже представлен основной код данного действия.

Фрагментисходногокода:

 

FILE *f=fopen("result.txt","a+");(f,"Имя: %s \n",Edit1->Text);(f,"---------------------------------------------------\n");(f);

Как видно при записи в файл используется функция «а+», которая позволяет сохранять последующую информацию без удаления предыдущей содержащей информации в текстовом файле. На рисунке 2.11изображен фрагмент открытия окна с сохранением имени игрока в текстовый файл «result».

Рисунок 2.11 - Сохранение имени

В то время как сохраняется имя, в текстовый файл «result» записывается так же затраченное время на прохождение и баллы за затраченное время.

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

На рисунке 2.12показан фрагмент программы, в котором открывается проект «"Unit3.h"», а точнее окно редактора лабиринта, при нажатии в главном меню на кнопку «Редактировать лабиринт».

Рисунок 2.12 - Редактирование лабиринта

На данном рисунке представлен уже отредактированный лабиринт. Редактирование происходит после нажатия на клавишу «пробел», стена меняется на путь и наоборот. Ниже представлен код реализации данного действия.

Фрагмент исходного кода:

 

switch( Key )

{ case 37 : { if( mas[ypr.x - 1][ypr.y] < 3) ypr.x--;} break;

…32 : {if (mas[ypr.x][ypr.y]==1) mas[ypr.x][ypr.y] = 0;if (mas[ypr.x][ypr.y] ==0) mas[ypr.x][ypr.y] = 1;if (mas[ypr.x][ypr.y] ==4) mas[ypr.x][ypr.y] = 4; }break;}

Перед тем как сохранить отредактированный лабиринт необходимо поместить «персонажа» на то место, где он будет находится перед началом новойигры. Для сохранения изменений в лабиринте, необходимо на панели сверху нажать раздел «Файл» и выбрать пункт «Сохранить», в таком случае исходный лабиринт, а точнее массив чисел, перезаписывается в тот же текстовый файл где он и находился изначально при считывании.

При нажатии на пункт «Сохранить» ,открывается главное меню игры.Для игры в отредактированном лабиринте, стоит начать новую игру.

В главном меню имеется пункт «Статистика», в ней выводятся результаты прохождений тем или иным игроком. На рисунке 2.13 изображен фрагмент открытого окна статистики.

Рисунок 2.13 - Статистика пройденных игр

Данная статистика выводится из файла «result» в компонент «Memo» позволяющий выводить текстовую информацию из данного файла. Ниже представлен фрагмент кода позволяющий реализовать данное действие.

Фрагмент исходного кода:

 

Memo1->Lines->LoadFromFile("result.txt");

И наконец при нажатии в главном меню кнопки «Выход», игра соответственно закроется с помощью функции «Close();»

ЗАКЛЮЧЕНИЕ

В результате выполнения курсовой работы была достигнута цель,то есть разработана компьютерная игра, позволяющая пользователю проходить лабиринт, что способствует развитию мышления, реакции и, конечно же, логики.При выполненииразработана уникальная функция редактирования лабиринта, эта функция, дает возможность пользователю усложнять или упрощать лабиринт на свой вкус, что позволяет развивать дедукцию. Разработанная игра является уникальной, по отношению к существующим разработанным играм, которые были представлены выше, в том что в игре существует режим редактирования лабиринта с помощью клавиши «пробел». Вдобавок в разработанной игре создана статистика пройденных игр, в которой пользователь записывает свое имя при окончании прохождения и получает балл за затраченное время, что повышает дух соревнования между товарищами.Разработанная компьютерная игра «Лабиринт»,с целью нахождения выхода из лабиринта, не является единственной в своем роде, и имеет большое количество аналогов для всевозможных платформ. При выполнении курсовой работы были изучены различные свойства реализации, создания и проектирования компьютерных игр в программном продукте BorlandC++ Builder 6.0. Конкретно изучены основные свойства визуальных компонентов выбранной среды реализации, для графического вывода компьютерной игры.

Можно сделать выводы о том, что данный курсовой проект был выполнен в полном соответствии поставленным задачам.

2.            Мозговой М. В. Занимательное программирование. - СПб.: Питер, 2005.- 208 с.

.              Литвиненко Н. А. - Технология программирования на С++

.              Липачев Е.К. - Технология программирования. Базовые конструкции C_C++.

.              Шилдт Г. Полный справочник по С#.- Вильямс, 2008. - 752 с.

.              Архангельский А.Я.Программирование в C++ Builder 1ч, 2ч.Бином - 2010.

Похожие работы на - Разработка компьютерной игры 'Лабиринт'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!