- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
毕业,课程,设计,数据结构,算法,斗地主毕业,课程,设计,数据结构,算法,斗地主
一、实验目的:
1.运用算法与数据结构的基本知识解决实际编程中的数据结构设计和算法设计问题。
2.培养独立设计程序与解决问题的能力,培养学生团队协作集成程序模块及调试的能力。
3.培养初步的软件设计及软件测试的能力。
二、设计要求:
1.程序要求完整,可运行。
2.能很好的实现游戏规则和游戏过程。
3.程序清晰,简洁,操作简便。
4.玩家能清楚的了解自己的手牌信息,及胜负判断。
三、程序功能:
1.牌的初始化:
用1~9表示牌中的A~9,用10表示牌中的x,用11~13表示牌中的J,Q,K,用w,W分别表示牌中的大小王,牌中除数字外还包括花色,花色分为四种:方片、梅花、红桃、黑桃,每个牌数均拥有以上四种不同的花色,除大小王。
2.玩家的初始化:
定义三个玩家,用随机数函数确定地主,地主有20张手牌,农民分别有17张手牌,地主多出的3张手牌为最后的三张的底牌。
手牌中的信息包括:手牌大小、花色、在各自手牌中的序号,其中序号的产生为:随机产生的手牌用冒泡排序的方法,产生出大小,按升序排列。
3. 初始化出牌的类型:
出牌的类型包括:弃权、单牌、对、王炸、骷髅、骷髅单、炸弹、骷髅对、炸带单、顺子、炸带一对、飞机不带、连对、飞机单、飞机带对。
4.判断是否出牌:
是否出牌由玩家自己决定,首先确定出牌或弃权。若出牌时,玩家输入手牌的序号,中间用空格隔开,全部输入后按空格键,弹出是否确认出牌。若弃权时,出牌权交由下一人进行。
5.判断牌是否符合规则:
当游戏开始第一人或弃权连续两次时,出牌类型由玩家自己确定,上家出牌的类型,就是下家出牌的类型,如果下家出牌类型不符合,则输出“牌类型错误”,如果下家牌打不住上家,则输出“出牌错误”。
6.界面初始化:
每次出牌是界面最上面都有“斗地主”三个字,并用“===”将其醒目标识,下面是上次出的牌,供下一个玩家选择自己要出的牌,再下面的是表示玩家,分别是玩家一,玩家二,玩家三,某玩家出牌时,其后会有“===”进行表示,再下为该玩家的手牌,包括花色、牌数和牌的序号。
7.消减手牌:
出牌后,选择确定出牌后,程序中将刚才出牌的序号对应的手牌删去,并对剩下的手牌进行重新重新编序。
8.判断胜负:
当玩家的手牌数量为零时,该玩家胜。
四、程序流程图
五、程序结构,有哪些函数、变量分别是什么意思。
player_init():初始化玩家信息,其中有三个玩家,变量which存放该玩家是地主还是农民,变量player[i]存放该玩家的第i张手牌,变量player[j]存放第j个玩家。
handcard_init():初始化手牌信息,变量number用于定义牌,,即1~54张牌,指针*p_level用来定义牌的大小,即“A”表示1,小王为14,大王为15,指针*p_point用来显示牌的大小,1~9表示A~9,x表示10,J,Q,K分别表示11,12,13,w,W分别表示大小王,指针*pp_flower表示牌的花色。
require():询问是否出牌,变量choice用来存放玩家输入的信息。
buffer_put():放牌进入缓冲区,变量flag用于标记玩家选中牌的下标,变量brr[i]用于记录玩家的第i张手牌,变量aff用于存放确认出牌是玩家的输入信息。
level_buffer():获取缓冲区牌类等级,变量maxindex用于存放最大下标,type为牌的类型。
六、从main函数开始,各个函数之间的调用关系。
main函数中包括game_init(),即:初始化游戏函数,turning()即:回合进行是的操作函数,turn_switch(),即:切换出牌方函数。
game_init()函数中调用player_init(),即:玩家信息初始化,handcard_init(),即:手牌信息初始化。
handcard_init()函数中调用deck_init(),即:为牌开辟足够的内存空间。
turning()函数中调用turnstart(),即:游戏开始界面函数,print(),即:打印玩家手牌函数,require(),即:询问是否出牌,buffer_put(),即:放牌进入缓冲区,reset(),即:清空出牌缓冲区,type_buffer(),即:获取缓冲区牌的类型,level_buffer(),即:获取缓冲区牌的等级函数,maxindex(),即:记录下标最大值,annealation(),即:消减手牌,win(),即:判断玩家是否胜利。
turn_swutch()函数无调用其他函数。
七、说明你的什么功能运用了数据结构的什么知识。
1.在玩家整理手牌时要将手牌进行排序,运用到了冒泡排序。
2.初始化牌时,用到了为牌开辟足够的内存空间。
3.在手牌的输入
文档评论(0)