Отладка и тестирование программной разработки При разработке была выявлена ошибка кода заметная только визуально в процессе игры, которая срабатывала при первом совпадении картинок, а именно вся статистика игры останавливала подсчет. Данная ошибка была устранена в процессе разработки. Также для проведения отладки были проведены попытки нажатия на элементы правой кнопкой мыши, но программа не дала никакой реакции. ЗАКЛЮЧЕНИЕ В результате выполнения данной курсовой работы, была разработана игровая программа под названием Парные картинки. Было проведено исследование компонентов программной среды Embarcadero RAD Studio XE3, использовалось множество процедур и функций. СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 1)ЕСПД ГОСТ 19.101 – виды программ и программных документов; 2)ЕСПД ГОСТ 19.102 – стадии разработки; 3)ЕСПД ГОСТ 19.105 – общие требования к программным документам; 4)ЕСПД ГОСТ 19.106 – требования к программным документам, выполненным печатным способом; 5)ЕСПД ГОСТ 19.401 – текст программы, требования к содержанию и оформлению; 6)ЕСПД ГОСТ 19.402 – описание программы; 7)ЕСПД ГОСТ 19.504 – руководства программиста 8)ЕСПД ГОСТ 19.505 – руководство оператора; 9)ЕСПД ГОСТ 19.509 – описание языка; 10)ЕСПД ГОСТ 19.781 – термины и определения; 11)http://www.realcoding.net/teach/Delphi_7; 12)http://delphi.support.uz. ПРИЛОЖЕНИЕ ИСХОДНЫЙ КОД ПРОГРАММЫ unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Imaging.jpeg, Vcl.ExtCtrls; type TForm1 = class(TForm) Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Image6: TImage; Image7: TImage; Image8: TImage; Image9: TImage; Image10: TImage; Image11: TImage; Image12: TImage; Image13: TImage; Image14: TImage; Image15: TImage; Image16: TImage; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; Button12: TButton; Button13: TButton; Button14: TButton; Button15: TButton; Button16: TButton; Button17: TButton; Timer1: TTimer; Label1: TLabel; Image17: TImage; procedure Button17Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure Button11Click(Sender: TObject); procedure Button12Click(Sender: TObject); procedure Button13Click(Sender: TObject); procedure Button14Click(Sender: TObject); procedure Button15Click(Sender: TObject); procedure Button16Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; rasp:array[1..16] of integer; clack:array[1..2] of integer; sch: integer; chas,min,sec,msec: integer; gameover:boolean; implementation {$R *.dfm} procedure TForm1.Button17Click(Sender: TObject); var i,r: byte; prov:array[1..16] of integer; koord:array[1..2,1..16] of integer; Eb: TImage; Be: TButton; j: Integer; begin for I := 1 to 16 do begin Eb:=(FindComponent('Image'+IntToStr(i)) as TImage); {Настройка компонентов IMAGE на форме и перевод значения VISIBLE в TRUE (Отображение всех картинок и кнопок)} Eb.Visible := true; Be:=(FindComponent('Button'+IntToStr(i)) as TButton); {Настройка компонентов BUTTON на форме и перевод значения VISIBLE в TRUE (Отображение всех картинок и кнопок)} Be.Visible := true; end; label1.Visible:=true; {Отображение компонента статистики игры и обнуление переменных} chas:=0; min:=0;Sec:=0; msec:=0; sch:=0; gameover:=false; clack[1]:=0;clack[2]:=0; image17.Visible:=false; for i:= 1 to 16 do prov[i]:=0; {обнуление массива резервированных перемещений} for i:= 1 to 16 do {Случайное расспределение компонентов IMAGE в массиве} begin repeat r := random (16)+ 1; until prov[r] < 1; rasp[i] := r; inc(prov[r]); end; //горизонт вертикаль koord[1,1]:=8; koord[2,1]:=8; koord[1,2]:=8; koord[2,2]:=111; koord[1,3]:=8; koord[2,3]:=214; koord[1,4]:=8; koord[2,4]:=317; koord[1,5]:=111; koord[2,5]:=8; koord[1,6]:=111; koord[2,6]:=111; koord[1,7]:=111; koord[2,7]:=214; koord[1,8]:=111; koord[2,8]:=317; koord[1,9]:=214; koord[2,9]:=8; koord[1,10]:=214; koord[2,10]:=111; koord[1,11]:=214; koord[2,11]:=214; koord[1,12]:=214; koord[2,12]:=317; koord[1,13]:=317; koord[2,13]:=8; koord[1,14]:=317; koord[2,14]:=111; koord[1,15]:=317; koord[2,15]:=214; koord[1,16]:=317; koord[2,16]:=317; {стандартные координаты расположения IMAGE на форме} for I := 1 to 16 do {присвоение координат компонентам IMAGE} begin Eb:=(FindComponent('Image'+IntToStr(rasp[i])) as TImage); Eb.Top := koord[1,i]; Eb.Left := koord[2,i]; end; end; procedure TForm1.Timer1Timer(Sender: TObject); var i: Integer; Eb1: TImage; Be1: TButton; begin if (not(Image1.Visible)and not(Image2.Visible)and not(Image3.Visible)and not(Image4.Visible)and not(Image5.Visible)and not(Image6.Visible)and not(Image7.Visible)and not(Image8.Visible)and not(Image9.Visible)and not(Image10.Visible)and not(Image11.Visible)and not(Image12.Visible)and not(Image13.Visible)and not(Image14.Visible)and not(Image15.Visible)and not(Image16.Visible)and not(sch=0)) then begin image17.Visible:=true; gameover:=true; end; {если все картинки невидимы то игра выводит GAME OVER и помечается флагом об окончании игры} if not(gameover) then {присвоение счетчика времени и вывод всей статистики(часы, минуты, секунды, ходы)} begin msec:= msec+ 100; if msec=1000 then begin msec:=0; sec:=sec+1; end; if sec=60 then begin sec:=0; min:=min+1; end; if min=60 then begin min:=0; chas:=chas+1; end; label1.Caption:='Ходов:'+IntToStr(sch)+' Продолжительность игры: '+IntToStr(chas)+':'+IntToStr(min)+':'+IntToStr(sec)+':'+IntToStr(msec); end; if clack[2]<>0 {если вторая картинка открыта идет проверка совпадения открытых картинок, при положительном результате картинки исчезают, при отрицательном картинки закрывается кнопкой} then begin for i := 1 to 4 do begin if (( (rasp[clack[1]]=i)and(rasp[clack[2]]=i+4) )or ( (rasp[clack[1]]=i+4)and(rasp[clack[2]]=i) )) then begin Eb1:=(FindComponent('Image'+IntToStr(rasp[clack[1]])) as TImage); Eb1.Visible := false; Eb1:=(FindComponent('Image'+IntToStr(rasp[clack[2]])) as TImage); Eb1.Visible := false; clack[1]:=0;clack[2]:=0; end; end; for i := 8 to 12 do begin if (( (rasp[clack[1]]=i)and(rasp[clack[2]]=i+4) )or ( (rasp[clack[1]]=i+4)and(rasp[clack[2]]=i) )) then begin Eb1:=(FindComponent('Image'+IntToStr(rasp[clack[1]])) as TImage); Eb1.Visible := false; Eb1:=(FindComponent('Image'+IntToStr(rasp[clack[2]])) as TImage); Eb1.Visible := false; clack[1]:=0;clack[2]:=0; end; end; if clack[2]<>0 then begin Be1:=(FindComponent('Button'+IntToStr(clack[1])) as TButton); Be1.Visible := true; Be1:=(FindComponent('Button'+IntToStr(clack[2])) as TButton); Be1.Visible := true; clack[1]:=0;clack[2]:=0; Sleep(100); end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Form1.Button1.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=1; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=1; end; end; procedure TForm1.Button2Click(Sender: TObject); begin Form1.Button2.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=2; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=2; end; end; procedure TForm1.Button3Click(Sender: TObject); begin Form1.Button3.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=3; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=3; end; end; procedure TForm1.Button4Click(Sender: TObject); begin Form1.Button4.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=4; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=4; end; end; procedure TForm1.Button5Click(Sender: TObject); begin Form1.Button5.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=5; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=5; end; end; procedure TForm1.Button6Click(Sender: TObject); begin Form1.Button6.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=6; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=6; end; end; procedure TForm1.Button7Click(Sender: TObject); begin Form1.Button7.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=7; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=7; end; end; procedure TForm1.Button8Click(Sender: TObject); begin Form1.Button8.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=8; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=8; end; end; procedure TForm1.Button9Click(Sender: TObject); begin Form1.Button9.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=9; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=9; end; end; procedure TForm1.Button10Click(Sender: TObject); begin Form1.Button10.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=10; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=10; end; end; procedure TForm1.Button11Click(Sender: TObject); begin Form1.Button11.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=11; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=11; end; end; procedure TForm1.Button12Click(Sender: TObject); begin Form1.Button12.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=12; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=12; end; end; procedure TForm1.Button13Click(Sender: TObject); begin Form1.Button13.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=13; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=13; end; end; procedure TForm1.Button14Click(Sender: TObject); begin Form1.Button14.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=14; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=14; end; end; procedure TForm1.Button15Click(Sender: TObject); begin Form1.Button15.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=15; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=15; end; end; procedure TForm1.Button16Click(Sender: TObject); begin Form1.Button16.Visible:=false; {Скрытие кнопки} sch:=sch+1; {Увеличение статистики нажатий} if clack[1]=0 then begin clack[1]:=16; end {Регистрация в массиве нажатий состояния кнопки расположение открываемой картинки} else begin clack[2]:=16; end; end; end. В ходе выполнения данной работы, была разработана полноценная программа парные картинки, для развитие визуальной памяти. |