随笔 - 132  文章 - 51  trackbacks - 0
<2011年6月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用链接

留言簿(7)

随笔分类

随笔档案

文章分类

文章档案

cocos2d-x

OGRE

OPenGL

搜索

  •  

最新评论

阅读排行榜

评论排行榜

官方的Wiki:http://lua-users.org/wiki/TutorialExamples
以下是关于vs2005中使用lua
    以下是我在vs2005中编译方法:
    1:打开vs命令行工具、   工具->visual studio 2005 command prompt
    2:到lua-5.1的目录也就是etc的上一级目录    :cd/d d:\lua-5.1
    3:执行:etc\luavs.bat(注意:这里是\,不是/)
    4:然后lua51.dll ,lua51.lib,lua.exe就生成在src路径下了~(注意因为是lua5.1的所以没有luac.exe,以前的版本有

  因为在vs2005中lua是外来的,所以要让vs2005能找到lua的头文件和库文件(lua5.1中只有一个lua51.lib),在vs中包含
于是:工具->选项->项目和解决方案->vc++ 目录  右边选择包含文件把src的路径包含进来(关于头文件的)
 还有库文件同意的操作,不过这里就是后来一直出错的点,这里这种方式包含的库文件是包含不进来的,后面讲到的一种方法可正确包含

     头文件和库文件都包含进来后就可以在c++中使用lua了
看一个实例如下:
#include <stdio.h>
#include <iostream>
extern "C"
{
   #include "lua.h"
   #include "lualib.h"
   #include "lauxlib.h"
}//在工具中包含文件的那个~~
/* Lua解释器指针 */
lua_State * L;
#pragma comment(lib,"lua51.lib")//包含库文件~~在工具里包含不进来,上面的包含不进来的处理办法是:
//把lua51.dll 拷到项目的dubug目录下,把lua51.lib拷到项目目录的项目名的文件夹下
int main ()
{
 /* 初始化Lua */
 L = lua_open();
 /* 载入Lua基本库 */
 luaL_openlibs(L);
 /* 运行脚本 ,注意路径*/
 luaL_dofile(L, "d:\\test.lua");
 /* 清除Lua */
 lua_close(L);
 //printf( "Press enter to exit…" );
 //getchar();
 return 0;
}
 上面是c++的一个空工程
下面是test.lua的代码:是一个石头剪子布的小的游戏实例      
代码如下:
---[[
math.randomseed(os.time()) --[[为随机数产生器生成一个种子--]]
user_score = 0
comp_score = 0  -- 全局变量存分数
lookup = {};     --输赢对照表
lookup["rock"]={rock = "draw",paper = "lose",scissors ="win"}
lookup["paper"]={rock = "win",paper = "draw",scissors = "lose"}
lookup["scissors"]={rock = "lose",paper = "win",scissors = "draw"}
function GetAiMove()  --Ai的函数
  local int_to_string = {"rock","paper","scissors"}  --局部一个table,对照用
  return int_to_string[math.random(3)]
end
function EvaluateTheGuess(user_guess,comp_guess)   -- 计算结果的函数
  if(lookup[user_guess][comp_guess]=="win") then
     print ("user win the game")
     --print()
     user_score=user_score+1         --小错误 ~已改
  elseif (lookup[user_guess][comp_guess]=="lose") then
     print ("user lose the game")
     --print()
     comp_score=comp_score+1
  else
      print ("draw!")
      --print()
  end
end
--下面开始
print ("game begin:enter q to guit game")
--print() --换行?
loop = true
while loop==true do
  --print()
  print("user: "..user_score.." comp: "..comp_score)
  print()
  print("p--布  r--拳头  s--减")
  print("请输入:")
  --io.open()
  user_guess =io.stdin:read '*l'    --出错的地方,这里是l不是1
  --user_guess = "r"
  print()
  local letter_to_string = {r="rock",s="scissors",p="paper"}    --亦是局部的一个table 对照用的
  if(user_guess == "q") then
     loop = false
  elseif(user_guess == "r") or (user_guess == "s") or(user_guess =="p")  then
     comp_guess=GetAiMove()
     EvaluateTheGuess(letter_to_string[user_guess],comp_guess)
  else
     print ("invalid input,try again")
  end
end
--]] 

posted on 2011-06-28 10:06 风轻云淡 阅读(827) 评论(0)  编辑 收藏 引用 所属分类: LUA

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理