猜電腦給的數字(難度較低的題目)
unit GuessAI;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ediIN: TEdit;
btnStart: TButton;
btnClose: TButton;
Tit: TLabel;
Ans: TListBox;
ed: TLabel;
procedure btnStartClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a : array[0..9] of integer;//0~9的數字陣列
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i,j,k : integer;
begin
Randomize;
for i := 0 to 9 do
a[i] := i;
for i := 0 to 9 do //將a陣列的順序打亂產生亂數
begin
k := random(10);
j := a[i];
a[i] := a[k];
a[k] := j;
end;
Tit.Caption := IntToStr(a[0])+ IntToStr(a[1])+ IntToStr(a[2])+ IntToStr(a[3])
end;
var q : integer = 1;
procedure TForm1.btnStartClick(Sender: TObject);
var
Nu,str : string;
i,j : integer;
b : array[0..3] of integer;
an,bn : integer;
begin
for i := 0 to 3 do
begin
Nu := ediIN.Text;
b[i] := StrToInt(Copy(Nu,i+1,1));
end;
an := 0;
bn := 0;
for i := 0 to 3 do
begin
for j := 0 to 3 do
begin
if a[i] = b[j] then //如果數字相同bn++
bn := bn+1;
end;
if a[i] = b[i] then //如果數字位置相同an++
an := an+1;
end;
bn := bn-an;
str := ' 第 ' + IntToStr(q) + ' 次 '+ ' : ' + Nu + ' ' + IntToStr(an) + 'A' + IntToStr(bn) + 'B';
Ans.Items.Add(str);
q := q+1;
if an = 4 then //如an=4則跳出
begin
ed.Caption := '共猜' + IntToStr(q-1) + '次';
showMessage('猜中了');
end;
end;
procedure TForm1.btnCloseClick(Sender: TObject);
begin
Close();
end;
end.
沒有留言:
張貼留言