您的当前位置:首页正文

约瑟夫生死游戏 课程设计

2024-03-11 来源:欧得旅游网
第一章 问题背景

约瑟夫生死游戏是一款生死抉择的游戏,由于某种原因,需要在一群人中踢出一部分人,被踢出的人将会面临死亡的威胁,因此大家都不想成为那个被踢除的那个人,但是又必须踢出一些人才能保证其他人的安全,你的位置会影响你的生死,所以位置的选择很重要。

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{QueueFront(game,&temp); QueueOut(&game);

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;mprintf(\"死亡者的位置:\"); printf(\"%d\\n\ } }

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

因篇幅问题不能全部显示,请点此查看更多更全内容