再來輸入判斷既然已經完成
當然就是亂數部分啦
首先將第6行的
String num="5431";
改成
String num;
接著亂數產生時機應該在表單的OnCreat事件
語法:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int s;
randomize();
num=random(10);
while(1){
s=random(10);
for(int i=1;i<=num.Length();i++){
if(IntToStr(s)==num.SubString(i,1)) {s=0; break;}
}
if(s!=0) num=num+IntToStr(s);
if(num.Length()==4) break;
}
ShowMessage(num);
}
加ShowMessage(num);行的目的在於設計時必須掌握住亂數值,以方便除錯,正式啟用時請移除
while{...}是為了防止出現重複數字
好了,大家玩玩看吧!!!
然而大家或許會發現仍有些問題,譬如當您猜對後依然可以繼續猜
這時我們必須修改[我猜(SpeedButton1)]的OnClick事件,如下
語法:
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
int an=0,bn=0;
for(int i=1;i<=4;i++){
if(Edit1->Text.SubString(i,1)==num.SubString(i,1)) an++;
for(int j=1;j<=4;j++)
if(Edit1->Text.SubString(i,1)==num.SubString(j,1)) if(i!=j)bn++;
}
ListBox1->Items->Add(Edit1->Text+" => "+IntToStr(an)+"A"+IntToStr(bn)+"B");
if(an==4) {
ListBox1->Items->Add("猜對了...");
SpeedButton1->Enabled=false;
Edit1->Enabled=false;
}
Edit1->Text="";
}
當然[重玩(SpeedButton2)]的OnClick事件也需要修改啦,如下
語法:
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
ListBox1->Clear();
num="";
FormCreate(Sender);
SpeedButton1->Enabled=true;
Edit1->Enabled=true;
Edit1->SetFocus();
}
如何?好玩嗎?
下個禮拜再與大家討論利用Socket物件設計可和好友網路對戰吧
<
>