Международные стандарты
- MIL-STD-498. Разработка и документирование программного обеспечения.
- ISO 9126:1991. Информационная технология. Оценка программного продукта. Характеристики качества и руководство по их применению.
- ANSI/IEEE 829-1983. Документация при тестировании программ.
- ANSI/IEEE 1008-1986. Тестирование программных модулей и компонентов ПС.
Стандарты РФ в соответствии со стандартами ISO
- ГОСТ Р ИСО/МЭК 9294-93. Информационная технология. Руководство по управлению документированием программного обеспечения.
- ГОСТ Р ИСО/МЭК 9127-94. Системы обработки информации. Документация пользователя и информация на упаковке для потребительских программных пакетов.
- ГОСТ Р ИСО/МЭК 12119:1994. Информационная технология. Пакеты программных средств. Требования к качеству и испытаниям.
Стандарты «Единой Системы Программной Документации»:
- ГОСТ 19.001-77 ЕСПД. Общие положения.
- ГОСТ 19.103-77 ЕСПД. Обозначение программ и программных документов.
- ГОСТ 19.105-78 ЕСПД. Общие требования к программным документам.
- ГОСТ 19.201-78 ЕСПД. Техническое задание. Требования к содержанию и оформлению.
- ГОСТ 19.504-79 ЕСПД. Руководство программиста. Требования к содержанию и оформлению.
- ГОСТ 19.505-79 ЕСПД. Руководство оператора. Требования к содержанию и оформлению.
По разработке информационных систем и программированию
|
|
- Благодатских В.А., Волнин В.А., Поскакалов К.Ф. Стандартизация разработки программных средств. – М.: Финансы и статистика, 2003 г.
- Бобровский С. Программирование в Delphi 7. – СПб.: Информ-Пресс, 2011 г. – 806 c.
- Вигерс К. Разработка требований к программному обеспечению. Пер. с англ. - М.: Издательско-торговый дом "Русская Редакция", 2011 г. –576 с.
- Котляров В. П., Коликова Т. В. Основы тестирования программного обеспечения. – М.: Бином. Лаборатория знаний, 2011 г. –288 с.
- Липаев В.В. Надежность программных средств. – М.: СИНТЕГ, 1998 г.
- Липаев В.В. Документирование и управление конфигурацией программных средств – М.: СИНТЕГ, 1998 г.
- Липаев В.В. Системное проектирование сложных программных систем. – М.: СИНТЕГ, 1998 г.
- Орлов С.А. Технологии разработки программного обеспечения: Разработка сложных программных систем: Учебное пособие для студентов вузов, обуч. по напр. подготовки бакалавров и магистров «Информатика и выч. техника». – СПб.: Питер, 2002 г.
- Пальчун Б.П., Юсупов Р.М. Оценка надежности программного обеспечения. – СПб.:Наука, 1994 г.
- Шикин А. В., Боресков А. В. Компьютерная графика. Динамика, реалистические изображения. – M.: ДИАЛОГ-МИФИ, 1998 г. – 288 с.
ПРИЛОЖЕНИЯ
Приложение 1. Руководство пользователя
Запуск приложения.
Приложение полностью готово к использованию и не требует никаких предварительных настроек. Для запуска программы достаточно запустить исполняемый файл: «Project1.exe»
|
|
Расстановка кораблей.
В начале игры пользователю необходимо расположить на своём игровом поле (левое поле) собственные корабли. При этом в правом игровом поле (поле виртуального противника) выдаётся соответствующая подсказка.
Расстановка кораблей осуществляется нажатием левой кнопки «Мыши» и сопровождается характерным звуковым сигналом.
Контроль положения кораблей пользователя выполняется автоматически, что не позволит пользователю расположить их в положениях, запрещённых правилами игры.
После того, как все корабли игрока расставлены приложение автоматически переходит в состояние «Игра»
Игра.
При входе в режим «Игра», подсказка в правом поле (поле виртуального противника) исчезает, а само поле превращается в координатную сетку поля боя.
Нанесение ударов осуществляется пользователем нажатиями левой кнопки «мыши» в пределах квадратов координатной сетки поля виртуального противника.
Каждый выстрел сопровождается соответствующим звуковым фрагментом.
В случае промаха соответствующая клетка поля боя помечается точкой.
В случае попадания – в клетке отображается часть пораженного корабля виртуального противника.
Завершение игры.
Игра завершается в четырёх случаях:
1. Пользователь выиграл. В этом случае выдаётся соответствующее сообщение и проигрывается победная музыка.
2. Пользователь проиграл. В этом случае также выдаётся соответствующее сообщение и проигрывается музыка поражения.
3. Пользователь может прервать игру и переиграть её заново нажав пункт меню «Новая игра».
4. Пользователь может просто закрыть приложение нажав стандартную кнопку закрытия окна.
Приложение 2. Исходный код главного модуля программы «Project1.dpr»
program Project1;
Uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res} // Основные Ресурсы
{$R Dop_resources.RES} // Дополнительные Ресурсы (Звуки)
Begin
Application.Initialize;
//Application.HelpFile:= 'F:\Информатика\Курсовая\Delphi\работа\исодник программы\morb.HLP';
Application.HelpFile:= 'morb.HLP';
Application.Title:= 'Морской бой';
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
End.
Приложение 3. Исходный код модуля первой формы «Unit1.pas»
unit Unit1;
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Menus, XPMan, Mmsystem;
Type
TForm1 = class(TForm)
Panel1: TPanel;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label25: TLabel;
Panel2: TPanel;
Image2: TImage;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label26: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N6: TMenuItem;
N5: TMenuItem;
Label12: TLabel;
Label24: TLabel;
Label27: TLabel;
Label28: TLabel;
Label29: TLabel;
procedure FormCreate(Sender: TObject);
procedure rastkor(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure nash(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure N2Click(Sender: TObject);
procedure vistrel(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure N3Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Var
Form1: TForm1;
i,j,g,x1,y1,k11,k21,
k33,k32,k31,m3,m2,m1, //кол-во 3х 2х 1х кораблей
m,n,z:integer;
rot, //ротация кораблей
riad,rnd, //для того что бы рядом не ставились,нужна для рандомирования
win,lose, //проверка на победу или поражение
bum, //проверка выстрела компьютера
kon, //проверка конца игры
cokil: boolean; //попал ли комрьютер
b1,b2:Array[1..14,1..14] of integer;
Implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
Begin
PlaySound('START_WAV', HInstance, SND_RESOURCE or SND_ASYNC or SND_NOWAIT);
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;
//трехпалубные
while m3<2 do begin
m:=random(10)+1;
n:=random(10)+1;
z:=(random(100) mod 2);
Case n of
1..7:
case m of
1..7: case z of
0: if (b2[m,n]<>2) and
(b2[m-1,n-1]<>2) and
(b2[m-1,n]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m,n-1]<>2)and
(b2[m+1,n+1]<>2)and
(b2[m+1,n]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m,n+1]<>2) and
(b2[m+1,n+2]<>2) and
(b2[m-1,n+2]<>2) and
(b2[m,n+2]<>2) and
(b2[m+1,n+3]<>2) and
(b2[m-1,n+3]<>2) and
(b2[m,n+3]<>2) and
(b2[m,n+3]<>2) then
begin
for i:=0 to 2 do
b2[m,n+i]:=2;
m3:=m3+1
end;
1: if (b2[m,n]<>2) and
(b2[m+1,n+1]<>2) and
(b2[m,n+1]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m-1,n]<>2)and
(b2[m-1,n-1]<>2)and
(b2[m,n-1]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m+1,n]<>2) and
(b2[m+2,n-1]<>2) and
(b2[m+2,n+1]<>2) and
(b2[m+2,n]<>2) and
|
|
(b2[m+3,n-1]<>2) and
(b2[m+3,n+1]<>2) and
(b2[m+3,n]<>2) and
(b2[m+3,n]<>2) then begin
for i:=0 to 2 do
b2[m+i,n]:=2;
m3:=m3+1
end
end;
8..10: case z of
0: if (b2[m,n]<>2) and
(b2[m+1,n+1]<>2) and
(b2[m,n+1]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m-1,n]<>2)and
(b2[m-1,n-1]<>2)and
(b2[m,n-1]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m-2,n-1]<>2) and
(b2[m-2,n+1]<>2) and
(b2[m-2,n]<>2) and
(b2[m-3,n-1]<>2) and
(b2[m-3,n+1]<>2) and
(b2[m-3,n]<>2) then
begin
for i:=0 to 2 do
b2[m-i,n]:=2;
m3:=m3+1
end;
1: if (b2[m,n]<>2) and
(b2[m-1,n-1]<>2) and
(b2[m-1,n]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m,n-1]<>2)and
(b2[m+1,n+1]<>2)and
(b2[m+1,n]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m,n+1]<>2) and
(b2[m+1,n+2]<>2) and
(b2[m-1,n+2]<>2) and
(b2[m,n+2]<>2) and
(b2[m+1,n+3]<>2) and
(b2[m-1,n+3]<>2) and
(b2[m,n+3]<>2) and
(b2[m,n+3]<>2) then
begin
for i:=0 to 2 do
b2[m,n+i]:=2;
m3:=m3+1
end;
end
end;
8..10:
case m of
1..7: case z of
0: if (b2[m,n]<>2) and
(b2[m+1,n+1]<>2) and
(b2[m,n+1]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m-1,n]<>2)and
(b2[m-1,n-1]<>2)and
(b2[m,n-1]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m+2,n-1]<>2) and
(b2[m+2,n+1]<>2) and
(b2[m+2,n]<>2) and
(b2[m+3,n-1]<>2) and
(b2[m+3,n+1]<>2) and
(b2[m+3,n]<>2) then begin
for i:=0 to 2 do
b2[m+i,n]:=2;
m3:=m3+1
end;
1: if (b2[m,n]<>2) and
(b2[m-1,n-1]<>2) and
(b2[m-1,n]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m,n-1]<>2)and
(b2[m+1,n+1]<>2)and
(b2[m+1,n]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m+1,n-2]<>2) and
(b2[m-1,n-2]<>2) and
(b2[m,n-2]<>2) and
(b2[m+1,n-3]<>2) and
(b2[m-1,n-3]<>2) and
(b2[m,n-3]<>2) then
begin
for i:=0 to 2 do
b2[m,n-i]:=2;
m3:=m3+1
end
end;
8..10: case z of
0: if (b2[m,n]<>2) and
(b2[m-1,n-1]<>2) and
(b2[m-1,n]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m,n-1]<>2)and
(b2[m+1,n+1]<>2)and
(b2[m+1,n]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m+1,n-2]<>2) and
(b2[m-1,n-2]<>2) and
(b2[m,n-2]<>2) and
(b2[m+1,n-3]<>2) and
(b2[m-1,n-3]<>2) and
(b2[m,n-3]<>2) then
begin
for i:=0 to 2 do
b2[m,n-i]:=2;
m3:=m3+1
end;
1: if (b2[m,n]<>2) and
(b2[m+1,n+1]<>2) and
(b2[m,n+1]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m-1,n]<>2)and
(b2[m-1,n-1]<>2)and
(b2[m,n-1]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m-2,n-1]<>2) and
(b2[m-2,n+1]<>2) and
(b2[m-2,n]<>2) and
(b2[m-3,n-1]<>2) and
(b2[m-3,n+1]<>2) and
(b2[m-3,n]<>2) then
begin
for i:=0 to 2 do
b2[m-i,n]:=2;
m3:=m3+1
end
end
end
End
end;
//двухпалубные
while m2<3 do begin
m:=random(10)+1;
n:=random(10)+1;
z:=(random(100) mod 2);
Case n of
1..8:
case m of
1..8: case z of
0: if (b2[m,n]<>2) and
(b2[m-1,n-1]<>2) and
(b2[m-1,n]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m,n-1]<>2)and
(b2[m+1,n+1]<>2)and
(b2[m+1,n]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m,n+1]<>2) and
(b2[m+1,n+2]<>2) and
(b2[m-1,n+2]<>2) and
(b2[m,n+2]<>2) then
begin
for i:=0 to 1 do
b2[m,n+i]:=2;
m2:=m2+1
end;
1: if (b2[m,n]<>2) and
(b2[m+1,n+1]<>2) and
(b2[m,n+1]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m-1,n]<>2)and
(b2[m-1,n-1]<>2)and
(b2[m,n-1]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m+1,n]<>2) and
(b2[m+2,n-1]<>2) and
(b2[m+2,n+1]<>2) and
(b2[m+2,n]<>2) then begin
for i:=0 to 1 do
b2[m+i,n]:=2;
m2:=m2+1
end
end;
9..10: case z of
0: if (b2[m,n]<>2) and
(b2[m+1,n+1]<>2) and
(b2[m,n+1]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m-1,n]<>2)and
(b2[m-1,n-1]<>2)and
(b2[m,n-1]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m-2,n-1]<>2) and
(b2[m-2,n+1]<>2) and
(b2[m-2,n]<>2) then
begin
for i:=0 to 1 do
b2[m-i,n]:=2;
m2:=m2+1
end;
1: if (b2[m,n]<>2) and
(b2[m-1,n-1]<>2) and
(b2[m-1,n]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m,n-1]<>2)and
(b2[m+1,n+1]<>2)and
(b2[m+1,n]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m,n+1]<>2) and
(b2[m+1,n+2]<>2) and
(b2[m-1,n+2]<>2) and
(b2[m,n+2]<>2) then
begin
for i:=0 to 1 do
b2[m,n+i]:=2;
m2:=m2+1
end;
end
end;
9..10:
case m of
1..8: case z of
0: if (b2[m,n]<>2) and
(b2[m+1,n+1]<>2) and
(b2[m,n+1]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m-1,n]<>2)and
(b2[m-1,n-1]<>2)and
(b2[m,n-1]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m+2,n-1]<>2) and
(b2[m+2,n+1]<>2) and
(b2[m+2,n]<>2) then begin
for i:=0 to 1 do
b2[m+i,n]:=2;
m2:=m2+1
end;
1: if (b2[m,n]<>2) and
(b2[m-1,n-1]<>2) and
(b2[m-1,n]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m,n-1]<>2)and
(b2[m+1,n+1]<>2)and
(b2[m+1,n]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m+1,n-2]<>2) and
(b2[m-1,n-2]<>2) and
(b2[m,n-2]<>2) then
begin
for i:=0 to 1 do
b2[m,n-i]:=2;
m2:=m2+1
end
end;
9..10: case z of
0: if (b2[m,n]<>2) and
(b2[m-1,n-1]<>2) and
(b2[m-1,n]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m,n-1]<>2)and
(b2[m+1,n+1]<>2)and
(b2[m+1,n]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m+1,n-2]<>2) and
(b2[m-1,n-2]<>2) and
(b2[m,n-2]<>2) then
begin
for i:=0 to 1 do
b2[m,n-i]:=2;
m2:=m2+1
end;
1: if (b2[m,n]<>2) and
(b2[m+1,n+1]<>2) and
(b2[m,n+1]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m-1,n]<>2)and
(b2[m-1,n-1]<>2)and
(b2[m,n-1]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m-2,n-1]<>2) and
(b2[m-2,n+1]<>2) and
(b2[m-2,n]<>2) then
begin
for i:=0 to 1 do
b2[m-i,n]:=2;
m2:=m2+1
end
end
end
End
end;
//подлодки
while m1<4 do begin
m:=random(10)+1;
n:=random(10)+1;
while m1<4 do begin
m:=random(10)+1;
n:=random(10)+1;
if (b2[m,n]<>2) and
(b2[m+1,n+1]<>2) and
(b2[m,n+1]<>2) and
(b2[m-1,n+1]<>2) and
(b2[m-1,n]<>2)and
(b2[m-1,n-1]<>2)and
(b2[m,n-1]<>2) and
(b2[m+1,n-1]<>2) and
(b2[m+1,n]<>2) then begin
b2[m,n]:=2;
m1:=m1+1;
End
end;
end;
end;