C语言21点纸牌游戏系统详细设计.docx
- 文档编号:587053
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:14
- 大小:68.34KB
C语言21点纸牌游戏系统详细设计.docx
《C语言21点纸牌游戏系统详细设计.docx》由会员分享,可在线阅读,更多相关《C语言21点纸牌游戏系统详细设计.docx(14页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 21 纸牌 游戏 系统 详细 设计