LUA基本应用

游戏中的界面都是用LUA来写,这个和WOW是一模一样的,嗯,以后再慢慢研究.年终了,保存下先.

lua语言规则:

 
 
 
  1. lua_State *L = lua_open(); //建立一个LUA状态机   
  2. luaopen_base(L); // 启动它   
  3. const char *buf = "print('hello, world!')";   
  4. lua_dostring(buf); //把buf写入到lua中并执行   
  5. lua_close(L); // 关闭L   
  6. lua_pushstring(L, "var"); //将变量的名字放入栈]   
  7. lua_getglobal(L, "var"); //变量的值现在栈顶   
  8. int var = lua_tonumber(L, -1); //取得栈顶的元素   
  9. lua_tostring( ls, -1 ); //取得栈顶的的元素, 一般用于参数传递   
  10. lua_pushstring( ls, s_szPlayer ); //把某个字符串元素压入栈中,可用于参数传出   
  11. lua_pushnumber(L, 200); //把某个数字元素压入栈中,   
  12. lua_register(L, "foo", foo); 
  13.  //把自己在C++中编写的函数foo拿到lua中注册,这样在lua脚本中就可以调用这个函数 

 在Lua中,函数等同于变量,所以你可以这样来取得这个函数:

 
 
 
  1. lua_getglobal(L, "main");//函数现在栈顶 

现在,我们可以调用这个函数,并传递给它正确的参数:

 
 
 
  1. lua_pushnumber(L, 100); //将参数压栈   
  2. lua_pcall(L, 1, 1, 0); //调用函数,有一个参数,一个返回值   //返回值现在栈顶   
  3. int result = lua_tonumber(L, -1); 

例子:

 
 
 
  1. #include "lua.h" 
  2.  #include "lauxlib.h" 
  3.  #include "lualib.h" 
  4.  int foo(lua_State *L) 
  5.  { 
  6.  //首先取出脚本执行这个函数时压入栈的参数 
  7.  //假设这个函数提供一个参数,有两个返回值 
  8.  //get the first parameter 
  9.  
  10.  const char *par = lua_tostring(L, -1); 
  11.  printf("%s\n", par); 
  12.  //push the first result 
  13.  
  14.  lua_pushnumber(L, 100); 
  15.  //push the second result 
  16.  
  17.  lua_pushnumber(L, 200); 
  18.  //return 2 result 
  19.  
  20.  return 2; 
  21.  } 
  22.  int main(int argc, char *argv[]){ 
  23.  lua_State *L = lua_open(); 
  24.  luaopen_base(L); 
  25.  luaopen_io(L); 
  26.  lua_register(L, "foo", foo); 
  27.  const char *buf = "r1, r2 = foo("hello") print(r1..r2)"; 
  28.  lua_dostring(L, buf); 
  29.  lua_close(L); 
  30.  return 0; 
  31.  } 

网站栏目:LUA基本应用
网页地址:http://www.shufengxianlan.com/qtweb/news10/466610.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联