跳到主要内容

Lua

这回我们讲lua的语法。 关于CYF,lua是很重要的

🤓其实呢

CYF首页的readme.md标题就写了Lua moddable Undertale engine(可用lua编写的undertale游戏引擎)

菜鸟教程是一个很好的网站(其实就是懒得写文)

下载环境

lua.org或自己搜索在线编辑器

可以到菜鸟联盟里面去,里面有工具可以在上运行lua代码(手机也可以!)

基本语法

这里先试试写一个小程序:

print("hello")  --print函数在控制台打印一个hello(为什么这么像python)

CYF中应该使用DEBUG("")

好的,让我们再写一段代码:

print("hello")
a=10
print(a)

那么应该写在哪里? 这时候不应该打开VS,应该打开SciTE(安装完lua后的那个黑球图标),如图(菜单栏tool→go(F5)即可显示输出效果):

有趣的是,变量可以在没初始化使用,但是值为nil(lua中指空值)

print(a)

我们使用LUA来演示条件判断和循环就简洁多了

if语句

a=3
if a==2 then
print("fuck")
elseif a==3 then
print("ok")
else
print("xxx")
end

注意,判断的时候必须使用==(因为编程中一个=就是右值赋值给左边的变量,两个=才是我们常说的“等于”)

for循环

for i=0,10,1 do
print("hello")
end

解释:for后面先跟了一个变量i=0,然后10是循环到i==10,之后的1是每次循环i+1

函数

function sayhello()
print("hello")
end

我们写一个比较大小的函数,如果v1大返回v1:

function max(v1,v2)   --定义函数max(),其中传入的参数有两个:v1和v2
local r=0 --新建局部变量r(只对这个函数凑效的变量...应该吧)
if v1>v2 then
r=v1
print(r.."比"..v2.."大(这是v1)")
else
r=v2
print(r.."比"..v1.."大(这是v2)")
end
return r
end
max(20,10) --结果输出:20比10大(这是v1)