基于Delphi的“八皇后”问题动态实现

豆豆网   技术应用频道   2007年03月20日  【字号: 收藏本文

本文详细介绍基于Delphi的“八皇后”问题动态实现

  解决冲突的具体函数

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:八皇后ackimg.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;

来源:计算机与信息技术    作者:左才文    责编:豆豆技术应用

正在加载评论...