基于nc中介组织的生命游戏的设计与实现_第1页
基于nc中介组织的生命游戏的设计与实现_第2页
基于nc中介组织的生命游戏的设计与实现_第3页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于nc中介组织的生命游戏的设计与实现

1.总结1.1数学游戏的起源生命之游戏是20世纪70年代由英国哲学家约翰dynamitoncough和其他人开发的数学游戏。该游戏最先在《科学美国人》杂志上被提出。生命游戏是一个零玩家游戏,其原理是细胞自动机。1.2细胞不同的人1)当一个细胞周围的8个格子里正好有3个细胞生存,则该细胞也能生存(假如该细胞原来死亡,现在就能生存,假如该细胞原来生存,现在继续生存)。2)当一个细胞周围的8个格子里正好有2个细胞生存,则该细胞保持不变(假如该细胞原来死亡,现在继续死亡,假如该细胞原来生存,现在继续生存)。3)其余情况,该细胞皆死亡。1.3生命游戏模块系统模块由以下几个部分构成:核心算法与Ncurses图形化界面。其中核心算法部分包含了初始化,更新状态,计算存活邻居数目,输出,执行这五大模块。当程序运行时,用户通过选择一种生命游戏的模式,从而开始游戏。系统通过核心算法的计算检测每一个位置的状态,之后在重新刷新时,更新细胞的状态。2.关键模块的设计2.1生命生命的模拟过程初始化模块预先设置了6种初始模式,用户可以选择其中的某一种模式开始模拟生命生长的过程。初始化模块按照选择的某一种模式设置初始存活的细胞,其余的细胞皆设置为死亡状态。初始化模块主要通过initiate函数实现。2.2细胞结构体pe该模块中,对于每一个细胞,系统计算出其周围8个细胞的状态,并把统计出的状态存入cell类型的结构体中。其中cell结构体是由以下几部分构成:当前位置的横坐标,纵坐标,判断细胞是否存活的标志,判断细胞下一时刻是否存活的标志,以及该细胞周围的存活细胞个数。该模块通过实现count_neighbours函数实现。2.3细胞状态的变化该模块中,当系统下一个时间点刷新界面时,系统通过查看cell结构体内的邻居的状态来决定当前细胞是否存活,并更新当前细胞的状态。该模块通过实现get_new_state函数实现。2.4模型单元的设计输出模块主要是利用ncurses图形库进行绘制图形。该模块通过实现print函数实现。2.5执行模块设计执行模块是系统的重要组成部分,该模块通过调用其他模块实现算法。该模块通过实现execute函数实现。3.图的实现3.1ncuses图形库Ncurses是开源的图形库,遵循GNU协议,最早由美国伯克利大学的两人编写,进行一个游戏的图形界面显示。之后贝尔实验室的工作人员又在此基础上重写了该图形库。Ncurses被广泛地运用在Linux图形编程。著名的Linux下的浏览器w3w就是采用ncurses图形库编写。另外,在Windows环境中也有类似的图形库pcurses,同样也是由贝尔实验室开发。3.2使用rcus在该系统中,ncurses被运用来创建系统的图形界面,包括供用户选择的选项,可以切换的面板,菜单项目,和输出字符串。3.2init/分离窗口init_menu函数运用于初始化菜单,即显示设置的几种模式以供用户选择模拟。于此对应的是clear_menu函数,当程序需要销毁菜单时,该函数即被调用。init_wins函数用于初始化窗口,在本系统中,由两个窗口,分别是用户选择模式的窗口和模拟过程的窗口,正如图2所示。在Ncurses中,窗口的建立是通过调用newwin方法实现的。窗口的显示出了需要调用init_wins外还需要调用win_show函数,该函数负责显示已经创建好的窗口。在程序运行结束时,需要调用clear_menu和endwin来清除菜单和窗口。4.细胞发展变化模拟本文就一经典的数学游戏问题提出了程序的解决方案,从构建模型到具体实现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论