|
楼主 |
发表于 2005-9-22 14:16:00
|
显示全部楼层
Re:《古月》开发中脚本系统示例程序
#include<hgl/hgl.h>
#include<hgl/AngelVM.H>
#include<stdio.h>
using namespace hgl;
class TestObject
{
public:
int result;
public:
TestObject(){};
~TestObject(){};
void add(int a,int b)
{
result=a+b;
}
};
void CreateObject(TestObject *o) //对象创建函数
{
o=new TestObject;
}
void ClearObject(TestObject &o) //对象删除函数
{
o.~TestObject();
}
void add(TestObject *o,int a,int b)
{
o->add(a,b);
}
char script[]=
{
"void main() \n"
"{ \n"
" object o; \n"
" o.add(1,2); \n" //此行会映射调用void add(TestObject *o,int a,int b)
" test_value=o.result; \n"
"} \n"
};
void GameMain(char *)
{
AngelVM vm; //定义虚拟机
AngelVM::Object *obj;
int value=0;
vm.SetGloalValue("int test_value",&value); //设置变量映射
obj=vm.SetObject(TestObject,"object",CreateObject,ClearObject); //创建对象,并设置对象创建删除函数
{
obj->SetValue("int result",TestObject,result); //设置对象成员变量映射
obj->SetFunc("void add(int,int)",add); //设置对象成员函数映射
}
vm.AddScript(script); //添加脚本,同时做编译处理
vm.Run("main();"); //运行指定的程序,调用脚本中的函数
printf("value=%d",value); //输出结果
}
运行结果:
value=3 |
|