線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1653
推到 Plurk!
推到 Facebook!

為何無法一張一張發牌

尚未結案
gwen1510
一般會員


發表:2
回覆:3
積分:1
註冊:2004-11-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-22 05:49:12 IP:220.140.xxx.xxx 未訂閱
我利用bcb 寫了一個21點的程式 但是在發牌時,無法一張一張發牌, 每次按下開始 都是一次顯示四張牌 以下是程式碼,請問各位高手 我應該如何改成可以一張一張顯示圖片呢 另外,每當程式執行時,都必須等待一段時間,牌才會顯示出來, 不知是不是有什麼問題,應該要如何解決呢?? if(card_num1[8]>=14 && card_num1[8]<=26) { Image8->Visible=true; ImageList1->Draw(Image8->Canvas,0,0,card_num1[8],true); card_num[8]=card_num1[8]-13; } else if(card_num1[8]>=27 && card_num1[8]<=39) { Image8->Visible=true; ImageList1->Draw(Image8->Canvas,0,0,card_num1[8],true); card_num[8]=card_num1[8]-26; } else { Image8->Visible=true; ImageList1->Draw(Image8->Canvas,0,0,card_num1[8],true); card_num[8]=card_num1[8]-39; } card_num1[1]=random_num(); while(card_num1[1]==card_num1[8]) { card_num1[1]=random_num(); } if(card_num1[1]>=1 && card_num1[1]<=13) { card_num[1]=card_num1[1]; card_style[1]="c"; Image1->Visible=true; Image1->Picture->LoadFromFile("cardpic.bmp"); } else if(card_num1[1]>=14 && card_num1[1]<=26) { card_num[1]=card_num1[1]-13; card_style[1]="d"; Image1->Visible=true; Image1->Picture->LoadFromFile("cardpic.bmp"); } else if(card_num1[1]>=27 && card_num1[1]<=39) { card_num[1]=card_num1[1]-26; card_style[1]="h"; Image1->Visible=true; Image1->Picture->LoadFromFile("cardpic.bmp"); } else { card_num[1]=card_num1[1]-39; card_style[1]="s"; Image1->Visible=true; Image1->Picture->LoadFromFile("cardpic.bmp"); } card_num1[9]=random_num(); while(card_num1[9]==card_num1[1] || card_num1[9]==card_num1[8]) { card_num1[9]=random_num(); } if(card_num1[9]>=1 && card_num1[9]<=13) { card_num[9]=card_num1[9]; Image9->Visible=true; ImageList1->Draw(Image9->Canvas,0,0,card_num1[9],true); } else if(card_num1[9]>=14 && card_num1[9]<=26) { card_num[9]=card_num1[9]-13; Image9->Visible=true; ImageList1->Draw(Image9->Canvas,0,0,card_num1[9],true); } else if(card_num1[9]>=27 && card_num1[9]<=39) { card_num[9]=card_num1[9]-26; Image9->Visible=true; ImageList1->Draw(Image9->Canvas,0,0,card_num1[9],true); } else { card_num[9]=card_num1[9]-39; Image9->Visible=true; ImageList1->Draw(Image9->Canvas,0,0,card_num1[9],true); } card_num1[2]=random_num(); while(card_num1[2]==card_num1[8] || card_num1[2]==card_num1[9]||card_num1[2]==card_num1[1]) { card_num1[2]=random_num(); } if(card_num1[2]>=1 && card_num1[2]<=13) { card_num[2]=card_num1[2]; Image2->Visible=true; ImageList1->Draw(Image2->Canvas,0,0,card_num1[2],true); } else if(card_num1[2]>=14 && card_num1[2]<=26) { card_num[2]=card_num1[2]-13; Image2->Visible=true; ImageList1->Draw(Image2->Canvas,0,0,card_num1[2],true); } else if(card_num1[2]>=27 && card_num1[2]<=39) { card_num[2]=card_num1[2]-26; Image2->Visible=true; ImageList1->Draw(Image2->Canvas,0,0,card_num1[2],true); } else { card_num[2]=card_num1[2]-39; Image2->Visible=true; ImageList1->Draw(Image2->Canvas,0,0,card_num1[2],true); }
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-22 10:06:35 IP:211.76.xxx.xxx 未訂閱
你可以利用sleep或是用一個Timer來控制發牌的時間,還有請你把你的程式碼用縮排的方式排版,不然蠻難閱讀的
gwen1510
一般會員


發表:2
回覆:3
積分:1
註冊:2004-11-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-22 19:20:43 IP:210.60.xxx.xxx 未訂閱
sorry, 忘了縮排,直接copy 忘了修改 我有試過用sleep來做 但是似沒有作用, 另外timer也試過 可是不太了解如何控制timer,牌反而停不起來,一直發 可能是我不太會用sleep和timer... 是不是可以詳細說明一下這二程的寫法呢 感激不盡
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-23 00:53:51 IP:211.76.xxx.xxx 未訂閱
如果你是透過button來觸發事件,記得先把Timer的Enabled改成false 在button的事件裡面再設成Timer->Enabled=true;
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   發牌程式
}
發完牌後把Timer->Enabled=false; 發牌的時間可以由Timer->Interval來調整,若Timer->Interval=1000表示每1秒跑一次。你再試試看吧
gwen1510
一般會員


發表:2
回覆:3
積分:1
註冊:2004-11-22

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-24 02:04:47 IP:218.163.xxx.xxx 未訂閱
謝謝唷< > 我試試看< >
st
一般會員


發表:11
回覆:21
積分:11
註冊:2004-07-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-13 20:12:36 IP:61.62.xxx.xxx 未訂閱
何不用Thread ? 比Timer還好用. 寫程式與攝影一樣重要
系統時間:2017-10-23 17:39:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!