Разработка игры "Морской бой"

Выбор Borland Delphi как языка программирования. Описание игры и её правил. Запуск приложения, разработка её интерфейса и техническое описание программы. Компонент Image из компонентной вкладки Additional, который лёг в основу компьютерного приложения.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 11.10.2016
Размер файла 508,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Исследовательская часть

1.1 Язык программирования

1.2 Требования к программе

2. Конструкторская часть

2.1 Описание задания

2.2 Описание игры и её правил

2.3 Описание программы

2.4 Техническое описание программы

Заключение

Список используемой литературы

Листинг 1. Текст программы

Введение

игра интерфейс компьютерный приложение

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

1. Исследовательская часть

1.1 Язык программирования

В качестве среды, для написания компьютерной игры «Морской бой», был выбран язык программирования Borland Delphi. Далее я бы хотел представить краткую историю этого языка программирования.

Delphi -- результат развития языка Turbo Pascal, который, в свою очередь, развился из языка Pascal. Pascal был полностью процедурным языком, Turbo Pascal, начиная с версии 5.5, добавил в Pascal объектно-ориентированные свойства, а в Object Pascal -- динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией --данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.

Также отличительным свойством Object Pascal от С++ является то, что объекты по умолчанию располагаются в динамической памяти. Однако можно переопределить виртуальные методы NewInstance и FreeInstance класса TObject. Таким образом, абсолютно любой класс может осуществить «желание» «где хочу -- там и буду лежать». Соответственно организуется и «многокучность».

Object Pascal (Delphi) являются результатом функционального расширения Turbo Pascal.

Delphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Delphi, из компании Borland Ltd. в Microsoft Corp.

· Версия 1 была предназначена для разработки под 16-разрядную платформу Win16;

· Версии со второй компилируют программы под 32-разрядную платформу Win32;

· Вместе с 6-й версией Delphi вышла совместимая с ним по языку и библиотекам среда Kylix, предназначенная для компиляции программ под операционную систему GNU/Linux;

· Версия 8 способна генерировать байт-код исключительно для платформы .NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы .NET);

· Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы .NET.

Delphi for .NET -- среда разработки Delphi, а также язык Delphi (Object Pascal), ориентированные на разработку приложений для .NET.

Первая версия полноценной среды разработки Delphi для .NET -- Delphi 8. Она позволяла писать приложения только для .NET.

В настоящее время, в Delphi 2006, можно писать приложения для .NET, используя стандартную библиотеку классов .NET, VCL для .NET. Среда также позволяет создавать .NET-приложения на C# и Win32-приложения на C++. Delphi 2006 содержит функции для написания обычных приложений с использованием библиотек VCL и CLX.

Delphi 2006 поддерживает технологию MDA с помощью ECO (Enterprise Core Objects) версии 3.0.

В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки JBuilder, Delphi и C++ Builder по причине убыточности этого направления. Планировалась продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор.

Однако в ноябре того же года было принято решение отказаться от продажи IDE бизнеса. Тем не менее, разработкой IDE продуктов теперь будет заниматься новая компания -- CodeGear, которая будет финансово полностью подконтрольна Borland.

В августе 2006 года Borland выпустил облегченные версию RAD Studio под именем Turbo: Turbo Delphi (для Win32 и .NET), Turbo C#, Turbo C++.

В марте 2008 года было объявлено о прекращении развития этой линейки продуктов.

В марте 2007 года CodeGear порадовала пользователей обновленной линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового продукта Delphi 2007 for PHP.

В июне 2007 года CodeGear представила свои планы на будущее, то есть опубликовала так называемый roadmap.

25 августа 2008 года компания Embarcadero, новый хозяин CodeGear, опубликовала пресс-релиз на Delphi for Win32 2009. Версия принесла множество нововведений в язык, как-то:

· По умолчанию полная поддержка Юникода во всех частях языка, VCL и RTL; замена обращений ко всем функциям Windows API на юникодные аналоги (то есть MessageBox вызывает MessageBoxW, а не MessageBoxA).

· Обобщённые типы, они же generics.

· Анонимные методы.

· Новая директива компилятора $POINTERMATH [ON|OFF].

· Функция Exit теперь может принимать параметры в соответствии с типом функции.

1.2 Требования к программе

Данная программа предназначена для работы под управлением операционных систем Windows 98, Windows ME, Windows 2000, Windows XP, Windows 7.

Для корректной работы программного продукта потребуется персональный компьютер со следующими минимальными характеристиками:

· микропроцессор с тактовой частотой не менее 133 МГц;

· объем ОЗУ не менее 32 Мб;

· объем жёсткого диска не менее 1000 Мб;

· дисплей с глубиной цвета 32 бит;

2. Конструкторская часть

2.1 Описание задания

Совместно с научным руководителем была выбрана тема и само задание написания курсовой работы по данной дисциплине. Было предложено решить задачу написания всем известной логической игры «Морской бой».

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

2.2 Описание игры и ее правил

«Морской бой» -- игра для двух участников, в которой игроки по очереди называют координаты на неизвестной им карте соперника. Если у соперника по этим координатам имеется корабль (координаты заняты), то корабль или его часть «топится», а попавший получает право сделать ещё один ход. Цель игрока -- первым поразить все корабли противника.

Игра впервые была выпущена в виде настольной игры компанией Milton Bradley Company в 1931 году.

Рассмотрим правила настольного «Классического морского боя» который я проецировал в свою программу.

Игровое поле -- квадрат 10Ч10 каждого игрока, на котором размещается флот кораблей.

Горизонтали обычно нумеруются сверху вниз, а вертикали помечаются буквами слева направо. При этом используются буквы русского алфавита от «а» до «к» (буквы «ё» и «й» обычно пропускаются), либо буквы латинского алфавита от «a» до «l» (пропускается буква «j»). Иногда используется слово «республика» или «снегурочка», так как в этих 10-буквенных словах ни одна буква не повторяется. Поскольку существуют различные варианты задания системы координат, то об этом лучше заранее договориться.

Размещаются:

· 1 корабль -- ряд из 4 клеток («линкоры», или «четырёхпалубные»)

· 2 корабля -- ряд из 3 клеток («крейсеры», или «трёхпалубные»)

· 3 корабля -- ряд из 2 клеток («эсминцы», или «двухпалубные»)

· 4 корабля -- 1 клетка («подлодки», или «однопалубные»)

Другой вариант названия: - трубные (напр. двухтрубный).

При размещении корабли не могут касаться друг друга углами (встречаются, однако, варианты, когда это не запрещается).

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

Рядом со «своим» квадратом чертится «чужой» такого же размера, только пустой. Это участок моря, где плавают чужие корабли противника.

При попадании в корабль противника -- на чужом поле ставится крестик. Попавший стреляет ещё раз.

2.3 Описание программы

Запуск программы осуществляется следующим образом: необходимо открыть папку, содержащую данную игру, и найти исполняемый файл Battleship.exe.

После запуска игры на экране появляется окно приложения, уже в режиме расстановки кораблей, с панелью главного меню в верхней части окна (рис. 1).

Рис. 1.

Главное меню содержит две основные кнопки: «Игра» в которой размещены кнопки «Новая игра» и «Выход», а так же вторая основная кнопка «Помощь» в которой в свое время находятся еще 2 кнопки «Правила игры» и «О программе»

А теперь подробнее о каждой из кнопок в главном меню.

«Новая игра» - позволяет начать новую игру или перезапустить текущую.

«Выход» - полностью закрывает программу.

«О программе» - краткое описание о разработчике программы.

«Правила игры» - описание основных правила игры и управления (рис. 2).

Рис. 2.

2.4 Техническое описание программы

В основу данного компьютерного приложения лег компонент Image из компонентной вкладки Additional.

Использование данного компонента обусловлено его простотой и функциональностью. Одним из плюсов данного компонента является возможность использовать изображения различных расширений(*.bmp, *.jpg, *.png). Помимо этого с помощью Image проще расположить в окне приложения несколько изображений и управлять ими. Большое количество свойств, таких как Picture, Canvas, Transparent, Enable, Disable, Show, Hide и т.д. обусловили мой выбор. Именно в этом компоненте в полной мере проявляются преимущества визуального программирования.

Для работы с изображениями было выбрано свойство Canvas. При помощи этого свойства в компоненте Image можно нарисовать любую математическую фигуру, указав её название и координаты, что, собственно, и было реализовано в приложении.

Программа начинает свою работу с обработки события FormCreate компонента Form. Событие FormCreate срабатывает сразу после запуска программы, как можно понять из названия. При выполнение данного события мы визуализируем начальное состояние приложения. Области для расстановки кораблей, все подписи, главное меню приложения.

В данном программном продукте были реализованы три специальные процедуры: Rastkor, Nash, Vistrel. А также процедуры обработки нажатия кнопок главного меню.

Процедура Rastkor (расстановка кораблей) выполняется после нажатия на область с Image компонентом. После клика мы определяем координаты в области Image. После того как определили координаты, при помощи свойства Canvas компонента Image в нужную ячейку (по заранее определённым координатам) рисуем соответствующий корабль. Данная процедура тесно связана с алгоритмом определения расстояния между кораблями описанным в обработчике события FormCreate компонента Form.

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

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

Заключение

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

Несмотря на внешнюю простоту, программа представляет собой сложную систему взаимодействующих друг с другом функций. Потребовалось немало сил и времени на ее написание. Кроме того, потребовалось привлечение большого объема дополнительной информации.

В процессе выполнения курсовой работы были изучены новые возможности языка высшего уровня Borland Delphi. В процессе создания приложения был реализован алгоритм, который в дальнейшем возможно усовершенствовать. Все поставленные задачи были выполнены и разработка популярной игры «Морской бой» прошла успешно.

Список используемой литературы

1. Фаронов В.В. Delphi 6. Учебный курс. Издательство Молгачев С.В., 2001. - 672с.

2. Программирование в среде Delphi: Лабораторный практикум для студентов всех специальностей. Под общей редакцией Синицына А.К. - Мн.; БГУИР, 1998. - 94 с.

3. Програмирование в среде Delphi. Учебное пособие. Колосов С.В. - Мн.: БГУИР, 2005. - 166 с.

Листинг 1. Текст программы

Процедура заполнения переменных

procedure TForm1.FormCreate(Sender: TObject);

begin

rot:=false;

kon:=false;

k11:=3;

k33:=2;

k32:=5;

k31:=9;

m3:=0;

m2:=0;

m1:=0;

label13.Height:=0;

label14.Height:=0;

label15.Height:=0;

label16.Height:=0;

label17.Height:=0;

label18.Height:=0;

label19.Height:=0;

label20.Height:=0;

label21.Height:=0;

label22.Height:=0;

label23.Height:=0;

label26.Height:=0;

label12.Caption:='Расставить корабли';

For i:=1 to 10 do //Рисует стенку поля игрока

for j:=1 to 10 do

begin

b1[i,j]:=0;

image1.Canvas.Rectangle(20*i-20,20*j-20,20*i,20*j);

end;

randomize;

m:=random(10)+1;

n:=random(10)+1;

z:=(random(100) mod 2);

Расстановка кораблей (четырехпалубный)

case n of

1..7:

case m of

1..7: for i:=0 to 3 do

if z=0 then

b2[m+i,n]:=2

else

b2[m,n+i]:=2;

8..10: for i:=0 to 3 do

if z=0 then

b2[m-i,n]:=2

else

b2[m,n+i]:=2;

end;

8..10:

case m of

1..7: for i:=0 to 3 do

if z=0 then

b2[m+i,n]:=2

else

b2[m,n-i]:=2;

8..10: for i:=0 to 3 do

if z=0 then

b2[m-i,n]:=2

else

b2[m,n-i]:=2;

end;

end;

Расстановка на поле игрока

procedure TForm1.rastkor(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

image1.Canvas.Brush.Color:=clSkyblue;

y1:=(Y div 20)+1;

x1:=(X div 20)+1;

For i:=1 to 10 do

for j:=1 to 10 do

begin

if (b1[i,j]<>2) and (b1[i,j]<>3) and (b1[i,j]<>4) then

begin

b1[i,j]:=0;

image1.Canvas.Rectangle(20*i-20,20*j-20,20*i,20*j);

end;

end;

Ротация кораблей по вертикали

else

begin

case k11 of

0: begin if (b1[x1,y1]<>2) then

for i:=0 to 0 do

b1[x1,y1+i]:=1; end;

1: begin if (b1[x1,y1]<>2) and (b1[x1,y1+1]<>2)then

for i:=0 to 1 do begin

b1[x1,y1+i]:=1 end; end;

2: begin if (b1[x1,y1]<>2) and (b1[x1,y1+1]<>2) and (b1[x1,y1+2]<>2) then

for i:=0 to 2 do

b1[x1,y1+i]:=1; end;

3: begin if (b1[x1,y1]<>2) and (b1[x1,y1+1]<>2) and (b1[x1,y1+2]<>2) and (b1[x1,y1+3]<>2) then

for i:=0 to 3 do

b1[x1,y1+i]:=1; end;

end;

For i:=1 to 10 do

for j:=1 to 10 do

begin

if (b1[i,j]=1) then

begin

image1.Canvas.Brush.Color:=clyellow;

image1.Canvas.Rectangle(20*i-20,20*j-20,20*(i),20*(j));

end;

end;

end;

end;

Процедура постановки кораблей

procedure TForm1.nash(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

x1:=(X div 20)+1;

y1:=(Y div 20)+1;

if k11>=0 then begin

if button=mbright then begin if rot=true then

rot:=false

else

rot:=true;

begin

image1.Canvas.Brush.Color:=clSkyblue;

For i:=1 to 10 do

for j:=1 to 10 do

begin

if b1[i,j]<>2 then

begin

b1[i,j]:=0;

image1.Canvas.rectangle(20*i-20,20*j-20,20*i,20*j);

end;

end;

if rot=false then begin

case k11 of 0: begin if (b1[x1,y1]<>2) then

b1[x1,y1]:=1; end;

1: begin if (b1[x1,y1]<>2) and (b1[x1+1,y1]<>2)then

for i:=0 to 1 do begin

b1[x1+i,y1]:=1 end; end;

2: begin if (b1[x1,y1]<>2) and (b1[x1+1,y1]<>2) and (b1[x1+2,y1]<>2) then

for i:=0 to 2 do

b1[x1+i,y1]:=1; end;

3: begin if (b1[x1,y1]<>2) and (b1[x1+1,y1]<>2) and (b1[x1+2,y1]<>2) and (b1[x1+3,y1]<>2) then

for i:=0 to 3 do

b1[x1+i,y1]:=1; end;

end;

For i:=1 to 10 do

for j:=1 to 10 do

begin

if (b1[i,j]=1) then

begin

image1.Canvas.Brush.Color:=clyellow;

image1.Canvas.Rectangle(20*i-20,20*j-20,20*(i),20*(j));

end;

end;

end

Проверяем стоят ли все корабли, если ДА то начинаем новую игру

if k11<0 then begin

label12.Height:=0;

label13.Height:=13;

label14.Height:=13;

label15.Height:=13;

label16.Height:=13;

label17.Height:=13;

label18.Height:=13;

label19.Height:=13;

label20.Height:=13;

label21.Height:=13;

label22.Height:=13;

label23.Height:=13;

label26.Height:=13;

image2.Height:=200;

image2.Width:=200;

for i:=1 to 10 do

for j:=1 to 10 do begin

image2.Canvas.Brush.Color:=clSkyblue;

image2.Canvas.Rectangle(20*i-20,20*j-20,20*i,20*j) end

end

end;

end;

procedure TForm1.N2Click(Sender: TObject); //Начинаем новую игру

begin

sndplaysound('waves.wav',snd_async);

image1.Canvas.Brush.Color:=clwhite;

rot:=false;

k11:=3;

k33:=2;

k32:=5;

k31:=9;

label12.Height:=62;

image2.Height:=0;

For i:=1 to 10 do //обнуляет массивы

for j:=1 to 10 do

begin

b1[i,j]:=0;

b2[i,j]:=0;

image1.Canvas.Rectangle(20*i-20,20*j-20,20*i,20*j);

end;

FormCreate(self);

end;

Размещено на Allbest.ru


Подобные документы

  • Разработка и создание игры "Змейка". Использование динамически-активных принципов языка Java. Графические объекты программы. Описание игры, правила, теоретические сведения. Классы приложения. Типы данных. Реализация. Метод. Объект. Блок-схема игры.

    курсовая работа [12,4 K], добавлен 18.06.2008

  • Выбор состава технических и программных средств для создания данного приложения "Экзаменатор", использование среды разработки Borland Delphi. Основные компоненты и спецификация программы. Используемые технические средства, описание и запуск программы.

    курсовая работа [540,8 K], добавлен 18.07.2012

  • Разработка программы создания заметок в любом месте компьютера. Выбор технологии, языка и среды разработки приложения. Описание основных алгоритмов работы программного обеспечения. Проектирование пользовательского интерфейса. Выбор стратегии тестирования.

    отчет по практике [700,5 K], добавлен 24.11.2014

  • Разработка и реализация демонстрационного многопоточного приложения. Выбор основных средств реализации. Описание логики работы приложения и разработка программного обеспечения. Описание пользовательского интерфейса. Реализация потоков в Delphi.

    курсовая работа [462,5 K], добавлен 10.08.2014

  • Рассмотрение теории и технологии работы со средой программирования Delphi. Описание Описание интерфейса программы, структуры данных, генерации точек. Разработка задания по выявлению всех квадратов, которые могут быть образованы точками на плоскости.

    реферат [21,0 K], добавлен 13.01.2015

  • Описание алгоритма хода ЭВМ в режиме "пользователь-компьютер" в игре "Морской бой". Описание совокупности классов, их полей и методов. Разработка интерфейса и руководства пользователя по проведению игры. Листинг программы, написанной на языке Java.

    курсовая работа [645,0 K], добавлен 26.03.2014

  • Разработка справочной системы по визуальным компонентам языка программирования Delphi. Возможность сохранения измененных свойств компонент в файле с возможностью их загрузки в будущем. Логика работы приложения и разработка программного обеспечения.

    курсовая работа [602,4 K], добавлен 22.01.2015

  • Анализ игровых жанров для мобильных устройств и целевой аудитории. Разработка концепции игрового приложения, основной механики, меню и интерфейса игры. Описание переменных скриптов. Реализация выбора цели и стрельбы. Настройка работоспособности игры.

    дипломная работа [1,4 M], добавлен 19.01.2017

  • Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.

    курсовая работа [880,1 K], добавлен 21.04.2015

  • Описание правил игры "Морской бой". Особенности современных компьютеров и искусственного интеллекта. Создание общей блок-схемы программы, ее внешний вид. Необходимые переменные, процедуры и функции. Характеристика объектов, используемых в приложении.

    курсовая работа [950,1 K], добавлен 05.11.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.