請問有人會寫BlackJack的遊戲程式嗎? |
尚未結案
|
heck
一般會員 發表:1 回覆:0 積分:0 註冊:2004-03-26 發送簡訊給我 |
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
jerry030
一般會員 發表:0 回覆:2 積分:0 註冊:2004-10-30 發送簡訊給我 |
這是我參考其他書上的範例,希望對你有幫助 >>> 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 發送簡訊給我 |
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 發送簡訊給我 |
|
irene0602
一般會員 發表:0 回覆:2 積分:0 註冊:2004-10-30 發送簡訊給我 |
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |