| PSP | 游戏资料 | 玩家宝典 |
菜鸟也能为PSP编程 - Lua Player 编程初级指南
9——读写文件 本课我们将学习如何读取文件和写入文件。这对于制作游戏来说是很有帮助的。你可以调用别的文件中的代码,也可以保存最高分、游戏存档、玩家状态等信息到文件里…… 我们这就开始吧! 首先,让我们看一个简单的命令:dofile。 这个命令会读入另一个文件的代码并立即执行。 代码: dofile("./test.lua")很简单的命令。注意 ./ 是指根目录,不是子目录。如果是子目录,应该这样用: 代码: dofile("./files/test.lua")那么,如果我们的文件 test.lua 包含下述代码: 代码: playerx = 10playery = 20 enemyx = 40 enemyy = 50 ...则一旦我们用 dofile 调用这个文件,这些变量将立即得到声明。文件不是非得用 lua 后缀,txt 或其他后缀都可以。 从文件中读取一行: 假设你有一个很多行文本的文件,你想从中读取一行,并打印到屏幕上。为此我们可以使用 io.open() 命令打开文件并读取。 命令的语法是 io.open(filename, mode)。此处我们将使用 r 作为 mode 的值,意指读取(read)模式。
引用:r - 读取模式 第一件要做的事情就是打开文件并存为一个变量。看下面。 代码: file = io.open("testRead.txt", "r")现在我们的文件 testRead.txt 已打开并处于读取模式。接着我们使用 read() 命令读取文件中的单行内容存为另一个变量。 代码: ourline = file:read()这将读取我们的文本文件的第一行。下一次我们使用 read() 命令它将读取第二行。再下一次它会读取第三行,依此类推。 请注意,此命令前的 file 是我们之前打开文件并保存的变量名,你可以使用任何其他名字。file.read() 还可以使用下列任一个参数,只要用引号括起来放入括号里就可以。 引用: *n - 读取一个数字并返回它。例:file.read("*n") 既然我们已经读取到所要的那一行,我们需要关闭打开的文件,像这样: 代码: file:close()现在要打印我们的文件至屏幕我们只要这么做: 代码: screen:print(10,10,ourline,white)读取所有行 代码: y = 10file = io.open("testRead.txt","r") for line in file:lines() do y = y + 10 screen:print(100,y,line,white) end file:close() 这个代码设置了一个起始值 y 用于打印,这样它可以在屏幕不同的纵坐标打印每一行。照例,先打开文件。然后是 for 语句,这句代码是说文件的行数有多少下面的代码就执行几次。我们的 y 坐标则每次循环加上 10 以便打印命令可以打印下一行。 写入文件(覆盖) 写入文件的方式大致相同。下面的代码将覆盖任何先前写入文件的内容: 代码: file = io.open("testRead.txt","w")file:write("hello") file:close() 注意,我们这次使用了 w 模式,而不是 r 模式,因为我们是要写入而不是读取。我们用 file:write() 写入括号里作为参数的、用引号括起来的文本。你也可以用变量替代。如果你使用变量就不要用引号,请看下例: 代码: file = io.open("testRead.txt","w")myText = "Hello" file:write(myText) file:close() 写入文件(附加) 你可以使用附加模式,这样就可以在写入文件时将新内容附加在已有文本末尾,而不是删除原来的。做法与上面基本相同,除了模式换成“附加”之外。请看代码: 代码: file = io.open("testRead.txt","a")myText = "\nHello" file:write(myText) file:close() 注意到另一个区别没?在 myText 变量里我们为字符串添加了 \n 。这个命令代表换行,这样写入的文本将从下一行开始。虽然在你的文件中可能显示为同一行只是中间隔了一个方块,但是技术上它是新的一行。在 C/C++ 语言中也是这么用的。 将你所学的知识用在自己的小程序上吧。 我们的下一讲将讨论音频的处理,也会使用我们此处所学的读写文件的命令做一个小程序。 |
>> 相关资讯:
上一篇:PSP网上冲浪:OPERA浏览器使用指南 下一篇:随心听音乐!PSP音乐播放插件Music prx cfw相关文章

热门文章

推荐文章

