ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:21.02KB ,
资源ID:10296205      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10296205.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(21点扑克牌游戏.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

21点扑克牌游戏.docx

1、21点扑克牌游戏21点扑克牌游戏VC+课程设计报告课题名称:21点扑克牌游戏单位:动力工程学院2005级学号:0508190111姓名:田 骏指导教师:张 薇一、 程序功能简介:这是一个21点的扑克牌游戏。玩家一共可以要5张牌,如果牌的点数超过21点则输了,自动出局。在不超过21点的情况下,玩家与庄家比牌的点数大小,大者赢。根据玩家的级别高低,分为“普通玩家”、“高级玩家”、“超级玩家”,不同玩家在游戏中的规则有所不同。二、 程序设计思想: 1)、类的封装 根据程序设计要求,把程序中的函数与数据装到一个类中。因此,定义了类class Ccard,并定义两个构造函数,其中一个为缺省的构造函数。2

2、)、对输入密码是否正确的判断 在判断“高级玩家”、“超级玩家”的成员函数hplayer( )、splayer( )中利用字符串函数中的strcmp(char1 ,char2 )判断密码的正确性。其中char1 为玩家通过成员函数keyword( )输入的密码;char2 为设定的密码。当strcmp( )返回值为0时,char1 与char2 完全以致,hplayer( )、splayer( )返回值1;当strcmp( )返回值为1时,char1 与char2 完全以致,hplayer( )、splayer( )返回值0。3)、对“高级玩家”设计 程序设计要求“高级玩家”在要牌时点数不会超过

3、21点,设计了友元函数Hplayerhit(CCard &b)。通过对玩家对象的引用,实现计算机替“超级玩家”要下一张牌,判断要了下一张牌,总牌点数是否大于21点,并替玩家要牌,这些通过一个if else语句实现。4)、对“超级玩家”的设计 程序设计要求“超级玩家”时,可以看庄家的牌,可以看下一张牌,还可以指定下一张的牌点数。设计了有元函数Splayerhit(CCard &a,CCard &b),通过主函数对玩家对象与庄家对象的引用实现程序要求。a.nTotal为庄家的牌点数。5)、对增加赌注的设计 程序设计要求玩家可以根据牌的情况自行增加赌注。成员函数Addbet( )实现这一功能。通过判

4、断输入的字符确定玩家是否要增加赌注。当玩家加赌注时,判断是否超过了手中有的资金。提示玩家一共下了多少赌注,手中还有剩的资金。6)、对要张数的设计 程序设计要求要牌不能超过5 张。设计了成员数据 playerturns、cputurns,成员函数Playerturns( )、 Cpuhit ( )。玩家每次要牌时playerturns加1。Playerturns( )返回值大于1时,可以继续要牌。Cpuhit ( )实现了计算机的要牌,并限制了计算机要牌数不超过5张。7)、游戏熟赢的判定 设计了友元函数results(CCard &a,CCard &b),通过对庄家与玩家对象的引用,判断玩家、庄

5、家的牌点数是否超过21点,在不超过21 点的情况下,与庄家的总牌点数比较大下,判断一局游戏的书赢。并对类中有关玩家的数据nDollar(赌注资金)、nWin(赢局数)、nLose(输局数)、nDraw;(平局数),进行操作。8)主函数设计思想 程序开始运行,首先建立两个对象 cpu(庄家)、player(玩家),并判断玩家是否要开始游戏。在一局游戏结束后通过do-while语句判断玩家是否继续玩牌。开始游戏后,通过playerFirstplaytwo( ) cpuFirstplaytwo( )为玩家与庄家分别发两张牌。do-while语句判断玩家是否要牌、是否有资格要牌。在do-while语句

6、段中利用if-else-if语句判断玩家的级别,根据不同级别player调用不同函数进行要牌。通过cpu调用Cpuhit ( )完成庄家的要牌。之后程序从do-while程序段跳出,调用results(cpu,player)进行本局游戏胜负的判断。如果玩家不再继续游戏,player调用print( )输出游戏结果。三、 序中主要数据与函数列表:主要数据: int nDollar有多少钱int nWin赢局数 int nLose输局数 int nDraw平局数 double nTotal总的牌点数int nGamble赌注资金 int playerturns玩家牌的张数 int cputurns

7、庄家牌的张数 char str10输入的密码存入该字符串主要函数: CCard(int money) 构造函数CCard( ) 缺省构造函数int random(int hi,int lo) 取两参数之间的随即数,用于随即产生牌点void rules( ) 规则输出void BET( ) 接受玩家第一次下注void Addbet( ) 接受玩家增加赌注void playerFirstplaytwo( ) 为玩家发头两张牌void cpuFirstplaytwo( ) 为庄家发头两张牌void keyword( ) 输入密码程序void hit( ) 普通玩家要一张牌void print( )

8、输出最后结果void replay( ) 询问是否再玩一局int hplayer( ) 判断高级玩家int splayer( ) 判断超级玩家int Playerturns( ) 计算玩家牌的张数void Cpuhit( ) 庄家要牌friend void results(CCard &) 判定一局游戏结果friend void Hplayerhit(CCard &) 高级玩家要牌friend void Splayerhit(CCard &,CCard &) 超级玩家要牌四、程序:#include#include#include#include#include#define H class C

9、Card public: int nDollar;/有多少钱 int nWin;/赢局数 int nLose;/输局数 int nDraw;/平局数 double nTotal;/牌的总点数 int nGamble;/赌注资金 int playerturns;/ 玩家牌的张数 int cputurns;/ 庄家牌的张数 char ans1; char str10;/ 输入的密码存入该字符串CCard(int money,int Draw,int lose,int win)/构造函数 nDollar=money; nDraw=Draw; nLose=lose; nWin=win; /-CCard

10、( ) ; /虚构函数/-int random(int hi,int lo) /取两参数之间的随即数 int ran; srand(unsigned)time(NULL); ran=rand()%(hi-(lo-1)+lo)+lo; return(ran);/-void wait(int milli) /暂停milli秒 clock_t start; start=clock(); while(clock()-start)milli);/-void pause() /暂停,任按一键继续 coutendl; cout任按一键继续endl; getch();/-int begin( )/开头设置 c

11、outans1; if(ans1= y)|(ans1=Y) /检查输入是否为Yes rules( ); coutendl; couttt 你的赌本为$nDollarendl; /起始赌本 pause(); /暂停,任按一键继续 return(1); else return(0); /-int DisplayInfo( ) /有无赌本提示 system(cls); if(nDollar=0) /看看有无赌本 cout对不起,你没赌本了endl; /若赌本输光,结束程序 return(0); return(1);/-void rules( )/规则输出 system(cls); coutendl;

12、 coutendl; cout欢迎进入游戏endl; couttt 规则如下:endl; couttt 你最多只能选五张牌.endl; couttt 大于10点牌按0.5点计算.endl; couttt 如果你输了就自动出局.endl; couttt 如果你胜出将赢得双倍赌注.endl; couttt 电脑将在16点后结束要牌.endl; couttt; pause();/-void BET( )/接受玩家第一次下注 system(cls); cout开始游戏!go-endl; coutendl; cout你现在有 :$nDollarendl; coutnGamble; while(nGamb

13、lenDollar) cout你的钱不够,请重新下注nGamble; nDollar=nDollar-nGamble; cout您一共下注:nGamble 您还有赌注 :$nDollarendl;/-void Addbet( )/接受玩家增加赌注 int gamble; coutans1; if(ans1=y)|(ans1=Y) cout你现在的牌点总数:nTotalendl; cout你现在有赌注 :$nDollargamble; while(gamblenDollar) cout你的钱不够,请重新下注gamble; nGamble=nGamble+gamble; nDollar=nDoll

14、ar-gamble; cout您一共下注:nGamble 您还有赌注 :$nDollarendl; coutendl;/-void playerFirstplaytwo()/为玩家发头最初两张牌 double playercard1,playercard2; playerturns=2; playercard1=random(13,1);/取得13与1之间的随即数 coutntttDEALING HAND10)/若牌面点数大于10,按10 计点数 playercard1=0.5; if(playercard210) playercard2=0.5; nTotal=playercard1+pla

15、yercard2; /玩家的两张牌的总点数coutplayercard1;coutplayercard2;coutendl;cout现在你的牌面的总点数是 :nTotal10) cpucard1=0.5; if(cpucard210) cpucard2=0.5; nTotal=cpucard1+cpucard2; /计算机的两张牌的总点数 coutendl; cout* cpucard1endl; cout计算机有一张cpucard1显示endl;/计算机隐藏一张牌面 coutendl;/-void keyword( )/输入密码程序 char ch; int i=0; cout输入密码,以空

16、格键结束.注意:您只有一次输入密码的机会!endl; cout.flush(); ch=getch(); while(ch!=H) stri+=ch; cout10) card=0.5; nTotal=nTotal+card;/牌点总数 cout下张牌面是:cardendl;/输出牌面 cout总的牌面是: nTotalendl;/输出总点数 coutendl;/-void print( )/输出最后结果 coutendl; coutendl; coutendl; cout您的游戏纪录:endl; coutt赢的次数 :nWinendl; coutt输的次数 :nLoseendl; coutt

17、平局的次数 :nDrawendl; coutt你的赌本 :nDollarendl;/-void replay( )/询问是否再玩一局 coutendl; coutans1;/-int hplayer( )/判断高级玩家 char key10=123; coutans1; if(ans1=y)|(ans1=Y) keyword( ); if(strcmp(str,key)=0) return(1); cout错误密码!endl; return(0);/-int splayer( )/判断超级玩家 char key10=345; coutans1; if(ans1=y)|(ans1=Y) keyw

18、ord( ); if(strcmp(str,key)=0) return(1); cout错误密码!endl; return(0);/-int Playerturns( )/计算玩家牌的张数 playerturns+; /如果玩家要牌 cout你要了playerturns张牌endl; cout=5) /玩家手中的牌数增加一张 cout你手中不能超过5张牌endl;/若超过,则不能继续发牌 wait(500); return(0); return(1);/-void Cpuhit( )/庄家要牌 for(;(nTotal16)&(cputurns5);cputurns+) /计算机开始要牌的条件 wait(200); coutendl; cout计算机要了一张牌10) card=0.5; coutendl; cout现在计算机的总牌点为:a.nTotalendl; cout您的总牌点为:b.nTotalendl; cout下张牌面是:cardendl; coutcard; if(card10) card=0.5; coutendl; cout您要的牌为cardendl; b.nTo

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

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