你看,我们的主循环干净许多了吧。所有复杂的、细节的代码被放到了函数里,而在主循环中我们只需调用它。原先代码中混在循环中的一堆代码都被移走,放到了代码顶端。
我希望这能帮助学习有关函数使用的知识。以后的教程我们将使用函数了。
9——读写文件
本课我们将学习如何读取文件和写入文件。这对于制作游戏来说是很有帮助的。你可以调用别的文件中的代码,也可以保存最高分、游戏存档、玩家状态等信息到文件里……
我们这就开始吧!
首先,让我们看一个简单的命令:dofile。
这个命令会读入另一个文件的代码并立即执行。
代码:
dofile("./test.lua")
很简单的命令。注意 ./ 是指根目录,不是子目录。如果是子目录,应该这样用:
代码:
dofile("./files/test.lua")
那么,如果我们的文件 test.lua 包含下述代码:
代码:
playerx = 10
playery = 20
enemyx = 40
enemyy = 50
...则一旦我们用 dofile 调用这个文件,这些变量将立即得到声明。文件不是非得用 lua 后缀,txt 或其他后缀都可以。
从文件中读取一行:
假设你有一个很多行文本的文件,你想从中读取一行,并打印到屏幕上。为此我们可以使用 io.open() 命令打开文件并读取。
命令的语法是 io.open(filename, mode)。此处我们将使用 r 作为 mode 的值,意指读取(read)模式。
作为参考,下面是所有可用模式的列表:
r - 读取模式
w - 写入模式(覆盖现有内容)
a - 附加模式(附加在现有内容之后)
b - 二进制模式
r+ - 读取更新模式(现有数据保留)
w+ - 写入更新模式(现有数据擦除)
a+ - 附加更新模式(现有数据保留,只在文件末尾附加)
第一件要做的事情就是打开文件并存为一个变量。看下面。
代码:
file = io.open("testRead.txt", "r")
现在我们的文件 testRead.txt 已打开并处于读取模式。接着我们使用 read() 命令读取文件中的单行内容存为另一个变量。
代码:
ourline = file:read()
这将读取我们的文本文件的第一行。下一次我们使用 read() 命令它将读取第二行。再下一次它会读取第三行,依此类推。