1 / 2
文档名称:

游戏脚本.doc

格式:doc   页数:2页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

游戏脚本.doc

上传人:xxj16588 2016/5/2 文件大小:0 KB

下载得到文件列表

游戏脚本.doc

文档介绍

文档介绍:游戏脚本游戏脚本制作一个游戏引擎做好了, 最重要的是缺什么?脚本。打个比方, 游戏引擎是一部电脑, 则脚本就是电脑的软件。既然脚本这么重要, 那该怎样实现呢?下面我就来说说我的做法。首先理解一下消息循环一个好的游戏离不开好的消息循环。它是游戏实现很重要的一部分。下面我就来说说我的游戏《宿命传说》的做法。首先, 我定义了一个全局变量 extern int GameState; 在游戏中定义了许多当前的游戏状态例如#define GAME_STATE_CUSTOM 0 // 这代表在战斗中玩家可以控制游戏#define GAME_STATE_TALKING 1 等等。好了,下面在 WinMain 里面的 while(1) 循环中有个 UpdateScreen() 函数原型为 void UpdateScreen(){ 延时 switch(GameState){case GAME_STATE_CUSTOM: 画出地图画出所有精灵画出天气(如果有的话) 如果玩家选中了敌人的话(打个比方 DrawFlag=DrawEnemyState )就显示敌人的移动范围和敌人状态 break;case GAME_STATE_TALKING:GameDialogProc();break;case GAME_STATE_SCRIPTCONTROLLING:ScriptControlProc();break; …./ / 其他的消息在这里处理} 将缓冲表面的图象显示到屏幕;} 每个游戏状态都需要一个独立的函数来写。这样在每次切换游戏状态时都不会出现无法处理的情况。在处理键盘消息的时候我也用一个个独立的函数来写如处理回车键我用了 KeyReturnProc() 来控制在这个函数里同样也少不了 switch(GameState) 这一句,为什么?答案很简单,比如说在精灵行走时回车键就没有用, 这是我没有处理精灵行走这个状态的键盘消息。而在战斗场景里按下回车键, 如果有精灵在选择框里的话,就会处理相应的东西。例如选择了敌人则使 DrawFlag=DrawEnemyState; 这样在更新屏幕时就会画出敌人的移动范围和状态。明白了吗?好了, 如果你明白了消息循环的原理, 下面的东西就很容易理解了。下面谈谈脚本控制要实现这个,就必须在 UpdataScreen() 这个函数中拦截一个“脚本控制”的消息, 并调用相应的处理函数:ScriptControlProc(); 那么怎样得到“脚本控制”这个消息呢?我是这样约定的: 新游戏-> 调用脚本" 战斗结束"-> 调用脚本“前往下一个地点”-> 调用脚本好了,就只有这几种情况下才调用, 调用脚本的函数为 BeginScriptControl(); 这个函数做了三个工作: 1 .首先读取舞台(场景)角色的数据(没一关都是一个不同的舞台) 2 .打开脚本文件(注意要用全局的文件指针)(虽然我在源程序中没直接打开,但是原理是一样的) 3 .将游戏状态设定为“脚本控制”以便在下一次 UpdateScreen() 中调