C语言21点纸牌游戏系统详细设计.docx
- 文档编号:8888828
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:14
- 大小:73.38KB
C语言21点纸牌游戏系统详细设计.docx
《C语言21点纸牌游戏系统详细设计.docx》由会员分享,可在线阅读,更多相关《C语言21点纸牌游戏系统详细设计.docx(14页珍藏版)》请在冰豆网上搜索。
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〈time、h〉
#include #include #include<stdlib、h〉 void Wait_f(int); voidPause_f();/*暂停,按任意键继续*/ intRandom_f(long,long);/*返回两个参数之间得随机数*/ void Replay_f(char*);/*询问就是否重开一局*/ voidHit_f(int*);/*发一张牌*/ void Deal_f(int*,int*,int *,int*);/*双方各发两张牌*/ voidBet_f(int*,int*);/*接受下注得数目*/ voidPrint_f(int,int,int,int);/*打印结果*/ void Rules_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); ﻩﻩelse Hit_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); } void Rules_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) /*该函数就是给计算机与玩家各发两张牌*/ { int nPlayerCard1,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〈nPlayer) ﻩ{ ﻩ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(int nWins,int nLose,int nDraw,intnMoney) { printf("赢得: %d局\n", nWins); ﻩﻩﻩﻩ printf("输掉: %d局\n",nLose); ﻩﻩﻩﻩﻩ printf("平局: %d局\n",nDraw); ﻩﻩﻩﻩﻩprintf(”剩余资金: %d元\n",nMoney); } void Wait_f(intnMilli) { intnStart1,nStart2; for(nStart1=0;nStart1〈nMilli*100;nStart1++) for(nStart2=0;nStart2〈nMilli*100;nStart2++) {;} } voidPause_f() { printf("按任意键继续: ”); getchar(); } intRandom_f(longlBigNumber,longlSmallNumber) /*选择两个参数之间得随机数*/ { intnRan; srand((unsigned)time(NULL)); nRan=rand()%(lBigNumber—(lSmallNumber-1))+lSmallNumber; return(nRan); } voidHit_f2(int* npTotal,inta) /*发一张牌,返回点数之与*/ { ﻩintnCard; nCard=a; if(nCard>=10) { ﻩﻩnCard=10; ﻩ} *npTotal=*npTotal+nCard; printf(”这张牌就是: %d点\n”,nCard); printf("一共就是: %d点\n”,*npTotal); ﻩ}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 21 纸牌 游戏 系统 详细 设计