C语言程序设计2点扑克牌游戏.docx

上传人:b****3 文档编号:10170415 上传时间:2023-05-24 格式:DOCX 页数:13 大小:21.60KB
下载 相关 举报
C语言程序设计2点扑克牌游戏.docx_第1页
第1页 / 共13页
C语言程序设计2点扑克牌游戏.docx_第2页
第2页 / 共13页
C语言程序设计2点扑克牌游戏.docx_第3页
第3页 / 共13页
C语言程序设计2点扑克牌游戏.docx_第4页
第4页 / 共13页
C语言程序设计2点扑克牌游戏.docx_第5页
第5页 / 共13页
C语言程序设计2点扑克牌游戏.docx_第6页
第6页 / 共13页
C语言程序设计2点扑克牌游戏.docx_第7页
第7页 / 共13页
C语言程序设计2点扑克牌游戏.docx_第8页
第8页 / 共13页
C语言程序设计2点扑克牌游戏.docx_第9页
第9页 / 共13页
C语言程序设计2点扑克牌游戏.docx_第10页
第10页 / 共13页
C语言程序设计2点扑克牌游戏.docx_第11页
第11页 / 共13页
C语言程序设计2点扑克牌游戏.docx_第12页
第12页 / 共13页
C语言程序设计2点扑克牌游戏.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言程序设计2点扑克牌游戏.docx

《C语言程序设计2点扑克牌游戏.docx》由会员分享,可在线阅读,更多相关《C语言程序设计2点扑克牌游戏.docx(13页珍藏版)》请在冰点文库上搜索。

C语言程序设计2点扑克牌游戏.docx

C语言程序设计2点扑克牌游戏

 

实验报告

 

课程名称:

C语言程序设计

实验项目:

21点扑克牌游戏设计

专业班级:

电子信息工程

实验室号:

信息205实验组号:

xx

实验时间:

2010-5-4批阅时间:

指导教师:

成绩:

沈阳工业大学实验报告

(适用计算机程序设计类)

专业班级:

电子信息工程0902学号:

姓名:

实验名称:

21点扑克牌游戏

1.要求:

该程序是一个21点的扑克牌游戏,玩家一共可以要5张牌,如果牌的点数超过21,则暴了,自动出局;在不超过21点的情况下,玩家与庄家(计算机)比较牌点数的大小,大者为赢。

2.程序设计要求:

1)程序中一共有13张扑克牌可以随机抽取,大于10的点数为10,现要求大于10的点数全部为半点。

2)高级玩家可以查看下一张牌,即按H键,然后要求输入密码,密码正确可以看牌,并决定是否要牌。

当然,在游戏规则上不能泄露这个秘密。

3)可以编写作弊程序,即按某一个键(自定)去查看计算机的牌面,并根据计算机所得的牌来输入自己想要的牌,当然,在界面上不能显示这点秘密(看过后即清屏)。

4)每次要牌后可以设定赔率,即如果开始下的是10元钱的注,如果牌好,你可以要求再下注,当然不能超过你所有的总钱数。

3.实验方案(程序设计说明)

 

4.实验步骤或程序(经调试后正确的源程序)

 

5.程序运行结果

6.出现的问题及解决方法

 

附件A沈阳工业大学实验报告

(适用计算机程序设计类)

专业班级:

电子信息工程0902学号:

姓名:

实验步骤或程序:

(我所做的程序是作弊程序改动已经加粗)

#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("\t\t\tWOULDYOULIKETOPLAY?

");

scanf("%c",&chAnswer);

if((chAnswer=='y')||(chAnswer=='Y'))

{

printf("\t\t\tIWILLLETYOUSTARTWITH$100\n");

nMoney=100;

printf("\t\t\t");

Pause_f();

}

else

{

return(0);

}

 

do

{

system("cls");

if(nMoney<0)

{

printf("Yourbroke\n");

return(0);

}

Bet_f(&nBet,&nMoney);/*接受下注的数目*/

Deal_f(&nPlayer,&nCpu,&nPlayerTurns,&nCpuTurns);/*双方各发两张牌*/

printf("\t\t\tWouldyouwanttocheat?

yesorno?

");

scanf("%c",&mmm);

if((mmm=='y')||(mmm=='Y'))

{

printf("%d",nnn);

printf("\t\t\twhichcarddoyouwant?

");

scanf("%d",&a);

}

system("cls");

do

{

 

printf("\t\t\tWouldYouLikeToHitorStay:

");/*询问玩家是否接着要牌*/

scanf("%c",&chAnswer);

if((chAnswer=='h')||(chAnswer=='H'))

{

nPlayerTurns++;/*计算总牌数*/

if(nPlayerTurns>5)/*看是否允许再要牌*/

{

printf("\t\t\tYouCan'tHavemorethan5cards");

}

}

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("\t\t\tTheDealerTakesACard");

Hit_f(&nCpu);/*为计算机发一张牌*/

}

printf("\n\n");

printf("\t\t\tTheDealerHasATotal:

%d\n",nCpu);/*显示总点数*/

printf("\t\t\tYouHaveATotalOf:

%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("\t\tWELCOMETOISAACSHAFFERSBLACKJACKGAME\n");

printf("\t\t\tHEREARESOMESIMPLERULES\n");

printf("\t\t\t1:

YouCanonlyhaveamaxof5cards.\n");

printf("\t\t\t2:

Ifyoubustyouautomaticallylose.\n");

printf("\t\t\t3:

Ifyouwinyouwindoublewhatyoubet");

printf("\t\t\t4:

TheDealerstopsatorafter16.\n");

printf("\t\t\t\t");

getchar();

}

voidBet_f(int*npBet,int*npMoney)/*该函数接受玩家下注,并计算赌资的总数*/

{

system("cls");

printf("\t\t\tYOUHAVE:

$%d\n",*npMoney);

printf("\t\t\tHowMuchDoYouWishToBet:

");

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("\n\t\t\tDEALINGHAND\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("\t\t\tYOUHAVEatotalof:

%d\n",*npPlayer);

printf("[%d]",nPlayerCard1);

printf("[%d]",nPlayerCard2);

printf("\n");

printf("\t\t\tTheDEALERHASA%dSHOWING",nCpuCard1);

printf("\n");

printf("[*][%d]",nCpuCard1);

nnn=nCpuCard2;

}

voidHit_f(int*npTotal)/*发一张牌,返回点数之和*/

{

intnCard;

nCard=Random_f(13,1);

if(nCard>=10)

{

nCard=10;

}

*npTotal=*npTotal+nCard;

printf("\t\t\tThecardisa:

%d\n",nCard);

printf("\t\t\tTotalis:

%d\n",*npTotal);

}

voidResults_f(intnPlayer,intnCpu,intnBet,int*npMoney,int*npDraw,int

*npWin,int*npLose)/*统计结果(输赢平及输赢平的局数)*/

{

if(nCpu==nPlayer)

{

printf("\t\t\tITWASADRAWHOUSEWINS\n");

++*npDraw;

}

if(nPlayer>21)

{

printf("\t\t\tYouBust\n");

++*npLose;

}

else

{

if(nCpu

{

printf("\n\t\t\tYOUWIN");

*npMoney=*npMoney+(nBet*2);

++*npWin;

}

}

if(nCpu>21)

{

printf("\t\t\tDealerBust\n");

if(nPlayer<=21)

{

printf("\n\t\t\tYOUWIN");

++*npWin;

*npMoney=*npMoney+(nBet*2);

}

}

else

{

if(nCpu>nPlayer)

{

printf("\t\t\tYOULOSE\n");

++*npLose;

}

}

}

voidReplay_f(char*chpAns)/*询问是否重开一局*/

{

 

printf("\n\t\tWouldYouLikeToPlayThisGameAgain:

");

scanf("%c",chpAns);

}

voidPrint_f(intnWins,intnLose,intnDraw,intnMoney)

{

printf("\t\t\t\tWINS:

%d\n",nWins);

printf("\t\t\t\tLOSE:

%d\n",nLose);

printf("\t\t\t\tDRAWS:

%d\n",nDraw);

printf("\t\t\t\tMONEY:

%d\n",nMoney);

}

voidWait_f(intnMilli)

{

intnStart1,nStart2;

for(nStart1=0;nStart1

for(nStart2=0;nStart2

{;}

}

voidPause_f()

{

printf("PressAnyKeyToContinue");

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("\t\t\tThecardisa:

%d\n",nCard);

printf("\t\t\tTotalis:

%d\n",*npTotal);

}

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2