有位网游给我个题,叫我写一个模糊参数的lua使用。感觉很有用途,因为c 函数与lua函数功能的统一,对c程序员编程是十分有利的。
对于函数参数是不定的,这种函数可能有些人并不清楚,但是却在一直使用而不清楚其内幕。在program lua中有这样的一章。这里不给出了。现在先说下c++是如何模糊的。
都是使用过sprintf()函数。有些人可能c++用惯了可能没用过sprintf()函数,这里给个小例子回忆下当年c的情景。
cpp文件:main.cpp
--------------------------------------------------------------------------
#include <iostream>
using namespace std;
int main()
{
char buffer[100];
int i = 5;
char * str = "lua脚本编程!";
sprintf(buffer,"%s || %d",str,i);
cout<<buffer<<endl;
return 0;
}
----------------------------------------------------------------------------
输出:--》 lua脚本编程! || 5
这个例子非常简单,学过c的没有不知道的。
问题来了,这个sprintf()函数参数是不定的。现在就要自己实现一个sprintf函数这样的函数,这样的函数使用是非常方便的。像TSEngine中的TSFont引擎,都是用模糊函数输出文本,nehe教程中有这样函数的展现,本人只是班门弄斧。但是nehe只是给出了这个问题,其实模糊函数不止光能这么用。
下面的例子就是写一个模糊函数与lua的模糊函数的协作。
代码就不贴出了,用起来很简单。
----------------------------------------------------------------------------
#include "Lua_Fun.h"
lua_State *L;
int main (void)
{
L = lua_open();
luaL_openlibs (L);
luaL_loadfile(L, "luatext.lua");
lua_pcall(L, 0, 0, 0);
///////////////////////////////////////////////////////////////////////////////
//note: |function |(...)argument |Endflag
cout<<Multiform("multiform",1,2,3,4,5,6,1,1,1,1,1,1,1,1,1,1,1,1,1,-20,LUA_MULTFUN_END)<<endl;
///////////////////////////////////////////////////////////////////////////////
lua_close(L);
getchar();
return 0;
}
----------------------------------------------------------------------------
纳米机器人下载地址:Demo下载
http://www.namipan.com/d/2696cb127665a4306f22f7f6cab51a2e422c2568a1160000