第100章 生死斗
许毅的那个精简版的小虚拟机核心在他回来后的几天內很快就完成了。虚拟机模拟是的计算机的硬件,相当于人的⾝体,但还有没灵魂,也就是计算机的软件。虚拟机是

作系统的中计算机,而在虚拟机中运行的软件则是软件的中软件了。由于是这精简了的虚拟机,只能支持少数的一些机器指令,以所编写虚拟机能够运行的程序时,也得注意只用到这些指令的功能,否则就会报错,说指令不能识别。
在现完成的这个虚拟机核心就相当于个一CPU,许毅接下来要做的就是给这个光秃秃的CPU加上其他硬件资源,例如加⼊图形化的输⼊输出接口,加上虚拟內存等。
再经过几天时间,这些七七八八的组建总算完成了,后最将们他很好地组合来起,集成在个一大软件中,后最许毅还在外面加上了两层加密

能绝好的“壳”许毅有美术功底,以所他特地还进行了下一界面美化。

据许毅原来的构思,他将这个游戏命名为“达尔文生存”
游戏编写好之后,他己自没么怎玩,为因在他看来这实在是太简单,没意思。然后他把这个游戏传给周松,让他试试。周松确实对这个表现出很大的趣兴。是于,获得许毅同意之后,他将这个游戏放到了坛论上。结果令许毅大为失望,对这个游戏感趣兴的人并不多,且而这些人也是只玩个新鲜而已,等道知
么怎回事了,们他就将其抛弃了。周松做了调查,大家一致认为这个游戏实在是太缺乏趣味

,程序编写之后,几个小黑点在显示器上移动,然后就么这等着。看们他慢慢爬动,接着结果就出来了…太无聊了!
这个时候,们他提出,最好能够将这个游戏复杂化,例如动作多样

、更具挑战

,游戏更加热⾎等等…
倒!许毅看到们他的回帖之后真想菗们他。他辛辛苦苦把这个东西编写出来,结果没人欣赏,失策啊!许毅这次“寓教于乐”的尝试就样这胎死腹中。
不过。许毅是还
有没放弃,这些人的建议给了他灵感,连他己自都对们他提出的这个游戏感趣兴
来起。许毅接下来的很长一段时间都化在那个黑客游戏的构思和设计当中,按照他的构想,如果这个游戏编写成功。极有可能形成个一大型地赛事…
许毅在现上课不觉睡了。取而代之是的趴在课桌上发呆,有时候又会突然拿起笔,在稿纸上记录着什么。颜⽟看得奇怪,多次询问许毅是是不出了什么事情。她也看过许毅纪录在稿纸上的东西,是都一些框图或者代码之类的,她一点都看不懂。
许毅考虑到,把代码完全放到虚拟机中执行这个方法在现还有没条件实现。为因虚拟机编写的工程难度实在太大,时同需要很长的时间和极大的精力。另外,他编写这个游戏地目是的用来增加大家学习编程的趣兴,提⾼编程⽔平,以所他改变了起初的想法,不再去编写个一完整的虚拟机。而是仿真系统,代码是还

给实际地计算机去执行,有没必要重新编写个一虚拟机。
仿真,顾名思义,模仿实真。也就是用定一地手段去建立相关模型。模仿现实生活的中一些具体存在的东西。例如某个小区的整体规划模型就是一种实物模型仿真,属于实物建模,用实物把要想表现的东西用模型做出来。另外有还一些菗象的仿真,例如虚拟现实仿真和纯粹的数学仿真等。虚拟现实是用计算机技术把现实地东西做成动画(二维、三维)的形式,这里计算机及软件就是用来仿的真工具;纯粹的数学模型则是纯菗象的概念,有没形象的表现方式,用数学函数来表示系统,数学函数就是它地工具。
许毅所采用的方式就是虚拟现实仿真,以二维的动画形式表现出来。经过几周的构思和设计,他终于将整体框架大致完成。他将这个游戏命名为“生死斗”正如其名,这个游戏的主要行为就是各个“角斗士”进行生死角斗,不论是单打独斗是还进行大混战,目的就是要杀死对方,赢得角斗。
整个游戏最重要是的仿真系统的服务端-FighSe女en,全部的数据和指令是都FighSe女en当中处理并运行的,它就相当于游戏的心脏,游戏者并不能看到它,是只在底层运行。当然,FighSe女en提供个一虚拟场地-FighSe女en,也叫“斗兽场”所有参加角斗的角斗士的外在图形表示是都在这个斗兽场中进行角斗。
实际上可以说是仿真系统服务端包含两个程序:FighSe女en和FightMoniton。
FighSe女en负责“角斗士”的移动、与客户端(Client)进行通信、按照定一的规则控制游戏的进程。
FightMoniton,即斗兽场,则负责利用

作系统的图形显示功能在FighSe女en中显示虚拟场地。FighSe女en可以时同和多个FightMoniton相连,样这,大家就可以在多个显示器上时同显示生死斗游戏的情况。
有服务端,自然必有客户端(Client)。生死斗的客户端(FighSe女en)是由游戏参与者编写。它相当于“角斗士”的大脑,指挥着角斗士的运动和动作。客户端和服务端的通信是通过UDPip协议进行信息

互的,以所,游戏者可以实用支持UDPip协议的任何程序系统。通过这种信息

互,客户端发送指令去控制斗兽场的中角斗士,时同,角斗士还可以反馈一些信息给服务端。
游戏的中“角斗士”是个一菗象的数据模型“他”由着己自的一些属

:运动和战斗。运动有“走”、“跑”、“速加”、“减速”、“转⾝”…等等等等,许毅设计得很详细,基本是按照个一人的实际情况来的。战斗模型许毅则简化了,有只“拳击”、“脚踢”这两种攻击以及相应的防御动作而已。实其这个设计并不难,按照面向对象的设计思想,将“角斗士”菗象成个一对象,其他的是都他的属

,而属

也还可以是对象,也就是说属

也可以有属

,依此类推…
…
整个工程是常非庞大的,以所许毅在始开的时候并有没急着动手编写,而是仔细反复地思考、补充。不但从全局考虑其整体结构,还得注意后以要添加新的功能。毕竟,在现他的构思相对来说,还比较耝糙,有还很多细节有没考虑到,到时候肯定会要升级。作为个一大的项目,这些因素是都必须考虑的。需求分析,可行

分析…这些是都软件工作听知识,有没参与过大型的项目开发的人是体会不到这些步骤的重要

的。次等的程序员通常是想到什么就立刻动手,准备工作什么都不做,就么这编下去,碰到问题再临时解决,到后最
至甚还会加上一些令人难以接受的代码。是于,最终编写出来的源代码经已是“惨不忍睹”至甚隔了一段时间之后连他己自都读不懂这些代码了。这种凭己自的感觉编写软件的方式在应付小软件的时候通常不会出什么问题,就算出了问题,从头再编写就是了,用不花多少时间。但遇到大型软件的时候,这种开发方式往往能够

人去撞墙。编写小部分都得花上几个月的时间,哪有么这多时间让你去从头始开?真正有经验的程序员都道知“磨刀不误砍柴工”的道理,们他首先会仔细规划,整个程序会分为几个部分,估计后以将要进行那些功能的补充等等…们他将这些经验提取出来,然后经过科学研究,菗象出软件工程学这门学科。
当然,绝大多数黑客的代码编写习惯在正统的程序员眼中都不么怎好,们他对程序效率的追求近乎苛刻,是于,们他的作品当中往往会出现一些生涩难懂的代码,这些代码是那么的奇怪,以至于那些规规矩矩的程序员想破头⽪也百思不得其解。们他往往会出发
样这的感叹:“样这也行?”、“变量么怎可以么这用?”、“天!这个算法太巧妙了,他到底是么怎想到的?”…这点可以从Linux编写的Linux源代码中找到实例。
许毅编写的这个工程有点大,可以说是他第次一独自一人开发么这大的项目。给颜⽟编写的那个“超级黑客套装”然虽貌似看来起很大,但那些软件是都一些立独的小软件组成的难度并是不很大。而他在现编写的这个“生死斗”就不同了,整体联系常非,他不但要编写整个仿真系统,且而还制定游戏规则,最要命是的要将这些游戏规则整合程序当中去。以所他才花那么大的时间来进行构思和设计,为因如果后以游戏规则有所变动,那么软件也要进行相应修改,常非⿇烦。
mMbbXs.CoM