什么是脚本语言,脚本语言的详细的具体的意义又是怎么样的。都知道ASP,PHP,JavaScript这些是脚本语言(JAVA应该也算是一种脚本语言)
   

typedef struct _Item
{
char *pstrName;
int iType;
int iPrice;
int iPower;
}Item;

pstName是物品的名称,比如是羲和剑,iType是物品的类型,可以是武器类,药品类还是魔法用品类等等。IPrice是物品的价格,iPower是这个物品所能发挥的作用。注意,这个结构体是写在引擎里的。一个游戏里有成百上千的物品。所以在定义一个物品的数组来存放:

const MAX_ITEM_COUNT=500;

Item ItemArray[MAX_ITEM_COUNT];

下面来添加一些物品到游戏里,再次注意是在引擎代码里添加:

//先来些武器

ItemArray[0].pstrName=”羲和剑“;

ItemArray[0].iType=”武器“;

ItemArray[0].iPrice=1000;

ItemArray[0].iPower=2000;

//来些疗伤药品

ItemArray[1].pstrName=”止血草“;

ItemArray[1].iType=”药品“;

ItemArray[1].iPrice=50;

ItemArray[1].iPower=500;

//来些装饰的物品

ItemArray[2].pstrName=”蚕丝风衣“;

ItemArray[2].iType=”装饰“;

ItemArray[2].iPrice=200;

ItemArray[2].iPower=400;

很好,现在游戏里已经有了这些物品了。好我们编译我们的游戏,引擎代码数万行,好不容易编译完后,我们运行游戏。发现止血草这个物品又便宜,才50块,而回复HP值有500之多,这让游戏难度很低,因此游戏失去了可玩性。因此我们必须了从新修改这个物品属性才行。于是改成:iPrice=100,iPower=300;改完后我们再次编译,唉又是一个漫长的等待。如此的反复测试,直到每个物品都达到一种平衡为此。要知道一个游戏里有成百上千的各种物品,如果每一个都是这种来改那简直就是末日。所以必须要想一个办法才行。办法是有的,“那就是把逻辑和具体实现互相分离”。那么是如何把逻辑与具体实现互相分离的呢,来看上面的代码中的一行:

ItemArray[0].pstrName=”羲和剑“;

这行代码的逻辑部分就是:把字符串“羲和剑”放到变量pstrName当中。具体实现就是字符串“羲和剑”。现在把上面武器物品的定义进行分离:

“羲和剑”

“武器”

1000

2000

这样就把上面武器部分的具体实现即代码的右边部分独立出来。把上面四行代码用一个文件保存起来比如:weapon.script

这样weapon.script就是一个脚本文件了。然后我们再编写一个支持这种脚本格式的逻辑解释器就可以让这个脚本运行了。这个逻辑解释器是分离的逻辑部分。运行解释器会读取weapon.script这个文件,然后执行逻辑部分具体是:

1.读取weapon.script的第一行,把第一行的字符串存放到变量pstrName当中。

2.读下一行,判断物品的类型,赋值给iType.

3.读下一行,把值赋给iPric;

4.读下一行,把赋值给iPower;

重复1~4步直到读取完文件为止。这个逻辑解释器可以和引擎一起,也可以独立出来。当独立出来后就是一个简单的脚本语言系统了。当然是一个相当“简单”,真正的脚本语言系统要复杂的多。其中要用到VM,都知道JAVA的JVM了,其实原理都是一样的,JVM里也有个逻辑解释器。用来解释JAVA的每一条命令。从上面可见,当我们把逻辑部分与具体实现部分分离后,我们就可以随便在脚本文件里增删物品的数量,种类和修改各种属性了。修改完后,由LOADER一读就可以了,根本用不着编译其他无关的代码。网上找到一个解释却是很形象的:脚本语言一般都是以文本形式存在,类似于一种命令.
举个例子说,如果你建立了一个程序,叫aaa.exe,可以打开.aa为扩展名的文件.
你为.aa文件的编写指定了一套规则(语法),当别人编写了.aa文件后,你的程序用这种规则来理解编写人的意图,并作出回应.那么,这一套规则就是脚本语言.