LibGDX : 通过 GameOverScreen class 在 json 文件中保存用户数据并创建文本框

LibGDX : Saving user data through a GameOverScreen class in a json file and creating a textbox

我正在尝试在 LibGDX 中编写类似 Flappy Bird 的程序。 现在我想实现一个 class GameOverScreen,显示不同的功能:scorehighscoreplacementname玩家的。

我已经将 score 实现为 public static int score = 0;。每当我的图形通过一个对象时,分数就会增加一个。

在我的Towerclass中,我有以下方法:

public boolean collides(Wizard wizard) {
    if (position.x < wizard.getX() + wizard.getWidth()) {
        return (Intersector.overlaps(wizard.getBoundingRectangle(), barUp)
                || Intersector.overlaps(wizard.getBoundingRectangle(), barDown));
    }
    return false;
}

因此每次向导与对象碰撞时,GameOverScreen 应该出现。

如果用户达到了更高的 score,那么 highscore = GameWorld.score; 我想将其实现为一种方法:

此外,应该会出现一个文本框,用户可以在其中输入自己的名字然后保存。

为了保存数据,我必须创建一个名为 "highscore.json" 的文件,该文件应包含有关位置的信息、球员的姓名和 JSON 格式的得分。要更改 "highscore.json" 文件中的数据,我必须使用 Gson。

我遇到的问题是我不知道 GameOverScreen class 中到底需要写什么(f.ex。如何在 LibGDX 以及如何让屏幕在碰撞后打开), to

因为我不太熟悉 LibGDX 并且我从未使用过 JSON 文件。

我无法在 Google/github 等上找到合适的 GameOver class,因为它们太具体了。

有人能帮帮我吗?

要获得文本形式的 Highscore,您只需将其转换为字符串

int highScore = 10;
string highScoreText = String.valueOf(highScore);

要获得玩家的位置,您需要检索所有存储的高分并对它们进行排名(您可以使用 Arrays.Sort 轻松实现,请注意它们将按升序排列,你想要降序..然后你可以以相反的顺序遍历数组以获得第一位的更高分数)


要让用户写自己的名字,就有点复杂了。您将需要 Libgdx Scene2D UI。我不知道您目前是否在使用它,但如果您不使用,则需要对您的代码进行一些结构性更改。

一旦您弄清楚如何转换为场景系统并与演员一起工作,您就可以添加 Scene2D 提供的所有控件 UI:

  • 按钮
  • 对话框
  • 文本字段
  • 还有很多..

要将数据保存为 Json 格式,您可以使用 LibGDX 附带的 Json API。看看这个线程 Write to Json using libGDX