21点扑克游戏 软件报告-面向对象程序设计课程设计 优选内容_第1页
21点扑克游戏 软件报告-面向对象程序设计课程设计 优选内容_第2页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

福建农林大学计算机与信息学院计算机类课程设计报告课程名称:面向对象程序设计课程设计课程设计题目:21点扑克牌游戏姓 名:谢飞乐系:计算机科学与信息专 业:计算机科学与技术年 级:2007级学 号:071152032指导教师:李丽珊职 称:讲师2009年 1月 10日福建农林大学计算机与信息学院计算机类课程设计结果评定评语:评分项目分值得分 课程设计报告符合规范10 类层次结构图和用例图合理30 主要技术路线正确30 设计报告条理清晰,重点突出20 有一定的创新性,难易程度10成绩:指导教师签字:任务下达日期:2008年12月 日评定日期:仅供借鉴#目 录1课程设计目的42课程设计要求43运行环境44设计内容44.1程序说明4 4.2设计内容及功能44.3题目分析及算法描述54.4系统程序流程图及层次模块图64.5系统测试65总结96参考文献97源代码9仅供借鉴#21点扑克牌游戏1.课程设计目的面向对象程序设计课程设计是计算机科学与技术专业和软件工程专业集中实践性环节之一,是学习完面向对象程序设计课程后进行的一次全面的综合练习。其目的在于加深对面向对象程序设计中基础理论和基本知识的理解,培养学生的实践能力,促进理论与实践的结合。通过课程设计,让学生能够熟练运用C+进行面向对象编程,建立对象模型,降低软件的复杂性,改善软件的重用性和维护性,提高软件的生产效率,全面掌握面向对象编程技术。2.课程设计要求1、掌握使用一种面向对象程序设计语言如Borland C+或Visual C+等。 2、培养调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。 3、通过课程设计,要求学生在指导教师的指导下,独立完成实习课题的全部内容,包括: 通过调查研究和上机实习,收集和调查有关技术资料。 掌握设计课题的基本步骤和方法。 根据课题的要求进行上机实验调试。4、课程设计完成后,提交课程设计报告3运行环境联想计算机,WindowsXP操作系统,Microsoft Visual C+ 6.04.设计内容4.1程序说明该程序是模拟21点扑克牌游戏,玩家最多可以要5张牌,但如果牌的点数之和超过21点,则自动出局;在不超过21点的情况下,玩家与庄家比牌的点数的大小,大者为赢家。4.2设计内容及功能(1)将大于10点的点数改为半点(修改点数的类型)。(2)高级玩家(经理级)可以查看下一张牌,即按键,然后按要求输入密码,密码正确可以看牌,并决定是否要牌。(3)超级玩家(总经理级)可以查看庄家(计算机)的所有牌面,并任意输入自己想要的牌,有赢无输,为保密起见,输入自己想要的牌后应立刻屏。(4)每次要完牌后可以重新设定赔率,只能回流。也就是说如果牌好,可以加大赌注。4.3 题目分析及算法描述类class CCard该程序只需要一个CCard类,其中有表格如下:class CCardprivate:int m_Pip5;/一共五张牌int m_Number;/发了多少张牌int m_Dollar;/赌本int m_Gamble;/赌注int m_Win;/赢局数int m_Lose;/输局数int m_Draw;/平局数public:CCard();/构造函数。void FirstPlayTwo();/最初的两张牌int GetNumber();/返回牌张int GetPip();/返回点数void DisplayPip();/依次全部显示牌面的点数void DisplayPip(int);/除了第一张牌,依次显示全部牌面点数(针对计算机牌的显示)void TurnPlay();/出一张牌。void Win();/赢了计算赌注void Lose();/输了void Draw();/平局int SetGamble(int);/设置赌本,赌本不够返回-1int GetMoney();/返回钱数void DisplayInfo();/打印必要的信息int GetCurrentCard();/返回当前的牌点4.4 系统程序流程图及层次模块图(1)程序的N-S流程图如下图所示:初始化随机种子显示游戏规则While(chChoice)判断chChoice,(必须是Y/N)Y/y N/yDoWhile(blLogic)您的选择是明智的,赌博有碍家庭和睦!欢迎再次使用此程序!(2)do的模块N-S流程图输出“您现在有的赌本:$100”输出下注的赌本执行Player.SetGamble(nMoney)判断If(blLogic)Y/y N/y您的赌本不够,请重新下注!PlayTurn(cpu,player)4.5系统测试(1)运行Microsoft Visual C+ 6.0,新建一个工程文件,立即保存在自己建的一个文件夹中,再建一个为21point.cpp。(2)单击“save”按钮,出现21point.cpp的文件编辑窗口,输入附录的程序代码;再单击“save all”按钮保存文件。(3)执行Microsoft Visual C+快捷菜单中的编译、连接。(4)21point.cpp文件编译成功,如下图所示:输入y,回车开始游戏。如下图所示:输入赌本10回车。如下图所示:输入y,回车。如下图所示:输入y,回车后继续游戏。如下图所示:当你输入错误的信息的时候如:1000。出现如下图:5.总结本次课程设计,使我对C+面向对象程序设计有了进一步的认识和掌握。我设计的这个简单的师生管理系统主要用到了继承和派生、虚继承、switch语句在设计过程中,我遵循一个指导思想:先把总的框架设计出来,再在对其中加上再的内容。千万不要企图在一开始时就解决所有的细节。边编程,边调试,边扩充。6参考文献1谭浩强.C+面向对象程序设计.北京:清华大学出版社,2006.2谭浩强.C程序设计(第三版).北京:清华大学出版社,2005.7.源代码:#include#include#includeusing namespace std;class CCardprivate:int m_Pip5;/一共五张牌int m_Number;/发了多少张牌int m_Dollar;/赌本int m_Gamble;/赌注int m_Win;/赢局数int m_Lose;/输局数int m_Draw;/平局数public:CCard();/构造函数。void FirstPlayTwo();/最初的两张牌int GetNumber();/返回牌张int GetPip();/返回点数void DisplayPip();/依次全部显示牌面的点数void DisplayPip(int);/除了第一张牌,依次显示全部牌面点数(针对计算机牌的显示)void TurnPlay();/出一张牌。void Win();/赢了计算赌注void Lose();/输了void Draw();/平局int SetGamble(int);/设置赌本,赌本不够返回-1int GetMoney();/返回钱数void DisplayInfo();/打印必要的信息int GetCurrentCard();/返回当前的牌点;CCard:GetNumber()return m_Number;CCard:CCard()/构造函数,初始化m_Number = 0;m_Dollar = 100;/初始赌注为100美元for(int i=0;i5;i+)m_Pipi = 0;m_Gamble = 0;m_Win = m_Lose = m_Draw = 0;int CCard:GetMoney()return m_Dollar;void CCard:DisplayInfo()/打印必要的信息coutnnnttt您一共玩了m_Win+m_Lose+m_Draw局 赢了m_Win局 输了m_Lose局 平局m_Draw次。endl;coutntttt您的赌本共计有$m_Draw。nendl;int CCard:SetGamble(int gamble)if(gamble0)coutn输入金额有误endl;return -1;if(m_Dollar-gamble0)coutn金额不足endl;return -1; elsem_Gamble = gamble;m_Dollar -= gamble;return 0;void CCard:FirstPlayTwo()/最初两张牌m_Pip0 = rand()%13+1;m_Pip1 = rand()%13+1;m_Number = 2;int CCard:GetPip()int SumPip = 0;for(int i=0;im_Number;i+)SumPip += m_Pipi;return SumPip;void CCard:DisplayPip()int i;for(i=0;im_Number;i+)coutm_Pipit;coutendl;void CCard:TurnPlay()m_Number+;m_Pipm_Number-1 = rand()%13+1;void CCard:Win()cout赢家牌面:;DisplayPip();coutn牌面点数:GetPip()endl;m_Dollar = m_Dollar + 2 * m_Gamble;m_Win+;coutn赌本:$m_Dollar 赢了m_Win次 输了m_Lose次 平局m_Draw次endl;coutendl;coutendl;void CCard:Lose()m_Lose+;cout21)couttttttttt暴了!endl;elsecout牌面点数:GetPip()endl;coutn赌本:$m_Dollar 赢了m_Win次 输了m_Lose次 平局m_Draw次endl;coutendlendl;void CCard:Draw()m_Draw+;m_Dollar += m_Gamble;cout21)coutn暴了!endl;elsecout牌面点数:GetPip()endl;cout赌本:$m_Dollar 赢了m_Win次 输了m_Lose次 平局m_Draw次endl;coutendlendl;void DisplayRule(void) coutendlendl;coutt欢迎进入21点游戏世界!nn;couttt 游戏规则:n; coutendl;couttt 1.玩家最多可以要5张牌;n;coutendl;couttt 2.如果牌点数的总数超过21点则暴点,自动判数;n;coutendl;couttt 3.赢家可得双倍的赌注;n;coutendl;couttt 4.计算机方在大于等于16点时不再要牌。n;coutendl;coutt 祝您好运! n;coutendlendl;void Judge(CCard &cpu,CCard &player)cout21&player.GetPip()21)|cpu.GetPip()=player.GetPip()coutnntttttttt平局!n;cout计算机数据:t;cpu.DisplayPip();cout牌面点数:cpu.GetPip()endl;coutn您的数据:t;player.Draw();cout21)|(player.GetPip()cpu.GetPip()&player.GetPip()=21)coutnnntttttttt恭喜您赢了!nn;cout计算机数据:t;cpu.DisplayPip();cout牌面点数:cpu.GetPip()endl;coutn您的数据:t;player.Win();coutendl;elsecoutnntttttttt很遗憾您输了!n;cout计算机数据:t;cpu.DisplayPip();cout牌面点数:cpu.GetPip()endl;coutn您的数据:t;player.Lose();coutendl;void CCard:DisplayPip(int n)int i;cout*t;for(i=1;im_Number;i+)coutm_Pipit;coutendl;void PlayTurn(CCard &cpu,CCard & player)/玩一局char chChoice;int blCpu = 1;/判断是否要牌int blPlayer = 1;cpu.FirstPlayTwo();/计算机和玩家各要两张牌player.FirstPlayTwo();docoutn您的牌点为:t;player.DisplayPip();coutn;cout您的牌面点数是:player.GetPip()endl;coutn计算机的牌点为:t;cpu.DisplayPip(1);if(blPlayer)coutchChoice;if(chChoice = Y|chChoice = y)if(player.GetNumber()5)player.TurnPlay();coutn您要的这张牌是:player.GetPip()21)blPlayer = 0;elsecout对不起,您已经要了5张牌,不能再要牌了!;blPlayer = 0;if(chChoice=n|chChoice=N)blPlayer = 0;if(cpu.Get

温馨提示

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

评论

0/150

提交评论