C语言21点纸牌游戏系统详细设计.docx

上传人:b****4 文档编号:587053 上传时间:2022-10-11 格式:DOCX 页数:14 大小:68.34KB
下载 相关 举报
C语言21点纸牌游戏系统详细设计.docx_第1页
第1页 / 共14页
C语言21点纸牌游戏系统详细设计.docx_第2页
第2页 / 共14页
C语言21点纸牌游戏系统详细设计.docx_第3页
第3页 / 共14页
C语言21点纸牌游戏系统详细设计.docx_第4页
第4页 / 共14页
C语言21点纸牌游戏系统详细设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C语言21点纸牌游戏系统详细设计.docx

《C语言21点纸牌游戏系统详细设计.docx》由会员分享,可在线阅读,更多相关《C语言21点纸牌游戏系统详细设计.docx(14页珍藏版)》请在冰豆网上搜索。

C语言21点纸牌游戏系统详细设计.docx

C语言21点纸牌游戏系统详细设计

C语言21点纸牌游戏系统详细设计

系统详细设计

1.程序流程图:

 

 

2.功能测试:

2.1游戏主界面

图2.1进入游戏后的游戏说明及规则

2.2开始游戏

图2.2选择下注数目,然后随机发牌,只能见庄家一张牌,可以选择查看庄家隐藏的牌,此为游戏高级模式,开启后可选择想要的牌

2.3作弊模式

图2.3输入H后可开启作弊模式能看到接下来发的牌的点数

2.4作弊模式下赢得游戏

图2.4在作弊模式下取胜,可以接着要牌,但玩家的牌最多不能超过5张,取胜后会统计结果,询问是否继续游戏

2.5非作弊模式

图2.5此情况为非作弊模式,不能见庄家的牌,只能知道结果,输掉游戏后统计结果,询问是否继续

2.6退出游戏

图2.6此为退出游戏,输入后自动关闭窗口

3.源程序:

#include

#include

#include

#include

voidWait_f(int);

voidPause_f();/*暂停,按任意键继续*/

intRandom_f(long,long);/*返回两个参数之间的随机数*/

voidReplay_f(char*);/*询问是否重开一局*/

voidHit_f(int*);/*发一张牌*/

voidDeal_f(int*,int*,int*,int*);/*双方各发两张牌*/

voidBet_f(int*,int*);/*接受下注的数目*/

voidPrint_f(int,int,int,int);/*打印结果*/

voidRules_f();/*显示游戏规则*/

voidResults_f(int,int,int,int*,int*,int*,int*);/*统计结果(输赢平)*/

voidHit_f2(int*npTotal,inta);

 

intnnn;

intmain()

{

intnPlayer=0,nCpu=0,nWin=0,nLose=0,nDraw=0,nPlayerTurns=0,

nCpuTurns=0,nMoney=0,nBet;

/*nPlayer--玩家手中全部牌的点数和,nPlayerTurns--玩家手中牌的数量*/

charchAnswer;

charmmm;

inta;

system("cls");/* 执行系统命令"清屏" */

Rules_f();

printf("确认是否开始游戏:

");

scanf("%c",&chAnswer);

if((chAnswer=='y')||(chAnswer=='Y'))

{

nMoney=100;

printf("\t\t\t");

Pause_f();

}

else

{

return(0);

}

 

do

{

system("cls");

if(nMoney<0)

{

printf("您没钱了!

\n");

return(0);

}

Bet_f(&nBet,&nMoney);/*接受下注的数目*/

Deal_f(&nPlayer,&nCpu,&nPlayerTurns,&nCpuTurns);/*双方各发两张牌*/

printf("想看庄家牌吗?

");

scanf("%c",&mmm);

if((mmm=='y')||(mmm=='Y'))

{

printf("%d\n",nnn);

printf("您想要哪一张牌?

");

scanf("%d",&a);

}

system("cls");

do

{

printf("想要继续要牌吗?

(H开启作弊模式)\n");/*询问玩家是否接着要牌*/

scanf("%c",&chAnswer);

if((chAnswer=='h')||(chAnswer=='H'))

{

nPlayerTurns++;/*计算总牌数*/

if(nPlayerTurns>5)/*看是否允许再要牌*/

{

printf("您的牌不能超过5张!

\n");

}

}

if((nPlayerTurns<6)&&(chAnswer=='h'))

{

printf("\n");

if((mmm=='y')||(mmm=='Y'))

Hit_f2(&nPlayer,a);

elseHit_f(&nPlayer);/*为玩家发一张牌*/

}

}

while((chAnswer=='h')||(chAnswer=='H'));

for(;(nCpu<16)&&(nCpuTurns<6);nCpuTurns++)/*计算机要牌的条件*/

{

printf("\n");

printf("向庄家发一张牌:

\n");

Hit_f(&nCpu);/*为计算机发一张牌*/

}

printf("\n\n");

printf("庄家为:

%d点\n",nCpu);/*显示总点数*/

printf("您为:

%d点\n",nPlayer);

printf("\n");

Results_f(nPlayer,nCpu,nBet,&nMoney,&nDraw,&nWin,&nLose);/*计算最后的结果(统计输赢平的局数)*/

Replay_f(&chAnswer);/*询问是否重开一局*/

}while((chAnswer=='y')||(chAnswer=='Y'));

Print_f(nWin,nLose,nDraw,nMoney);/*打印最后结果*/

printf("\n");

printf("\t\t\t\t");

return(0);

}

 

voidRules_f()/*这个函数显示游戏规则*/

{

printf("欢迎来到21点纸牌游戏\n");

printf("这里有一些简单的规则:

\n");

printf("1:

你的几张牌中只能有一个最大的牌。

\n");

printf("2:

如果你破产将输掉游戏。

\n");

printf("3:

如果你赢得游戏将获得你下注两倍的钱。

\n");

printf("4:

庄家点数等于或大于16时游戏停止。

\n");

printf("5:

您将获得100元初始基金!

\n");

printf("提示:

游戏中“是”输入“y”,“否”输入“n”。

\n");

printf("PS:

请按Enter键继续游戏!

\n");

getchar();

}

voidBet_f(int*npBet,int*npMoney)/*该函数接受玩家下注,并计算赌资的总数*/

{

system("cls");

printf("您有:

%d元\n",*npMoney);

printf("您将下注多少钱:

");

scanf("%d",npBet);

if(*npBet<0)

{

*npBet=*npBet*(-1);

}

*npMoney=*npMoney-*npBet;

}

 

voidDeal_f(int*npPlayer,int*npCpu,int*npPlayeReturns,int*npCpuReturns)

/*该函数是给计算机与玩家各发两张牌*/

{

intnPlayerCard1,nPlayerCard2,nCpuCard1,nCpuCard2;

*npPlayeReturns=2;

*npCpuReturns=2;

nPlayerCard1=Random_f(13,1);

printf("\nDEALINGHAND\n");

getchar();

Pause_f();

nPlayerCard2=Random_f(13,1);

Pause_f();

nCpuCard1=Random_f(13,1);

Pause_f();

nCpuCard2=Random_f(13,1);

if(nPlayerCard1>=10)

{

nPlayerCard1=10;

}

if(nPlayerCard2>=10)

{

nPlayerCard2=10;

}

if(nCpuCard1>=10)

{

nCpuCard1=10;

}

if(nCpuCard2>=10)

{

nCpuCard2=10;

}

*npPlayer=nPlayerCard1+nPlayerCard2;

*npCpu=nCpuCard1+nCpuCard2;

printf("您的总点数是:

%d\n",*npPlayer);

printf("[%d]",nPlayerCard1);

printf("[%d]",nPlayerCard2);

printf("\n");

printf("庄家有一张牌为:

%d",nCpuCard1);

printf("\n");

printf("[*][%d]\n",nCpuCard1);

nnn=nCpuCard2;

}

voidHit_f(int*npTotal)/*发一张牌,返回点数之和*/

{

intnCard;

nCard=Random_f(13,1);

if(nCard>=10)

{

nCard=10;

}

*npTotal=*npTotal+nCard;

printf("点数是:

:

%d点\n",nCard);

printf("总点数是:

%d点\n",*npTotal);

}

voidResults_f(intnPlayer,intnCpu,intnBet,int*npMoney,int*npDraw,int

*npWin,int*npLose)/*统计结果(输赢平及输赢平的局数)*/

{

if(nCpu==nPlayer)

{

printf("庄家赢!

\n");

++*npDraw;

}

if(nPlayer>21)

{

printf("您爆点了!

\n");

++*npLose;

}

else

{

if(nCpu

{

printf("恭喜您赢了!

");

*npMoney=*npMoney+(nBet*2);

++*npWin;

}

}

if(nCpu>21)

{

printf("庄家爆点!

\n");

if(nPlayer<=21)

{

printf("恭喜您赢了!

\n");

++*npWin;

*npMoney=*npMoney+(nBet*2);

}

}

else

{

if(nCpu>nPlayer)

{

printf("您输了!

\n");

++*npLose;

}

}

}

voidReplay_f(char*chpAns)/*询问是否重开一局*/

{

 

printf("想要再玩一次吗?

\n");

scanf("%c",chpAns);

}

voidPrint_f(i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1