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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
系统详细设计
1.程序流程图:
2.功能测试:
2.1游戏主界面
图2.1进入游戏后的游戏说明及规则
2.2开始游戏
图2.2选择下注数目,然后随机发牌,只能见庄家一张牌,可以选择查看庄家隐藏的牌,此为游戏高级模式,开启后可选择想要的牌
2.3作弊模式
图2.3输入H后可开启作弊模式能看到接下来发的牌的点数
2.4作弊模式下赢得游戏
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void Wait_f(int);
void Pause_f();/*暂停,按任意键继续*/
int Random_f(long ,long );/*返回两个参数之间的随机数*/
void Replay_f(char *);/*询问是否重开一局*/
void Hit_f(int *);/*发一张牌*/
void Deal_f(int *,int *,int *,int *);/*双方各发两张牌*/
void Bet_f(int *,int *);/*接受下注的数目*/
void Print_f(int ,int ,int ,int );/*打印结果*/
图2.4在作弊模式下取胜,可以接着要牌,但玩家的牌最多不能超过5张,取胜后会统计结果,询问是否继续游戏
2.5非作弊模式
图2.5此情况为非作弊模式,不能见庄家的牌,只能知道结果,输掉游戏后统计结果,询问是否继续
2.6退出游戏
图2.6此为退出游戏,输入后自动关闭窗口
3.源程序:
#include<time.h>
printf("4:庄家点数等于或大于16时游戏停止。\n");
printf("5:您将获得100元初始基金!\n");
printf("提示:游戏中“是”输入“y”,“否”输入“n”。\n");
printf("PS:请按Enter键继续游戏!\n");
getchar();
void Rules_f();/*显示游戏规则*/
void Results_f(int ,int ,int ,int *,int *,int *,int *);/*统计结果(输赢平)*/
void Hit_f2(int * npTotal,int a);
int nnn;
int main()
{
int nPlayer=0,nCpu=0,nWin=0,nLose=0,nDraw=0,nPlayerTurns=0,
}
void Rules_f() /*这个函数显示游戏规则*/
{
printf("欢迎来到21点纸牌游戏\n");
printf("这里有一些简单的规则:\n");
printf("1:你的几张牌中只能有一个最大的牌。\n");
printf("2:如果你破产将输掉游戏。\n");
printf("3:如果你赢得游戏将获得你下注两倍的钱。\n");
return(0);
}
Bet_f(&nBet,&nMoney);/*接受下注的数目*/
Deal_f(&nPlayer,&nCpu,&nPlayerTurns,&nCpuTurns);/*双方各发两张牌*/
printf("想看庄家牌吗?");
scanf("%c",&mmm);
if((mmm=='y')||(mmm=='Y'))
nCpuTurns=0,nMoney=0,nBet;
/* nPlayer--玩家手中全部牌的点数和,nPlayerTurns--玩家手中牌的数量*/
char chAnswer;
char mmm;
int a;
system("cls");/*执行系统命令"清屏"*/
Rules_f();
printf("确认是否开始游戏:");
{
nPlayerTurns++;/*计算总牌数*/
if(nPlayerTurns>5)/*看是否允许再要牌*/
{
printf("您的牌不能超过5张!\n");
}
}
if((nPlayerTurns<6)&&(chAnswer=='h'))
{
printf("\n");
if((mmm=='y')||(mmm=='Y'))
Hit_f2(&nPlayer,a);
else Hit_f(&nPlayer);/*为玩家发一张牌*/
}
}
while((chAnswer=='h')||(chAnswer=='H'));
for(;(nCpu<16)&&(nCpuTurns<6);nCpuTurns++)/*计算机要牌的条件*/
{
printf("\n");
{
printf("%d\n",nnn);
printf("您想要哪一张牌?");
scanf("%d",&a);
}
systeFra Baidu bibliotek("cls");
do
{
printf("想要继续要牌吗?(H开启作弊模式)\n");/*询问玩家是否接着要牌*/
scanf(" %c",&chAnswer);
if((chAnswer=='h')||(chAnswer=='H'))
Replay_f(&chAnswer);/*询问是否重开一局*/
}while((chAnswer=='y')||(chAnswer=='Y'));
Print_f(nWin,nLose,nDraw,nMoney);/*打印最后结果*/
printf("\n");
printf("\t\t\t\t");
return(0);
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);/*计算最后的结果(统计输赢平的局数)*/
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");
相关文档
最新文档