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

Международные стандарты

  1. MIL-STD-498. Разработка и документирование программного обеспечения.
  2. ISO 9126:1991. Информационная технология. Оценка программного продукта. Характеристики качества и руководство по их применению.
  3. ANSI/IEEE 829-1983. Документация при тестировании программ.
  4. ANSI/IEEE 1008-1986. Тестирование программных модулей и компонентов ПС.

Стандарты РФ в соответствии со стандартами ISO

  1. ГОСТ Р ИСО/МЭК 9294-93. Информационная технология. Руководство по управлению документированием программного обеспечения.
  2. ГОСТ Р ИСО/МЭК 9127-94. Системы обработки информации. Документация пользователя и информация на упаковке для потребительских программных пакетов.
  3. ГОСТ Р ИСО/МЭК 12119:1994. Информационная технология. Пакеты программных средств. Требования к качеству и испытаниям.

Стандарты «Единой Системы Программной Документации»:

  1. ГОСТ 19.001-77 ЕСПД. Общие положения.
  2. ГОСТ 19.103-77 ЕСПД. Обозначение программ и программных документов.
  3. ГОСТ 19.105-78 ЕСПД. Общие требования к программным документам.
  4. ГОСТ 19.201-78 ЕСПД. Техническое задание. Требования к содержанию и оформлению.
  5. ГОСТ 19.504-79 ЕСПД. Руководство программиста. Требования к содержанию и оформлению.
  6. ГОСТ 19.505-79 ЕСПД. Руководство оператора. Требования к содержанию и оформлению.

По разработке информационных систем и программированию

  1. Благодатских В.А., Волнин В.А., Поскакалов К.Ф. Стандартизация разработки программных средств. – М.: Финансы и статистика, 2003 г.
  2. Бобровский С. Программирование в Delphi 7. – СПб.: Информ-Пресс, 2011 г. – 806 c.
  3. Вигерс К. Разработка требований к программному обеспечению. Пер. с англ. - М.: Издательско-торговый дом "Русская Редакция", 2011 г. –576 с.
  4. Котляров В. П., Коликова Т. В. Основы тестирования программного обеспечения. – М.: Бином. Лаборатория знаний, 2011 г. –288 с.
  5. Липаев В.В. Надежность программных средств. – М.: СИНТЕГ, 1998 г.
  6. Липаев В.В. Документирование и управление конфигурацией программных средств – М.: СИНТЕГ, 1998 г.
  7. Липаев В.В. Системное проектирование сложных программных систем. – М.: СИНТЕГ, 1998 г.
  8. Орлов С.А. Технологии разработки программного обеспечения: Разработка сложных программных систем: Учебное пособие для студентов вузов, обуч. по напр. подготовки бакалавров и магистров «Информатика и выч. техника». – СПб.: Питер, 2002 г.
  9. Пальчун Б.П., Юсупов Р.М. Оценка надежности программного обеспечения. – СПб.:Наука, 1994 г.
  10. Шикин А. В., Боресков А. В. Компьютерная графика. Динамика, реалистические изображения. – 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;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: