c语言 发纸牌 实验报告,“21点”纸牌游戏实验报告

《“21点”纸牌游戏实验报告》由会员分享,可在线阅读,更多相关《“21点”纸牌游戏实验报告(9页珍藏版)》请在人人文库网上搜索。

1、课 程 设 计 报 告课程名称:面向对象程序设计与开发课程设计设计题目:“21点”纸牌游戏年 级:09系 别:计算机学院专 业:计算机科学与技术小组成员名单:陈坚鹏 李浩艺 陈子龙任课教师:莫家庆老师完成时间:2012年 3 月 30 日肇庆学院计算机学院课程设计结果评定评阅意见:(1)内容设计 (20分):优()、良()、中()、一般()、差(); (2)流程分析(20分):优()、良()、中()、一般()、差(); (3)数据定义(30分):优()、良()、中()、一般()、差();(4)代码编写(20分):优()、良()、中()、一般()、差();(5)创新能力(10分):优()、良()。

2、、中()、一般()、差();(6)格式规范性、设计态度及考勤是否降等级:是()、否()其它意见:评阅人: 2012 年 月 日成绩等级:目 录“21点”纸牌游戏11 概述12 实验内容13 概要设计24 测试结果和分析55 课程设计体会5“21点”纸牌游戏1 概述本课程设计通过编写相关代码实现“21点”游戏。使用语言:C+语言编译环境:VC+ 6.02 实验内容1、问题描述“21点”是一个古老的扑克牌游戏,游戏规则是:各个参与者设法使自己的派达到总分21而不超过这个数值。扑克牌的分值取它们的面值,A充当1分或11分(由玩家自己选择一种分值),J、Q和K人头牌都是10分。庄家对付17个玩家。在一。

3、局开始时,包括庄家在内的所有参与者都有两张牌。玩家可以看到他们的所有牌以及总分,而庄家有一张牌暂时是隐藏的。接下来,只要愿意,各个玩家都有机会再拿一张牌。如果某个玩家的总分超过了21(称为“引爆”),那么这个玩家就输了。在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。只要庄家的总分等于或小于16,那么他就必须再拿牌。如果庄家引爆,那么还没有引爆的所有我那家都将获胜,引爆的玩家打成平局。否则,将余下的各玩家的总分与庄家的总分做比较,如果玩家的总分大于庄家的总分,则玩家获胜。如果二者的总分相同,则玩家和庄家打成平局。基本要求:编写程序实现游戏,计算机作为庄家,17个人作为普通玩家参与游戏。游戏程运。

4、行输出如下所示。多少人加入游戏?(17):2输入第1位玩家的姓名:张三输入第2位玩家的姓名:李四游戏开始:庄家:梅花7张三:红桃7方块J总分值17李四:红桃J红桃3总分值13张三,你想再要一张牌吗(y,n)?n李四,你想再要一张牌吗(y,n)?y李四:红桃J红桃3梅花10总分值23李四引爆!庄家:方块10,梅花7总分值17张三,唉,你打平局了!李四,对不起,你输了!你想再玩一次吗(y,n)?2、需求分析(1)测试边界内的值。(2)测试边界值。(3)测试边界外的值。(4)输出结果。3 概要设计1、存储结构typedef enum/扑克牌面值:ACE(A),TWO(2)TEN(10),JACK(J。

5、),QUEEN(Q),KING(K)ACE=1,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KINGRankType;typedef enum/扑克牌花色:CLUBS(梅花),DIAMONDS(方块),HEARTS(红桃),SPADES(黑桃)CLUBS,DIAMONDS,HEARTS,SPADESSuitType;struct Card /扑克牌结构体RankType rank; /扑克牌面值SuitType suit; /扑克牌花色/21点游戏类gameof21point声明class GameOf21Pointpriva。

6、te:Card deck52; /一副扑克牌int dealPos; /发牌位置Card hands821; /hand0存储于庄家手中的扑克牌, hand17存储于各位玩家手中的扑克牌int numOfCard8; /庄家numOFCard0及玩家numOFCard17手中的扑克牌数char name8LEN_OF_MAX_NAME; /庄家与玩家姓名int numOfPlayer; /玩家人数void Shuffle(); /洗牌,将扑克牌混在一起以便产生一种随机的排列int GetTotalScore(Card hand21,int n); /返回一手扑克牌的总分值void ShowSt。

7、atus(int num,bool hideFirstCardAndTotalScore=false); /显示庄家(对应num=0)或玩家(对应num0)当前的状态Card DealOneCard()return deckdealPos+; /发一张扑克牌public:GameOf21Point();virtualGameOf21Point()void Game(); /运行游戏;2、函数ostream& operator0)当前的状态Card DealOneCard()return deckdealPos+; /该函数用来发一张扑克牌int GameOf21Point:GetTotalSc。

8、ore(Card hand21,int n )/返回一手扑克牌的总分值Void Game();/该函数实现游戏的运行,开始。3、流程图输入加入游戏的人数输入游戏者姓名游戏开始随机发牌开始玩家是否添牌添加一张牌,下个玩家显示庄家的牌点数21庄家引爆玩家是否引爆是打平局玩家赢是玩家是否引爆是玩家输否玩家点数是否大于庄家是否否玩家点数是否等于庄家是否显示结果再玩一次是否4 测试结果和分析5 课程设计体会本次课程设计,使我对C+面向对象程序设计有了进一步的认识和掌握,在设计的过程中,我们更好的懂得了团队合作的重要性,程序设计过程中,出现过几次小错误,都是在头文件处出现的,通过大家的努力还有查阅了相关资料,最后终于把问题解决了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.纸牌游戏 任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些? 题目比较简单。但用了MFC的一些知识,实现了图形化,比较形象。 2.哈弗曼压缩 实现哈弗曼压缩及解压缩功能,并计算压缩前后文件占用空间比 模型建立与题目分析 压缩: 以二机制可读形式打开源文件,以二进制可写形式打开压缩目标文件。每次从源文件读取八个比特(一字节),作为一个ASCII码,并统计所有出现的字节的频率,将字节作为哈夫曼数的叶子结点插入到一个链表中。然后根据链表建立哈夫曼树,按照哈夫曼算法对所有出现的字节编码。然后重新从头开始读源文件,每次读入一字节,从哈夫曼树相应叶子结点移到树的根结点,在找的过程中,把其哈夫曼编码存入一个栈,把栈中所有元素(0或1)写到缓冲区,如果缓冲区比特数到8了,则将缓冲区的8个比特(一个字节)写入压缩文件。如果最后缓冲区不到8比特,则在低位补零,补齐8位后写入压缩文件。 解压: 以二进制可读形式打开解压文件,以二进制可写形式打开解压目标文件。每次从解压文件读一个字节,放入缓冲区,然后从缓冲区每次读一个比特。在建立的哈夫曼树中,从根结点开始,取出的比特为0则取左孩子,为1取右孩子,直至到叶子结点,把叶子结点的字节(ASCII码)写入解压目标文件。读到缓冲区为空时,再读入一个字节,重复上述操作,直到读完压缩文件。 模型实质: 以二进制读取文件。从源文件每次读一个字节(8比特),并统计所有出现字节的频率,根据频率对所有字节以频率作为权值建立哈夫曼树,对每个字节重新编码。根据新的编码进行编码译码。 算法设计与分析 如果已知出现字符的出现频率,将较短的比特串分给高频字符,将较长的比特串分给低频字符,则会到压缩文件的目的。哈夫曼编码就是利用这一点,以字符作为叶子结点,以其频率作为权值,建立最优二叉树。 一 下面先重点讨论一下建立哈夫曼数的算法。哈夫曼算法: 根据给定叶子结点及其权值(这里即字符及其频率)构成二叉树的集合,每个叶子结点作为一棵树的根结点。 在二叉树集合中选取根结点权值最小的树作为左右子树构造新的二叉树,且新二叉树的权值为左右子树权值之和。 从二叉树集合中删除这两棵树,将新构造的树加入集合 4 . 重复2,3,直至二叉树集合中只有一棵树。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值