用 C 语言和 nkCEngine 写了一个基于命令的迷你脚本编译器与脚本播放器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用 C 语言和 nkCEngine 写了一个基于命令的迷你脚本编译器与脚本播放器相关的知识,希望对你有一定的参考价值。

首先,博主感到非常高兴,就在很久以前,博主就想写一个属于自己的脚本引擎,哪怕功能再简单也好,只要能跑起来就行了,直到今天,博主终于向这个梦想迈出了第一步,将脚本引擎的雏形给做了出来,因为这个脚本系统属于 nkCEngine 的一部分,所以博主将其命名为 nkScript,nkScript 是一门基于命令的语言,没有复杂的函数调用,没有复杂的循环语句,它拥有的,是简单的数值运算语句、条件跳转语句、无条件跳转语句、命令语句,等等;nkScript 的开发目标主要是用于制作简单的文字冒险游戏,就是那种只需要通过点击鼠标,就可以游玩整个游戏的那种游戏;

脚本系统分为两个重要组件,分别是编译器(nkScript Compiler)与播放器(nkScript Player),编译器负责将开发者易于阅读与编写的文本形式的脚本文件,转换为二进制中间码形式,而脚本播放器则加载中间码数据,并进行解释,同时将脚本中的命令以图形的形式呈现出来,还要配合用户的输入,来进行脚本执行与调度(比方说点击鼠标,显示下一句对白);

我们先来看一段简短的脚本代码:

text
"欢迎使用 nkScriptPlayer 脚本播放器\\n我们将为你演示脚本播放器的基本功能,请点击鼠标左键"

text
"我们来试着加载并显示背景图"

load bg "CGDATA/title001.bmp"

text
"现在,试着在画面左边加载一个立绘"

load left "CGDATA/MEGU111.BMP"

text
"很好,试着在画面右边再加载一个立绘"

load right "CGDATA/SINO113.BMP"

text
"接下来,我要删除全部图像"

unload all

text
"喔~~一片漆黑,什么都看不到!!"

text
"点击鼠标结束程序哦"

上述脚本代码基本上不言自明,只有三种命令,第一种是 text 命令,用于显示指定文本,第二种是 load 命令,用于加载指定图像文件,并将其显示在屏幕指定位置,第三种是 unload 命令,用户从屏幕中移除指定位置的图像,并且将图像资源从内存中释放;

运行效果如下图所示:

技术分享

技术分享

技术分享

接下来,我要演示一下数值计算的功能,但是,仅仅数值运算,并没有任何作用,在文字冒险游戏中,数值往往必须配合条件判断与跳转语句,才能发挥真正的效用,比方说创建一个变量 LoopCount,初始化为 0,然后为 LoopCount 增加 1,如果发现 LoopCount 小于 3,则跳转到指定的文本指令,显示提示文本,然后跳转到头部重新执行,如果 LoopCount 等于 3,则结束脚本的运行;

为了实现上述效果,我们可以编写出下面脚本:

set LoopCount = 0

:LabelStart
calc LoopCount + 1

if LoopCount == 1 LabelRunFirst
if LoopCount == 2 LabelRunSecond
if LoopCount == 3 LabelEnd

:LabelRunFirst
text
"游戏第一次运行呢"
goto LabelStart

:LabelRunSecond
text
"游戏第二次运行了哦"
goto LabelStart

:LabelEnd
text
"点击鼠标结束程序哦"

代码应该不会很难看懂,如果你稍微有一点点 Windows 系统下的命令行使用经验,或者编写 bat 文件的经验,那么读懂上面脚本应该易如反掌,首先,在脚本的开头,使用 set 命令创建一个变量 LoopCount,并将其初始值设置为 0,用于记录脚本已经重复运行多少次,然后马上为 LoopCount 加 1,随后对 LoopCount 的值进行判断,如果为 1,则显示对话 1,如果为 2,则显示对话 2,如果为 3,则直接跳转到脚本末尾,显示退出提示文本,最终程序退出,运行效果如下所示:

技术分享  

技术分享

技术分享  

运行结果并没有什么令人感到惊讶的地方,相反,【容易使用】就是这款脚本系统的最大特点,因为脚本最终是交由脚本编写人员进行编写,程序开发者不会进行过多的干涉,这样子,可以让编写游戏故事的人员可以随时随地测试自己的构思与想法;

最后,放出脚本引擎的可执行程序文件,大家可以下载回来后,通过编辑 main.txt 文件,然后使用 nkScriptCompiler.exe 进行编译,如果成功生成了 main.nse 文件,则可以使用 nkScriptPlayer.exe 进行运行,编写好的脚本保存好后,只需要直接双击 nkScriptCompiler.exe 就会自行编译,然后直接双击 nkScriptPlayer.exe 就会自动运行脚本,点击鼠标左键可以与脚本进行人机交互:

http://pan.baidu.com/s/1jHL8yZc

-- 2016-10-17 By NekoDev cnblogs

-- 原创技术文章,转载请注明出处,并保证内容的完整性

 

以上是关于用 C 语言和 nkCEngine 写了一个基于命令的迷你脚本编译器与脚本播放器的主要内容,如果未能解决你的问题,请参考以下文章

Neko C Engine一个基于 C 语言的游戏基础代码库

小项目特供 贪吃蛇游戏(基于C语言)

C语言写了一个socket server端,适合windows和linux,用GCC编译运行通过

c语言用for循环写九九乘法表 我写了一个,能否帮我解释一下每行的含义和为啥这么写

我用c语言写了一个小的计算器程序,但是我想给这个程序做一个windows界面,

基于c语言中调试工具的用法汇总(不包含gdb)