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

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

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

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

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

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 ли на вкладку Игра-Новая игра.

Приложение 3

Блок схема


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

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

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

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

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

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

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

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

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

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

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

  • Методика разработки алгоритма, по которому компьютер сможет играть в "Морской бой" с максимальным качеством, и при этом не подглядывая расположение флота игрока. Математические и алгоритмические основы решения задачи, составление программы решения.

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

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

    курсовая работа [570,3 K], добавлен 11.06.2010

  • Многообразие мини-игр и возможности языка Visual basic 6.0 для их реализации. Понятие мини-игр и их классификация. Элементы управления мини-игры "Реверси". Разработка прикладной программы. Создание игрового интерфейса. Написание программного кода.

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

  • Проектирование игры "Морской бой" путем составления диаграмм UML, IDEF0, DFD, моделирующих требования к программе. Разработка программы с использованием языка C# и фреймворка.NETFramework 3.5. Тестирование белого ящика и альфа-тестирование продукта.

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

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

    курсовая работа [34,6 K], добавлен 19.05.2014

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