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

上传人:b****8 文档编号:8888828 上传时间:2023-02-02 格式:DOCX 页数:14 大小:73.38KB
下载 相关 举报
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点纸牌游戏系统详细设计

系统详细设计

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);

ﻩ}

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

当前位置:首页 > 成人教育 > 远程网络教育

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

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