Создание игровой программы "Морской бой"
Основы программирования игр с использованием визуальных компонентов. Аналитический обзор игрового программного обеспечения, классификация игр. Программа игры "Морской бой": постановка задачи, алгоритм реализации и описание пользовательского интерфейса.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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