欢迎来到天天文库
浏览记录
ID:11381623
大小:151.50 KB
页数:12页
时间:2018-07-11
《约瑟夫生死游戏课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第一章问题背景约瑟夫生死游戏是一款生死抉择的游戏,由于某种原因,需要在一群人中踢出一部分人,被踢出的人将会面临死亡的威胁,因此大家都不想成为那个被踢除的那个人,但是又必须踢出一些人才能保证其他人的安全,你的位置会影响你的生死,所以位置的选择很重要。12第二章系统分析2.1系统总需求如果有r个人,需要剔除w个人,让他们围成一个圈,由第一个人数起,依次报数,数到第s个人,便把他剔除,然后再从他的下一个人数起,数到第s个人,再将他剔除,直至剔除了w个人时停止,没剔除的则生还。2.2功能需求约瑟夫生死游戏能够精确的找到死亡者的位置,并且能够灵活的确定剔除第几个人,以及要剔除多少人,并且能够对很多
2、人的情况下迅速确定生者和死者的位置。整个游戏主要分为几个模块:队列初始化,入队,查找死亡位置,排序,生者位置的确定,输出死者位置。队列初始化:对队列中每个人进行初始化。入队:对每个人进行赋值,并且进行入队操作。查找死亡位置:通过一控制块控制入队,出队,从而找到死亡位置,并且把死亡位置保存到数组。排序:把死亡位置按从小到大进行排序,以便观看结果。生者位置的确定:通过已经确定的死亡位置来确定生者位置,并对生者位置进行输出。输出死者位置:对已排序的死亡位置进行输出。2.3数据需求第i个人员信息=i-1;总人数;踢除第几个人;剔除人数;12第三章系统设计3.1系统体系结构约瑟夫生死游戏通过通过一
3、控制块控制入队,出队,找到死亡位置,从而确定生者位置。主要包括确定死亡位置和确定生者位置。约瑟夫的软件结构如图3.1所示。约瑟夫生死游戏确定死亡位置确定生者位置图3.1系统结构3.2各子功能模块设计3.2.1确定死亡位置(1)功能:通过通过一控制块控制入队,出队,找到死亡位置,并保存死亡位置。(2)程序流程图:约瑟夫生死游戏的程序流程图如图3.2所示。12开始剔除人数是否小于总死亡数是剔除人数加一入队,出队控制块符合进行入队,出队操作剔除,并保存剔除的位置结束否图3.2确定死亡位置进行判断3.2数据结构设计3.3.1员工信息数据结构设计人员信息包括每个人员位置对应的值,以及队头,队尾的位
4、置。typedefstruct{DATATYPEdata[maxsize];//队中元素intfront,rear;//队头元素下标、队尾元素后面位置的下标}SEQQUEUE;12第四章系统实现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;n5、e,&temp);QueueOut(&game);QueueIn(&game,temp);}if(n==s-1){12QueueFront(game,&temp);QueueOut(&game);p[m]=temp;m++;}if(m>=w)break;}//将死亡位置从小到大输出for(m=0;mp[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("生者的位置:"6、);printf("%d",y);break;}if(y==z+1){h++;if(h>=w-1)h=w-1;break;}}12}//输出死亡者的位置for(m=0;m7、.1序号输入/动作期望输出/相应实际情况1输入人数:10数到第几个人则剔除:3死亡的人数:4符合2输入人数:15数到第几个人则剔除:6死亡的人数:5符合表5.1.1输入与显示12结论本游戏是一款生死抉择的游戏,由于某种原因,需要在一群人中踢出一部分人,被踢出的人将会面临死亡的威胁,因此大家都不想成为那个被踢除的那个人,但是又必须踢出一些人才能保证其他人的安全,你的位置会影响你的生死,所以位置的选择很重要,本游戏就起到了一个找到死亡位
5、e,&temp);QueueOut(&game);QueueIn(&game,temp);}if(n==s-1){12QueueFront(game,&temp);QueueOut(&game);p[m]=temp;m++;}if(m>=w)break;}//将死亡位置从小到大输出for(m=0;mp[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("生者的位置:"
6、);printf("%d",y);break;}if(y==z+1){h++;if(h>=w-1)h=w-1;break;}}12}//输出死亡者的位置for(m=0;m7、.1序号输入/动作期望输出/相应实际情况1输入人数:10数到第几个人则剔除:3死亡的人数:4符合2输入人数:15数到第几个人则剔除:6死亡的人数:5符合表5.1.1输入与显示12结论本游戏是一款生死抉择的游戏,由于某种原因,需要在一群人中踢出一部分人,被踢出的人将会面临死亡的威胁,因此大家都不想成为那个被踢除的那个人,但是又必须踢出一些人才能保证其他人的安全,你的位置会影响你的生死,所以位置的选择很重要,本游戏就起到了一个找到死亡位
7、.1序号输入/动作期望输出/相应实际情况1输入人数:10数到第几个人则剔除:3死亡的人数:4符合2输入人数:15数到第几个人则剔除:6死亡的人数:5符合表5.1.1输入与显示12结论本游戏是一款生死抉择的游戏,由于某种原因,需要在一群人中踢出一部分人,被踢出的人将会面临死亡的威胁,因此大家都不想成为那个被踢除的那个人,但是又必须踢出一些人才能保证其他人的安全,你的位置会影响你的生死,所以位置的选择很重要,本游戏就起到了一个找到死亡位
此文档下载收益归作者所有