gpt4 book ai didi

java - 使用 libgdx 写入 json 文件

转载 作者:行者123 更新时间:2023-11-30 01:06:52 26 4
gpt4 key购买 nike

我是这个论坛的新手,我使用 libgdx 制作了一个 android 应用程序,我想将玩家得分保存在一个 json 文件中。我可以读取 json 文件以取回分数,但如果玩家得分更高,我不知道如何在 json 文件上写入新的最佳分数。找了很多网站都没有找到好的...

我的 json 文件是这样的:

{ "scores":[
{
"level":1,
"bestScore":100
},
{
"level":2,
"bestScore":100
},
{
"level":3,
"bestScore":100
},
{
"level":4,
"bestScore":100
},
{
"level":5,
"bestScore":100
},
{
"level":6,
"bestScore":100
},
{
"level":7,
"bestScore":100
},
{
"level":8,
"bestScore":100
},
{
"level":9,
"bestScore":100
},
{
"level":10,
"bestScore":100
},
{
"level":11,
"bestScore":100
},
{
"level":12,
"bestScore":100
},
{
"level":13,
"bestScore":100
},
{
"level":14,
"bestScore":100
},
{
"level":15,
"bestScore":100
},
{
"level":16,
"bestScore":100
},
{
"level":17,
"bestScore":100
},
{
"level":18,
"bestScore":100
},
{
"level":19,
"bestScore":100
},
{
"level":20,
"bestScore":100
}
]
}

例如,如果玩家在级别 1 中得分为 30,我想将级别 1 中的“100”替换为“30”。

我希望有人能帮助我!谢谢,我在等你的答案!

最佳答案

好吧,我可能会建议您采用稍微不同的方法。我假设你使用 Libgdx Json Api .首先,我们需要 json 的 Java 表示,例如:

public class JsonResult {
private ObjectMap<String, Integer> scores;

public ObjectMap<String, Integer> getScores() {
return scores;
}

public void setScores(ObjectMap<String, Integer> scores) {
this.scores = scores;
}
}

scores 映射中,键是带有实际级别编号的 level_ 前缀(例如 level_1),值是分数那个水平。

这样你的 json 结构将类似于:

{  
"scores":{
"level_1":100,
"level_2":100,
"level_3":200,
"level_4":300
....
}

那么,当您保存新乐谱时:

public void saveResult(Integer level, Integer newScore) {
JsonResult jsonResult = json.fromJson(JsonResult.class, resultJson);
ObjectMap<String, Integer> scores = jsonResult.getScores();
String levelKey = "level_" + level;
Integer scoreForLevel = scores.get(levelKey);
if (newScore > scoreForLevel) {
scores.put(levelKey, newScore);
jsonResult.setScores(scores);
json.toJson(jsonResult, resultJson);
}
}

逻辑很简单:

  1. 从文件中解析JsonResult对象
  2. 从该对象获取该级别的分数
  3. 与新分数比较并根据需要重写。

创建新的 json 文件:

public void resetResultFile() {
JsonResult jsonResult = new JsonResult();
ObjectMap<String, Integer> initialScores = new ObjectMap<>(1);
initialScores.put("level_1", 0);
jsonResult.setScores(initialScores);
json.toJson(jsonResult, resultJson);
}

关于java - 使用 libgdx 写入 json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38812014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com