程序设计-21点扑克牌游戏_第1页
程序设计-21点扑克牌游戏_第2页
程序设计-21点扑克牌游戏_第3页
程序设计-21点扑克牌游戏_第4页
程序设计-21点扑克牌游戏_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计 -21 点扑克牌游戏课程设计课程名称:程序设计课题名称:21 点扑克牌游戏班级: 计算机学院 12-2BJ 班完成人:曹开明 指导教师:李宛珊- 2 -湖南理工学院计算机学院2013 年 12 月 19 日一、设计目的面向对象程序设计课程设计 是计算机科学与技术专业和软件工程专业集中实践 性环节之一,是学习完面向对象程序设计课程后进行的一次全面的综合练习。其 目的在于加深对面向对象程序设计中基础理论和基本知识的理解, 培养学生的实践能 力,促进理论与实践的结合。通过课程设计,让学生能够熟练运用 C+进行面向对象 编程,建立对象模型,降低软件的复杂性,改善软件

2、的重用性和维护性,提高软件的 生产效率,全面掌握面向对象编程技术。二、系统的功能分析必须包括: 系统的功能需求,可以画出功能模块图程序的 N-S 流程图如下图所示:初始化随机种子显显示游示戏游规戏则规个则While (chchoice)YynN nN判断 chchoice- 3 -Dowhile你的选择是明智的三、系统的程序设计与实现系统的运行环境: Visual C+ 6.0 (完整绿色版) 开发环境: C+系统的详细设计:类 class CCard该程序只需要一个 CCard类,其中有如下步骤:Class CCardPrivate:Int mPip5;(一共有 5 张牌)Int mNumb

3、er;(牌的张数)Int mDollar;(一共有多少钱)Int mGamble;(赌注)Int mWin;(赢得局数)Int mLose;(输的局数)Int mDraw;(平的局数)Public:CCard();(构造函数初始化)Void FistplayTwo(); (第一次出两张牌)Int GetNumber();(返回牌的数目)Int GetPip();(显示牌的总点数)Void DisplayPip(); (一次显示牌的点数)Void DisplayPip(int); (除第一张牌,一次显示牌的点数)Void Turnplay(); (出第一张牌)Void Win(); (赢了多少钱

4、)Void Lose(); (输了)Void Draw(); (平了)Int SetGamble(int); (设置赌注)Int GetMoney(); (返回钱数)Void DisplayInfo(); (打印必要信息)Int GetCurrentCard(); (返回当前牌)四、系统的运行结果与分析主要是开始运行的界面:当赌注下多了:玩完游戏:附录:系统的源程序#include- 6 -#include #include using namespace std; class CCardprivate:int naPip5;int nNumber;int nDollar;int nGambl

5、e;int nWin;int nLose;int nDraw;public:CCard();void FirstPlayTwo(); int GetNumber(); int GetPip();void DisplayPip(); void DisplayPip(int); void TurnPlay();void Win();void Lose();void Draw();int SetGamble(int);int GetMoney();void DisplayInfo();int GetCurrentCard();CCard:CCard()nNumber=0;nDollar=100;fo

6、r(int i=0;i5;i+) naPipi=0;nGamble=0; nWin=nLose=nDraw=0;int CCard:GetMoney(void) return nDollar; void CCard:DisplayInfo()cout 您 一 共 玩 了 nWin+nLose+nDraw 局, 赢了 nWin 局, 输了nLose 局, 平局 nDraw次。 n;n;cout 你的赌本共计有 $nDollar int CCard:SetGamble(int gamble) if(nDollar-gamble0)return -1;if(gamble0)if(nDollar-20

7、0)return -1;nGamble=20;else nGamble=gamble; nDollar-=nGamble;return 0;void CCard:FirstPlayTwo() naPip0=rand()%13+1; naPip1=rand()%13+1; nNumber=2;int CCard:GetCurrentCard() return naPipnNumber-1;int CCard:GetNumber() return nNumber;int CCard:GetPip() int nPip=0;for(int i=0;i=10)nPip+=10;elsenPip+=na

8、Pipi;return nPip;void CCard:DisplayPip() for(int i=0;inNumber;i+) coutnaPipit; coutendl;void CCard:TurnPlay() nNumber+;naPipnNumber-1=rand()%13+1;- 10 -void CCard:Win() cout 赢家牌面 :;DisplayPip();cout 牌面点数 : GetPip()endl;nDollar=nDollar+2*nGamble;nWin+;cout 赌 本 : $nDollar 赢 了 nWin 次 输了 nLose 次 平局 nDra

9、w 次 endl;coutendlendl;void CCard:Lose() nLose+;cout21)cout 暴了 !n;else赢了cout 牌面点数 :GetPip()endl; cout 赌 本 :$nDollar- 11 - nWin 次 输了 nLose 次 平局 nDraw 次 endl;coutendlendl; void CCard:Draw() nDraw+; nDollar+=nGamble; cout 21) cout 暴了 !n;elsecout 牌面点数 : GetPip()endl;cout 赌 本 :$nDollar 赢 了 nWin 次 输了 nLose

10、 次 平局 nDraw 次 endl;coutendlendl;void CCard:DisplayPip(int n) cout*t; for(int i=1;inNumber;i+) coutnaPipit;- 12 -coutendl;void DisplayRule(void) coutt 欢迎进入曹开明的 21 点游戏世 界!nn;coutt 游戏规则 :n;coutt1. 玩家最多可以要 5 张牌;n;coutt2. 如果牌点的总数超过 21 点则暴点 ,自 动判输 ;n;coutt3. 赢家可得双倍赌注 ;n;coutt4. 计算机方在牌点大于等于 16 时不再 要牌。 nn;c

11、out 祝您好运 !n;coutendlendl;void Judge(CCard &cpu,CCard &player) cout21&player.GetPip()21)|cpu. GetPip()=player.GetPip() coutnn 平局 !n;cout 计算机数据 :t;cpu.DisplayPip();- 13 - cout 牌面点数 :cpu.GetPip()endl; coutn 您的数据 :t;player.Draw();cout21)|(player.GetPip()cpu.GetPip()& player.GetPip()=21)coutnn 恭喜您 ,您赢了 !

12、n;cout 计算机数据 :t;cpu.DisplayPip();cout 牌面点数 :cpu.GetPip()endl; coutn 您的数据 :t;player.Win();coutendl;else coutnn 很遗憾 , 您输了 !n;cout 计算机数据 :t;cpu.DisplayPip();cout 牌面点数 :cpu.GetPip()endl; coutn 您的数据 :t;- 14 - player.Lose();coutendl;void PlayTurn(CCard &cpu,CCard &player) char chChoice;int blCpu=1,blPlaye

13、r=1; cpu.FirstPlayTwo(); player.FirstPlayTwo();do cout 您的牌点为 :t; player.DisplayPip(); cout 计算机的牌点为 :t; cpu.DisplayPip(1);cout 您 的 牌 面 点 是:player.GetPip()endl;if(blPlayer) coutchChoice;if(chChoice=Y|chChoice=y) if(player.GetNumber()5) player.TurnPlay();- 15 -cout 您 要 的 这 张 牌 是:player.GetCurrentCard()

14、21) blPlayer=0;elsecout 对不起 ,您已经要了 5 张牌,不能再要牌 了!;blPlayer=0; if(chChoice=N|chChoice=n) blPlayer=0;if(cpu.GetPip()16&cpu.GetNumber()5) cpu.TurnPlay();cout 计 算 机 要 牌 , 牌 点 是:cpu.GetCurrentCard()endl;elseblCpu=0;if(blCpu&player.GetNumber()5&player.Ge- 16 -tPip()21)blPlayer=1;while(blCpu|blPlayer);Judge(cpu,player);return;int main(void)srand(unsigned)time(NULL);CCard cpu,player;int blLogic;int nMoney;DisplayRule();char chChoice;coutchChoice;while(chChoice=Y|chChoice=y) docout 您 现 在 有 赌 本 $player.GetMoney();coutnMoney;- 17 -blLogic=player.SetGamble(nMoney); if(blLogic)cout 您的赌本不够 ,请重新下

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论