约瑟夫生死游戏是一款生死抉择的游戏,由于某种原因,需要在一群人中踢出一部分人,被踢出的人将会面临死亡的威胁,因此大家都不想成为那个被踢除的那个人,但是又必须踢出一些人才能保证其他人的安全,你的位置会影响你的生死,所以位置的选择很重要。
1 第二章 系统分析
2.1系统总需求
如果有r个人,需要剔除w个人,让他们围成一个圈,由第一个人数起,依次报数,数到第s个人,便把他剔除,然后再从他的下一个人数起,数到第s个人,再将他剔除,直至剔除了w个人时停止,没剔除的则生还。
2.2 功能需求
约瑟夫生死游戏能够精确的找到死亡者的位置,并且能够灵活的确定剔除第几个人,以及要剔除多少人,并且能够对很多人的情况下迅速确定生者和死者的位置。
整个游戏主要分为几个模块:队列初始化,入队,查找死亡位置,排序,生者位置的确定,输出死者位置。
队列初始化:对队列中每个人进行初始化。 入队:对每个人进行赋值,并且进行入队操作。
查找死亡位置:通过一控制块控制入队,出队,从而找到死亡位置,并且把死亡位置保存到数组。
排序:把死亡位置按从小到大进行排序,以便观看结果。 生者位置的确定:通过已经确定的死亡位置来确定生者位置,并对生者位置进行输出。
输出死者位置:对已排序的死亡位置进行输出。
2.3 数据需求
第i个人员信息=i-1;
总人数;
踢除第几个人; 剔除人数;
2 第三章 系统设计
3.1 系统体系结构
约瑟夫生死游戏通过通过一控制块控制入队,出队,找到死亡位置,从
而确定生者位置。主要包括确定死亡位置和确定生者位置。约瑟夫的软件结构如图3.1所示。
约瑟夫生死游戏 确定死亡位置 确定生者位置
图3.1系统结构 3.2 各子功能模块设计
3.2.1确定死亡位置
(1)功能:通过通过一控制块控制入队,出队,找到死亡位置,并保存死亡位置。
(2)程序流程图:约瑟夫生死游戏的程序流程图如图3.2所示。
3
进行判断 否 开始 剔除人数是否小于总死亡数 是 入队,出队控制块 符合 进行入队,出队操作 剔除,并保存剔除的位置 剔除人数加一 结束 图3.2 确定死亡位置 3.3 数据结构设计
3.3.1员工信息
数据结构设计人员信息
包括每个人员位置对应的值,以及队头,队尾的位置。 typedef struct {
DATATYPE data[maxsize];//队中元素
int front,rear; //队头元素下标、队尾元素后面位置的下标 } SEQQUEUE;
4 第四章 系统实现
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;n QueueIn (&game,temp); } if(n==s-1) { 5 QueueFront(game,&temp); QueueOut(&game); p[m]=temp; m++; } if(m>=w) break; } //将死亡位置从小到大输出 for(m=0;m 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\ break; } if(y==z+1) { h++; if(h>=w-1) h=w-1; break; } } 6 } //输出死亡者的位置 for(m=0;m 4.2系统特点 本游戏的一个特点是:能在主界面上灵活输入游戏人数、剔除第几个人、剔 除人数,能基本适应数据的任意输入,具有广泛性,以及实用性。 4.3关键技术 本程序的关键技术是通过通过一控制块控制入队,出队,找到死亡位置,并保存死亡位置,这样,生者的位置就能通过死者的位置确定。 7 第五章 系统测试 5.1输入与显示: 如下表5.1.1 序 输入/动作 号 输入人数:10 期望输出/相应 实际情况 符合 数到第几个人1 则剔除:3 死亡的人数:4 符合 输入人数:15 2 数到第几个人则剔除:6 死亡的人数:5 表5.1.1输入与显示 8 结 论 本游戏是一款生死抉择的游戏,由于某种原因,需要在一群人中踢出一部分人,被踢出的人将会面临死亡的威胁,因此大家都不想成为那个被踢除的那个人,但是又必须踢出一些人才能保证其他人的安全,你的位置会影响你的生死,所以位置的选择很重要,本游戏就起到了一个找到死亡位置的做用,其采用了数据结构中队列的方法,通过一控制块控制入队,出队,找到死亡位置,并保存死亡位置,这样,生者的位置就能通过死者的位置确定。 系统在设计过程中不可避免地遇到了各种各样的问题,由于整个系统完全都是由个人设计的,,加之本人水平有限,代码过多,结构性不强,需要进行不断地补充和完善。 9 参考文献 [1]张乃孝.算法与数据结构.高等教育出版社.2010年11月,第二版 [2]杨路明.C语言程序设计教程.北京邮电大学出版社.2010年12月,第二版 [2]马石安.面向对象程序设计教程.清华大学出版社.2007年8月,C++语言描述 10 结束语 这次课程设计让我熟练掌握了队列,以及数组的动态内存申请,并且让我对与编写大程序的能力有较大的提升,同时也提高了我编写大程序时的全局思想能力,这次编程,我发现编写一些大程序对于提高编程能力有很大的帮助,能够把平时所学联系起来,对所学知识的真正理解有很大的帮助,这是我最大的收获。 同时,这次编程让我发现自己还有不足之处,编写的程序比较乱,结构不紧凑,可读性不强,这是我目前需要改进的。 11 目 录 第一章 问题背景 ......................................................................................................................... 1 第二章 系统分析 ........................................................................................................................... 2 2.1系统总需求 ........................................................................................................................ 2 2.2 功能需求 ........................................................................................................................... 2 2.3 数据需求 ........................................................................................................................... 2 第三章 系统设计 ............................................................................................................................. 3 3.1 系统体系结构 ................................................................................................................... 3 3.2 各子功能模块设计 ....................................................................................................... 3 3.2.1确定死亡位置 ........................................................................................................ 3 3.3 数据结构设计 ............................................................................................................... 4 3.3.1员工信息 ................................................................................................................ 4 第四章 系统实现 ............................................................................................................................. 5 4.1人机交互部件 .................................................................................................................... 5 4.2系统特点 ............................................................................................................................ 7 4.3关键技术 ............................................................................................................................ 7 第五章 系统测试 ........................................................................................................................... 8 5.1输入与显示: .................................................................................................................... 8 结 论 ................................................................................................................................................ 9 参考文献......................................................................................................................................... 10 结束语 ............................................................................................................................................ 11 12 因篇幅问题不能全部显示,请点此查看更多更全内容