Создание игры "Морской бой"

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 19.11.2010
Размер файла 1,2 M

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

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

(b1[x1,y1+3]<>2) and (y1+2<11) then

for i:=0 to k11 do begin

b1[x1,y1+i]:=2;

riad:=true

end

else

riad:=false;

2..10:

if (b1[x1,y1]<>2) and

(b1[x1-1,y1-1]<>2) and

(b1[x1-1,y1]<>2) and

(b1[x1-1,y1+1]<>2) and

(b1[x1,y1-1]<>2)and

(b1[x1+1,y1+1]<>2)and

(b1[x1+1,y1]<>2) and

(b1[x1+1,y1-1]<>2) and

(b1[x1+1,y1+2]<>2) and

(b1[x1-1,y1+2]<>2) and

(b1[x1+1,y1+3]<>2) and

(b1[x1-1,y1+3]<>2) and

(b1[x1,y1+3]<>2) and (y1+2<11) then

for i:=0 to k11 do begin

b1[x1,y1+i]:=2;

riad:=true

end

else

riad:=false

end; //ставит 4палубный корабль

3: if y1+3<11 then

begin

for i:=0 to k11 do

b1[x1,y1+i]:=2;

riad:=true

end

else

riad:=false

end;

if riad=true then begin //смотрит если корабль поставлен то уменьшает счетчик

if (k11=3) then

begin;

k11:=k11-1;

end;

if (k11=2) and (k33=0) then

begin

k11:=k11-1;

k33:=k33-1

end

else

k33:=k33-1;

if (k11=1) and (k32=0) then

begin

k11:=k11-1;

k32:=k32-1

end

else

k32:=k32-1;

if (k11=0) and (k31=0) then

begin

k11:=k11-1;

k31:=k31-1

end

else

k31:=k31-1;

end;

end;

For i:=1 to 10 do //закрашивает поставленные корабли Серым

for j:=1 to 10 do

begin

if b1[i,j]=2 then

begin

image1.Canvas.Brush.Color:=clgray;

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

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:=clwhite;

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

end

end;

end;

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

begin

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;

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

Shift: TShiftState; X, Y: Integer); //процедура обмена выстрелов

begin

x1:=(X div 20)+1;

y1:=(Y div 20)+1;

if kon=false then begin //проверка закончилась игра или нет

case b2[x1,y1] of

0: b2[x1,y1]:=3; //если попал в пустую клетка становится - просреленной пустой

2: b2[x1,y1]:=4; //если попал в клетку с кораблем то она становится- подбитой

3,4: exit; //если попал в клетку в которую уже стрелял то ничего не происходит

end;

for i:=1 to 10 do //рисуется графическое поле компютера

for j:=1 to 10 do

begin

case b2[i,j] of

4: begin //клетка в котрой стоит подбитый или не доконца подбитый корабль

if ((b2[i+1,j]=2) //не доконца подбитый корабль

or(b2[i,j+1]=2)

or(b2[i-1,j]=2)

or(b2[i,j-1]=2))

or (((b2[i+1,j]=4)and(b2[i+2,j]=2))

or((b2[i,j+1]=4)and(b2[i,j+2]=2))

or((b2[i-1,j]=4)and(b2[i-2,j]=2))

or((b2[i,j-1]=4)and(b2[i,j-2]=2)))

or(((b2[i+1,j]=4)and(b2[i+2,j]=4) and (b2[i+3,j]=2))

or((b2[i,j+1]=4)and(b2[i,j+2]=4)and(b2[i,j+3]=2))

or((b2[i-1,j]=4)and(b2[i-2,j]=4)and(b2[i-3,j]=2))

or((b2[i,j-1]=4)and(b2[i,j-2]=4)and(b2[i,j-3]=2)))

then

begin

image2.Canvas.Brush.Color:=clgray;

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

image2.Canvas.pen.Color:=clred;

image2.Canvas.MoveTo(20*i-19,20*j-19);

image2.Canvas.LineTo(20*i-1,20*j-1);

image2.Canvas.MoveTo(20*i-1,20*j-19);

image2.Canvas.LineTo(20*i-19,20*j-1);

image2.Canvas.pen.Color:=clblack;

end

else //подбитый корабль

begin

image2.Canvas.Brush.Color:=clred;

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

end;

end;

3: begin //простреленная пустая клетка

image2.Canvas.Brush.Color:=clwhite;

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

end;

end;

end;

win:=true;

For i:=1 to 10 do //если находится хотябы один неподбитый корабль то победы нет

for j:=1 to 10 do

if b2[i,j]=2 then

win:=false;

if win=true then //вывод сообщения при победе

begin

showmessage ('Поздравляю!'+#13+'Вы победили.');

kon:=true;

exit

end;

if b2[x1,y1]=4 then //если игрок попал то компьютер не ходит

exit;

bum:=false;

cokil:=true;

while (bum=false) or (cokil=true) do //стрел-ть до тех пор пока не попал в клетку в которую не стрылял и если она пустая

begin

m:=random(10)+1;

n:=random(10)+1;

case b1[m,n] of

0: begin

b1[m,n]:=3;

bum:=true;

cokil:=false

end;

2: begin

b1[m,n]:=4;

bum:=true;

cokil:=true

end

end;

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

for j:=1 to 10 do

begin

case b1[i,j] of

3: begin //простреленая пустая клетка

image1.Canvas.Brush.Color:=clwhite;

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

end;

4:begin //клетка в котрой стоит подбитый или не доконца подбитый корабль

if ((b1[i+1,j]=2)

or(b1[i,j+1]=2)

or(b1[i-1,j]=2)

or(b1[i,j-1]=2))

or(((b1[i+1,j]=4)and(b1[i+2,j]=2))

or((b1[i,j+1]=4)and(b1[i,j+2]=2))

or((b1[i-1,j]=4)and(b1[i-2,j]=2))

or((b1[i,j-1]=4)and(b1[i,j-2]=2)))

or(((b1[i+1,j]=4)and(b1[i+2,j]=4)and(b1[i+3,j]=2))

or((b1[i,j+1]=4)and(b1[i,j+2]=4)and(b1[i,j+3]=2))

or((b1[i-1,j]=4)and(b1[i-2,j]=4)and(b1[i-3,j]=2))

or((b1[i,j-1]=4)and(b1[i,j-2]=4)and(b1[i,j-3]=2)))

then begin //не доконца подбитый корабль

image1.Canvas.pen.Color:=clred;

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

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

image1.Canvas.MoveTo(20*i-1,20*j-19);

image1.Canvas.LineTo(20*i-19,20*j-1);

image1.Canvas.pen.Color:=clblack;

end

else //подбитый корабль

begin

image1.Canvas.Brush.Color:=clred;

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

end;

end;

end;

end;

end;

lose:=true;

For i:=1 to 10 do //если находится хотябы один неподбитый корабль то проигрыша нет

for j:=1 to 10 do

if b1[i,j]=2 then

lose:=false;

if lose=true then

begin

kon:=true;

showmessage ('Вы проиграли.'+#13+'Попробуйте ещё раз!');

exit

end;

end;

end;

procedure TForm1.N3Click(Sender: TObject); //процедура нажатия на кнопку "выход"

begin

close

end;

procedure TForm1.N5Click(Sender: TObject); //процедура нажатия на кнопку "О программе..."

begin

form2.ShowModal

end;

procedure TForm1.N6Click(Sender: TObject);

begin

winhelp(Form1.Handle,'morb.hlp',HELP_CONTEXT,1);

end;

end.

Приложение 2

Руководство пользователя

Правила

Морской бой -игра известная всем с детства.

Условия победы - уничтожить все корабли противника.

Условия поражения - потеря всех своих кораблей.

В начале игры перед вами пустое поле(рис. 1)

Рис. 1

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

Рис. 2

при нажатии на правую кнопку мыши происходит ротация корабля (рис. 3)

Рис. 3

при нажатии на левую кнопку мыши - происходит расстановка корабля на игровом поле (рис. 4)

Рис. 4

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

Когда все корабли расстановлены появляется поле компьютера (рис. 5)

Рис. 5

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

Серый квадрат перечеркнутый красным крестом - значит что Вы попали в корабль но он еще не убит.

Маленький белый квадрат - Вы не попали.

Красный квадрат - Вы убили корабль.

Для того чтобы начать новую игру нажмите клавишу F2 ли на вкладку Игра-Новая игра.

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

Приложение 3

Блок схема


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

  • Программирование игр с использованием визуальных компонентов. Описание операторов, используемых при практической реализации разработанной программы. Работа над созданием программы "Морской бой", постановка задачи, алгоритм реализации работы, блок-схема.

    курсовая работа [175,9 K], добавлен 10.05.2010

  • Язык программирования Pascal и его турбооболочка. Аналитический обзор игрового программного обеспечения. Функции модуля Crt. Постановка задачи создания несложной игровой программы "Турбозмей", алгоритм реализации и описание пользовательского интерфейса.

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

  • Обзор системного и прикладного программного обеспечения используемого в ООО "Игровые системы". Описание компьютерной сети предприятия. Разработка игрового продукта для планшетов Apple iPad. Реализация визуального интерфейса и алгоритма работы модуля.

    отчет по практике [1,4 M], добавлен 18.01.2015

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

    дипломная работа [878,4 K], добавлен 18.11.2017

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

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

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

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

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

    курсовая работа [3,5 M], добавлен 25.06.2011

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

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

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

    курсовая работа [4,6 M], добавлен 12.11.2013

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

    курсовая работа [1,2 M], добавлен 21.01.2011

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