- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
约瑟夫生死游课戏程设计
第一章 问题背景
约瑟夫生死游戏是一款生死抉择的游戏,由于某种原因,需要在一群人中踢出一部分人,被踢出的人将会面临死亡的威胁,因此大家都不想成为那个被踢除的那个人,但是又必须踢出一些人才能保证其他人的安全,你的位置会影响你的生死,所以位置的选择很重要。
第二章 系统分析
2.1系统总需求
如果有r个人,需要剔除w个人,让他们围成一个圈,由第一个人数起,依次报数,数到第s个人,便把他剔除,然后再从他的下一个人数起,数到第s个人,再将他剔除,直至剔除了w个人时停止,没剔除的则生还。
2.2 功能需求
约瑟夫生死游戏能够精确的找到死亡者的位置,并且能够灵活的确定剔除第几个人,以及要剔除多少人,并且能够对很多人的情况下迅速确定生者和死者的位置。
整个游戏主要分为几个模块:队列初始化,入队,查找死亡位置,排序,生者位置的确定,输出死者位置。
队列初始化:对队列中每个人进行初始化。
入队:对每个人进行赋值,并且进行入队操作。
查找死亡位置:通过一控制块控制入队,出队,从而找到死亡位置,并且把死亡位置保存到数组。
排序:把死亡位置按从小到大进行排序,以便观看结果。
生者位置的确定:通过已经确定的死亡位置来确定生者位置,并对生者位置进行输出。
输出死者位置:对已排序的死亡位置进行输出。
2.3 数据需求
第i个人员信息=i-1;
总人数;
踢除第几个人;
剔除人数;
第三章 系统设计
3.1 系统体系结构
约瑟夫生死游戏通过通过一控制块控制入队,出队,找到死亡位置,从而确定生者位置。主要包括确定死亡位置和确定生者位置。约瑟夫的软件结构如图3.1所示。
各子功能模块设计
3.2.1确定死亡位置
(1)功能:通过通过一控制块控制入队,出队,找到死亡位置,并保存死亡位置。
(2)程序流程图:约瑟夫生死游戏的程序流程图如图3.2所示。
数据结构设计
3.3.1员工信息
数据结构设计人员信息
包括每个人员位置对应的值,以及队头,队尾的位置。
typedef struct
{
DATATYPE data[maxsize];//队中元素
int front,rear; //队头元素下标、队尾元素后面位置的下标
} SEQQUEUE;
第四章 系统实现
4.1人机交互部件
本系统的一个重要特点就是系统启动之后,同时显示主窗口,主窗口为可用,必须在主窗口中进行赋值才可运行。
输入与显示为:
主要代码为:
//队列的插入
for(i=0;i=r-1;i++)
{
temp=i;
QueueIn(game,temp);
}
//找出死亡位置,并保存到数组p[m]
for(m=0;m=w-1;)
{ n=0;
for(n=0;ns-1;n++)
{QueueFront(game,temp);
QueueOut(game);
QueueIn (game,temp);
}
if(n==s-1)
{
QueueFront(game,temp);
QueueOut(game);
p[m]=temp;
m++;
}
if(m=w) break;
}
//将死亡位置从小到大输出
for(m=0;mw-1;m++)
for(j=m+1;jw;j++)
{
if(p[m]p[j])
{t=p[m];
p[m]=p[j];
p[j]=t;
}
}
//找到生者位置并输出
for(y=1;y=r;y++)
{
for(j=h;j=w-1;)
{ z=p[j];
if(y!=z+1)
{
printf(生者的位置:);
printf(%d\n,y);
break;
}
if(y==z+1)
{
h++;
if(h=w-1) h=w-1;
break;
}
}
}
//输出死亡者的位置
for(m=0;mw;m++)
{
printf(死亡者的位置:);
printf(%d\n,p[m]+1);
}
}
4.2系统特点
您可能关注的文档
最近下载
- 《成人围手术期血糖监测专家共识》解读【26页】.pptx VIP
- 八上物理:【教科】期末模拟卷【八上全册】.docx VIP
- 水文学与水文地质学答案.doc VIP
- 中国建设银行建银工程咨询有限责任公司2026年度校园招聘9人笔试备考试题及答案解析.docx VIP
- 学生英语单词听写稿纸模板(仅打印).docx VIP
- 2025年电力调度题库及答案.doc
- (正式版)DB61∕T 1770-2023 《公路隧道二次衬砌施工质量控制指南》.docx VIP
- 《宁波市海绵城市建设技术标准图集》2018甬DX-09.pdf
- 中国建设银行建银工程咨询有限责任公司2026年度校园招聘9人笔试参考题库附答案解析.docx VIP
- 《建设工程工程量清单计价规范》GB505002013.pdf
原创力文档


文档评论(0)