全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2785
推到 Plurk!
推到 Facebook!

請問有人會寫BlackJack的遊戲程式嗎?

尚未結案
heck
一般會員


發表:1
回覆:0
積分:0
註冊:2004-03-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-31 20:17:53 IP:61.71.xxx.xxx 未訂閱
請問有人會寫BlackJack的遊戲程式嗎!? 可不可以指導我一下? 因為完全不知道要怎樣寫~對Delphi是第一次上手 可以麻煩教教我嗎? 不用圖片~只要有簡單的文字跟可以有結果就好! 先謝謝大家了! 不好意思~題目沒說清楚~就是
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-31 22:44:19 IP:219.68.xxx.xxx 未訂閱
黑傑克?是21點嗎? 是對戰方式還是要寫AI? 題目說清楚..方便自己也方便別人
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-31 22:45:25 IP:202.39.xxx.xxx 未訂閱
參考這個範例(含 source code) http://www.radix.net/~bziegler/Delphi/bj.zip
jerry030
一般會員


發表:0
回覆:2
積分:0
註冊:2004-10-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-01 00:09:31 IP:61.64.xxx.xxx 未訂閱
這是我參考其他書上的範例,希望對你有幫助 >>> who='player' who='computer'>sum_player)and(quit_player=1) then quit_computer:=1 else if sum_computer<=16 then call_cards('computer') else if sum_computer>=17 then begin random_number:=random(1); if random_number=0 then quit_computer:=1 else call_cards('computer'); end; if quit_computer=1 then begin cards_computer:=cards_computer ' END'; gotoxy(1,19);write(cards_computer); if quit_player=1 then delay(1000); end; end; begin save; print('playing'); sum_player:=0;sum_computer:=0;cards_player:='';cards_computer:=''; quit_player:=0;quit_computer:=0; call_cards('player'); repeat if quit_computer=0 then begin AI_COMPUTER; if quit_computer=1 then judge(sum_player,sum_computer,quit_player,quit_computer, cards_player,cards_computer); end; if quit_player=0 then input:=readkey; if (quit_computer=0)or(quit_player=0) then case input of '4': call_cards('player'); '2': if quit_player=0 then begin cards_player:=cards_player ' END'; gotoxy(1,7);write(cards_player); quit_player:=1; judge(sum_player,sum_computer,quit_player,quit_computer, cards_player,cards_computer); end; 'x': halt; end; until (quit_player=1)and(quit_computer=1); gotoxy(1,25);write('Press any key to continue...'); readkey; end; procedure game; var quit:string; procedure chip_in_player; var input:char; begin input:='1'; bet_player:=0; repeat print('bet'); input:=readkey; case input of '8': begin if (bet_player<50)and(total_player>0) then begin inc(bet_player,10);dec(total_player,10); end; end; '2': begin if (bet_player>0) then begin dec(bet_player,10);inc(total_player,10); end; end; '4': quit:='begin'; 'x': quit:='exit'; end; until ((input='4')or(input='x'))and((bet_player>0)or(input='x')); end; procedure chip_in_computer; var least,chip_in:integer; begin bet_computer:=0; if total_computer<50 then least:=total_computer else least:=50; chip_in:=(random(5) 1)*10; inc(bet_computer,chip_in); dec(total_computer,chip_in); end; begin repeat quit:='normal'; chip_in_computer; chip_in_player; if quit='begin' then play else if quit='exit' then halt; until (win_fail='win')or(win_fail='fail'); end; {========================END KERNEL=================} {==========================MEAU=====================} procedure newgame; procedure newgame_init; begin repeat clrscr; write('Input account: (length<=8)(account <> x)'); readln(account); until (length(account)<=8)and(length(account)>0); total_player:=1000;total_computer:=1000; bet_player:=0;bet_computer:=0; save_name:=account '.dat'; end; begin newgame_init; game; end; procedure loadgame; var filename:string; begin repeat clrscr; gotoxy(1,2);write('IF account=x then EXIT'); gotoxy(1,1);write('Input account: '); readln(account); if account='x' then halt; until filesearch(account '.dat','\')<>''; assign(read_file,account '.dat'); reset(read_file); read(read_file,total_player,total_computer,bet_player,bet_computer); close(read_file); save_name:=account '.dat'; game; end; procedure meau; var input:char; begin clrscr; writeln('1: NEW GAME'); writeln('2: LOAD GAME'); writeln('x: EXIT'); repeat input:=readkey; case input of '1':newgame; '2':loadgame; 'x':halt; end; until (input='1')or(input='2'); end; {==========================END MEAU======================} begin randomize; readme; meau; end.< >< >< >< >
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-01 01:00:20 IP:219.68.xxx.xxx 未訂閱
heck您好...剛剛幫您找了一下..資料還蠻多的..也有現成的程式喔    21點的遊戲原始碼及執行檔(DOS版的)..程式很簡潔.. http://delphi.ktop.com.tw/loadfile.php?TOPICID=18426323&CC=412097 您也可以將他修改..配合TCARD(撲克牌圖形元件)..來實做更漂亮的程式.. http://delphi.ktop.com.tw/loadfile.php?TOPICID=18426636&CC=412104 ------------------------------------------ 說明..解壓縮PK這個資料夾..並執行PK.DPK..會開啟DELPHI..再按INSTALL.. 即完成安裝..在SAMPLES元件頁就會看到"CARD" 這個ICON..就可以使用了.. 解壓縮DEMO這個資料夾..可以看範例...
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-01 16:26:47 IP:219.68.xxx.xxx 未訂閱
heck您好... 昨天看了TCARD這個元件..覺得蠻好玩的..也想玩玩AI 就自己動手做了... http://delphi.ktop.com.tw/topic.php?TOPIC_ID=58903    程式也很簡潔喔..比DOS版的還簡單..AI寫的還蠻強的喔< > 您初學應該也看的懂< >
irene0602
一般會員


發表:0
回覆:2
積分:0
註冊:2004-10-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-02 13:58:49 IP:218.167.xxx.xxx 未訂閱
請問一下 你寫的那個程式阿 沒有判斷J Q K=10 而是J=11 Q=12 K=13 那要怎麼去判斷呢?
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-11-02 14:29:30 IP:219.68.xxx.xxx 未訂閱
irene0602您好...在BLACK JACK裡面 J Q K 要等於10嗎< >..呵..真是不好意思..不知道這個規則< > 不過也不難...多加一個procedure就行了...例如以下
function GetCardValue(out card:Tcard):integer;
begin
   if card.value>=10 then
      result:=10
   else
      result:=card.value;
end;
然後遇到有point:=point CardPic[..].value; 或 compoint:=compoint ComCardPic[..].value; 之類的..通通改成 point:=point GetCardValue(CardPic[..]); compoint:=compoint GetCardValue(ComCardPic[..]); 不知道這是不是你們的作業..其實我的程式都有上註解了.. 我幫你們寫出這樣的東西..算是仁至義盡囉< > 要改成你們要的功能..應該不難< > 既然是作業..就多多自己練習囉..加油
irene0602
一般會員


發表:0
回覆:2
積分:0
註冊:2004-10-30

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-11-02 14:46:11 IP:218.167.xxx.xxx 未訂閱
我是不知道開板的大大是不是跟我同一間學校啦 只是剛好老師出了這個題目當考題 由於剛碰這個軟體 很多都不是很了解 說真的看不太懂 我的是自己寫的 只是無法將>>>>
系統時間:2024-04-27 0:25:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!