lua例子getglobal()

#include <stdio.h>
#define MAX_COLOR       255
extern "C"
{
#include "lua-5.2.2/src/lauxlib.h"
#include "lua-5.2.2/src/lualib.h"
#include "lua-5.2.2/src/lstate.h"
}

int getfield(const char* key, lua_State* L)
{
    int result = 0;
    lua_pushstring(L, key);
    lua_gettable(L, -2);//以栈顶的值作为key来访问-2位置上的table。并将其值放入栈顶
    if (!lua_isnumber(L, -1))//将栈顶元素转换成double类型
    {
    }
    result = (int)lua_tonumber(L, -1) * MAX_COLOR;//lua_tonumber只是转换栈顶元素是不出栈的
    lua_pop(L, 1);//从栈中弹出1个元素
    return result;
}

int main(int argc, char *argv[])
{
    const char* buf = "background = {r=30, g=10, b=0} ";
    lua_State* L = luaL_newstate();
    luaL_dostring(L, buf);
    lua_getglobal(L, "background");//获取全局变量的background的值,并将其放入栈顶
    if (!lua_istable(L, -1))//判断是否是table
    {

    }
    int red = getfield("r", L);
    int green = getfield("g", L);
    int black = getfield("b", L);

    getchar();

    return 0;
}
时间: 2024-08-05 13:31:13

lua例子getglobal()的相关文章

lua例子(进出栈)

#include <stdio.h> extern "C" { #include "lua-5.2.2/src/lauxlib.h" #include "lua-5.2.2/src/lualib.h" #include "lua-5.2.2/src/lstate.h" } //lua与c交互栈的索引,假如栈中有5个元素 //5 -1 //4 -2 //3 -3 //2 -4 //1 -5 void stackDum

lua 例子

//顶 -1 -2 -3 //顶 3 2 1 #include <stdio.h> #include <string.h> extern "C"{ #include <lua.h> #include <lauxlib.h> #include <lualib.h> } #pragma comment(lib,"lua.lib") void stackDump(lua_State* L) { int i; in

lua例子学习

#include <iostream> #include <string.h> extern "C" { /*头文件lua.h定义了Lua提供的基础函数,包括创建Lua环境.调用Lua函数.读写Lua环境中全局变量,以及注册供Lua调用的新函数等等*/ #include "lua-5.2.2/src/lua.h" /*头文件lauxlib.h定义了辅助库提供的辅助函数,它的所有定义都以LuaL_开头.辅助库是一个使用lua.h中API编写出的

以一则LUA实例说明敏捷开发中&ldquo;分离构造和使用&rdquo;原则

分离构造和使用 构造含义是功能的实现, 此功能是一个定义明确的处理过程, 开放出明确的接口给调用者使用. 则使用者可以直接调用接口进行使用, 但是使用者需要搞清楚, 那些是构造, 那些是使用. 不要再使用的地方, 将构造的代码也实现. 否则, 构造的代码会淹没掉 使用地方的 业务逻辑. LUA需求 在一个lua表中, 查询指定参数名称的参数值,  并将此参数值转换为 html encode编码方式. instData = { ["para"] = "paravalue<

C语言和Lua的交互

//test.c #include <stdio.h> #include "lua.h" #include "lualib.h" #include "lauxlib.h" #include <stdlib.h> lua_State *L; int main(){ L = luaL_newstate();//创建state以及加载标准库 luaL_openlibs(L);//打开所有lua标准库加入到已经创建的state l

cocos2dx[3.x](2)——浅析cocos2dx3.2引擎目录

[唠叨] 3.x的引擎目录与2.x的引擎目录的差别是非常大的.学过2.x的朋友应该会发现2.x的引擎目录有点凌乱.而3.x主要是将引擎的各个文件按照用途进行了分类,使得引擎目录结构更加清晰了. [窥探3.x引擎目录] 要想学好cocos2dx,首先就需要对引擎目录下的各个文件有所了解.接下来,就让我们先来分析一下cocos2dx3.2引擎的文件目录吧. 从目录中我们主要了解一下以下几个文件: 文件名 说明 build 官方编译的项目解决方案. 集中放在这个文件中,如cocos2d-win32.v

Lua的Table表使用例子(便于使用查询)

一.table.insert() 1.1 1 local countries = {"China", "England", "Brazil"} 2 --尾插法(Pos不填,默认插入尾部) 3 table.insert(countries, "France") 4 --头插法(首部插入) 5 table.insert(countries, 1, "Australia") 6 7 dump(countries)

Cocos2d Lua 入门小例子 一个记忆力游戏

1.游戏说明 一个"记忆"类的比赛游戏.你和电脑对战,轮到谁的回合,谁翻两张牌,如果两张牌一样,就消掉这两张牌,得2分,可以继续翻牌,如果两张牌不一样,就换一个人.直到最后,看谁的得分高. 游戏设计思想可以看这篇文章<Cocos2d 游戏状态机> 2. Lua 简单面向对象 我们知道Lua是脚本语言,不是真正面向对象语言.但是面向对象好像能让代码结构更加合理,Javascript, Lua都可以模拟出面向对象.Lua面向对象还有超多种方式实现,这里当然不一一介绍.简单来看个

c/c++中调用lua第一个例子

首先下载lua源码包,然后分别是make,make linux,make install 注意如果没有make install,那么在#include<lua.h>时,会报找不到lua.h文件的错误. 网上找到一段源码: func.lua --变量定义width=1 ;height=2 ;--lua函数定义,实现加法function sum(a,b)    return a+b ;end--lua函数定义,实现字符串相加function mystrcat(a,b)    return a..b