【问题标题】:LibGDX : Saving user data through a GameOverScreen class in a json file and creating a textboxLibGDX:通过 json 文件中的 GameOverScreen 类保存用户数据并创建文本框
【发布时间】:2019-06-05 09:13:51
【问题描述】:

我正在尝试在 LibGDX 中编写类似 Flappy Bird 的程序。 现在我想实现一个类GameOverScreen,它显示了不同的特性:播放器的score、highscore、placement和name。

我已经将score 实现为public static int score = 0;。每次我的人物经过一个物体时,分数都会增加一。

在我的Tower 类中,我有以下方法:

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 类中究竟需要写什么(例如,如何在 LibGDX 中创建文本框以及如何在碰撞后打开屏幕), 到

  • 以文本形式获取高分
  • 获取展示位置并让用户写下他们的名字
  • 以 JSON 格式保存数据(以便可编辑)

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

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

谁能帮帮我?

【问题讨论】:

    标签: java json libgdx textbox gson


    【解决方案1】:

    要将高分作为文本,您只需将其转换为字符串

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

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


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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      • 1970-01-01
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多