解決沖突的具體函數
function pd(i,j:integer):boolean;
var i1,j1:integer;
begin
pd:=true;
if i<>1
then begin for i1:=1 to i-1 do for j1:=1 to 8 do
if a[i1,j1]=1
then begin if j1=j then pd:=false else if abs(i1-i)=abs(j1-j)then pd:=false end
end
end;
棋盤與棋子的圖片(需要用畫圖程序作出)、生成、裝入及顯示過程如下:
procedure TForm1.PaintBox1Click(Sender: TObject);
var q:tbitmap;
begin
q:=tbitmap.create;
q.loadfromfile('e:\八皇後\backimg.bmp');
paintbox1.canvas.Draw(0,0,q);
end;
end.
組件設置
paintbox1:繪圖板,顯示當前的合法布局。
Label1:文字標簽,顯示當前合法布局的序號。
Button1,button2,button3,button4:開始、單幅、連續、退出按紐。
程序清單:
(1)代碼單元unit1:
procedure TForm1.Button1Click(Sender: TObject);
begin
dstep:=true;
bhh:=tbhh.create(false);
button1.enabled:=false;
button2.enabled:=true;
button3.enabled:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if dstep=false then begin bhh.suspend; dstep:=true end
else bhh.resume
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
dstep:=false; bhh.resume;
end;