在lua中保存高分的问题

时间:2014-11-01 09:42:53

标签: file-io permissions lua corona

function saveScore()
    local path = system.pathForFile("scoredata001.txt", system.DocumentsDirectory)
    local file = io.open(path, "w")

    if file then
        local score=get_score() --The get_score() returns the value of current score which is saved in 'score'.
        local newScore = compareScore()
        local contents = tostring( newScore )
        file:write( contents )
        io.close( file )
        return true
    else
        print("Error: could not write Score")
        return false
    end
end

function loadScore()
    local path = system.pathForFile("scoredata001.txt", system.DocumentsDirectory)

    local contents = ""
    local file = io.open( path, "r" )
        if file then
            local contents = file:read( "*a" )
            local score = tonumber(contents);
            io.close( file )
            return score
        end
    print("Could not read scores from scoredata.txt")
    return nil
end

function return_highScore()
    local highscore=loadScore()
        if highscore==nil then 
            highscore=0
        end
    return highscore
end

function compareScore()
    local highscore=return_highScore()
    if highscore then
        local currscore=get_score()
            if highscore==0 then
                return highscore
            elseif currscore>highscore then 
                return currscore
            end
    end
    return true
end

function disp_permScore()
    local display_score=return_highScore()
    text_display2= display.newText("GAME OVER!\n BEST: " ..display_score, 0, 0, "Helvetica", 80)
    text_display2.x = centerX
    text_display2.y = centerY
    text_display2.alpha=1 

function gameOver()
    mainScreen()
    saveScore()
    disp_permScore()
end

(这是参考上一个问题Permission issues in lua

基本上我试图在lua中构建一个游戏(这是我的第一个游戏) 但是,我无法将高分保存到文件中。如果它被保存,那么我无法检索它们。 (简而言之,我总是在执行代码时遇到一些或其他错误/问题。

请查看上面的代码。我想显示高分和当前分数。目前的分数正在显示完美。这是我昨天晚上尝试过的。但是现在,高分并没有保存在文件中。 (即最佳总是显示0)此外,cmd说"无法从scoredata.txt读取分数。我无法找到我出错的地方。

请帮帮忙吗? 请告诉我哪里出错了? 另外,如果可能,请提供(或编辑)正确的代码吗?

1 个答案:

答案 0 :(得分:1)

这一行似乎有问题

if highscore==0
then
return highscore

这意味着您检查高分是否为0,如果是,则返回它而不是实际的高分。

此外,我不知道您的代码是否只是粘贴错误,但如果没有缩进代码,它就会变得非常难以阅读。再试一次,我再次注意它,现在错误变得非常容易发现。