#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);
ﻩ}