我希望每次球击中球时我都会在比赛中加1分。(这是一场乒乓球比赛)我也希望比赛能够保存高分。这是我尚未制作的游戏中唯一的元素。如果有人能提供帮助那就太棒了。
答案 0 :(得分:3)
您可以更轻松地解决问题..
只需为此分数声明一个变量..
local score=0
然后每当它击中球拍时,将得分变量增加1。所以在碰撞函数中插入编码,如下所示:
local function onCollision(event)
{
score=score+1
}
ball.collision=onCollision
ball:addEventListener("collision",ball)
最后当你需要保存你的高分时(在游戏结束后),你可以使用偏好而不是json来进行更大的编码。
local preference= require "preference"
local highscore=0
preference.save{highscore=score}
如果要显示高分,请使用以下内容:
highscore_value=preference.getValue("highscore")
display.newText(highscore_value,0,0,nil,30)
这对你的问题可能有用!!
答案 1 :(得分:1)
您可以将高分保存到json文件。
这是一个演示:
local json = require"json"
----------------------------------------------------------------
local M = {} --- useful functions
function M.load_json_from_file(ffn)
if ffn == nil then return nil end
local fhd = io.open(ffn, "rb")
if fhd ~= nil then
local contents = fhd:read("*a")
fhd:close()
return M.formatTable(json.decode(contents))
else
return nil
end
end
function M.save_json_to_file(filepath, _table)
local fhd = io.open(filepath, "wb")
if fhd == nil then return false end
local string4save = json.encode(_table)
fhd:write(string4save)
fhd:write("\r\n")
fhd:close()
return true
end
function M.formatTable(t)
local arr = {}
for k, v in pairs(t) do
local num_k = tonumber(k)
if type(v) == "table" then
if num_k ~= nil then
arr[num_k] = M.formatTable(v)
else
arr[k] = M.formatTable(v)
end
else
if num_k ~= nil then
arr[num_k] = v
else
arr[k] = v
end
end
end
return arr
end
------------------------------------------------------------------
local test_arr = {
[2] = 34,
[7] = "asd",
str = "asas"
}
local fn = system.pathForFile("test.txt", system.DocumentsDirectory)
local is_succeed = M.save_json_to_file(fn, test_arr)
print("is_succeed", is_succeed)
local read_json_from_file = M.load_json_from_file(fn)
for k, v in pairs(read_json_from_file) do
if test_arr[k]~=v then
print("not equal")
end
end