Code

2013年7月17日 星期三

Delphi 猜數字遊戲(猜電腦)

猜電腦給的數字(難度較低的題目)


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.

沒有留言:

張貼留言