- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
毕业,课程,设计,数据结构,算法,火车毕业,课程,设计,数据结构,算法,火车
一 我的程序所包括的功能
我的程序能够实现发牌,出牌,对游戏规则的判断,玩家手牌显示,桌面手牌显示,牌堆个数显示以及胜负的判断
二 功能的实现
一 总体设计
要想设计一个游戏程序,首先要了解该游戏的游戏规则。
推火车的游戏规则如下:
一副扑克牌共54张牌,去掉大小王共52张,将52张牌随机分成等量两份各26张,分别分配给玩家一和玩家二。
玩家一先从26张手牌的背面拿出第一张牌放在桌面,玩家二同样从手牌的背面拿出第一张牌放在桌面,两人如此进行出牌,
当某一玩家打出的牌与桌面牌堆中的一张牌的数值相等,则该玩家将桌面牌堆最后一张到该相同数值的牌和两牌之间的牌拿走,成为该玩家的预备牌堆。
当玩家的手牌打完时,玩家去自己的预备手牌成为自己的手牌,在依序进行出牌,知道某一玩家的手牌和预备手牌都没有的时候,该玩家输掉游戏,游戏结束。
总体的设计如下:
二 详细设计
1建立相应的结构体和栈
手牌结构体
struct POKER{
int number;
char flawer;
}poker[52];
玩家手牌结构体
struct PLARER{
struct POKER hand[52]; //玩家手牌
int hand_number;//手牌数
}player1,player2;
玩家预备牌结构体
struct get
{
struct POKER hand[55]; //转取手牌
int sum; //统计得到的手牌数
}player1_get,player2_get;
桌面栈的建立
struct stack
{
int top;//统计栈中的元素
struct POKER tables[52];//用于存放数据
};
struct stack mystack={-1,{0}};
int isempty();
int setempty();
int push(struct POKER date);
struct POKER pop();
int isempty()
{
if (mystack.top==-1)
{
return 1;
}
else
{
return 0;
}
}
void setrmpty()
{
mystack.top=-1;
}
int push(struct POKER data)
{
if(mystack.top+1= N - 1)
{
mystack.tables[mystack.top+1]=data;
mystack.top+=1;
return 1;
}
else
{
return 0;
}
}
struct POKER pop()
{
mystack.top-=1;
return mystack.tables[mystack.top+1];
}
2 所需函数
1.扑克牌初始化函数
这里我用运用了一种计算方法,就是将1——52分别除以13,取余数在加一,poker[i].number=(i)%13+1
通过这样的方法可以得到4组一到十三,再将其分别赋值给4种花色,这样就实现了扑克牌的初始化。
2.发牌函数
发牌函数需要用到rand()函数来随机产生52张牌,为了防止随机抽取的数值有重复的,我们先建立一个数组random[52],让随机数在其范围内产生,再将与其数值对应的前26张扑克牌分给玩家一,后26张扑克牌分给玩家二,实现发牌函数。
3.玩家打牌函数
玩家打牌实际上就是实现压栈的过程,所以需要实现压栈的功能,当玩家打一张牌,就将玩家的手牌前移,第一张牌就会永远存在,方便后面程序的执行。
4. 判断输赢函数
先判断玩家的手牌是否还有剩余,如果没有的话就判断玩家的预备的牌是否还有剩余,如果没有的话,该玩家失败,游戏结束。如果玩家手牌没有,但预备牌有的话就将预备牌赋值给玩家手牌。
5.游戏规则函数
根据游戏规则设计判断函数
先循环遍历下桌面栈堆,如果发现栈顶的牌有和栈中相同数值的牌,就从栈顶到该牌位置执行出栈。出栈的牌赋值给玩家预备牌。
6.显示函数
显示函数用printf实现,用于
玩家手牌显示,桌面手牌显示,玩家预备牌个数显示,胜负显示。
三 所运用的数据结构的知识
我们的函数主体就是运用了栈的知识
桌面的建立就是栈的建立
玩家打牌就是压栈,游戏规则的判断就是出栈的过程
四 测试
指 导 教 师 评 语
成绩评定:
指导教师签字:
年 月 日
您可能关注的文档
最近下载
- 2025-2026学年浙江省温州市鹿城区南浦实验中学七年级(下)期中数学试卷.pdf VIP
- 一台列管式换热器的设计(含装配图)-化工原理课程设计.doc
- 桥梁知识专题讲座课程PPT课件.ppt
- 临床技术操作规范:皮肤病与性病分册 中华医学会.pdf
- 医患沟通技巧ppt课件.pptx
- 2024版糖尿病科普课件(完整版).ppt VIP
- 2022科学课程标准解读及学习心得:科学课程的育人方向.docx VIP
- 黄帝内经-认识五脏六腑课件.ppt
- 温州二中2025(突破训练)020年七年级下学期英语期中试题(有答案,无听力).pdf VIP
- 高三生物二轮复习微专题:PCR技术中的引物课件.pptx
文档评论(0)