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
,显示不同的功能:score
、highscore
、placement
和 name
玩家的。
我已经将 score
实现为 public static int score = 0;
。每当我的图形通过一个对象时,分数就会增加一个。
在我的Tower
class中,我有以下方法:
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
- 以文本形式获取高分
- 获得展示位置并让用户写下他们的名字
- 以 JSON 格式保存数据(以便可编辑)
因为我不太熟悉 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
我正在尝试在 LibGDX 中编写类似 Flappy Bird 的程序。
现在我想实现一个 class GameOverScreen
,显示不同的功能:score
、highscore
、placement
和 name
玩家的。
我已经将 score
实现为 public static int score = 0;
。每当我的图形通过一个对象时,分数就会增加一个。
在我的Tower
class中,我有以下方法:
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
- 以文本形式获取高分
- 获得展示位置并让用户写下他们的名字
- 以 JSON 格式保存数据(以便可编辑)
因为我不太熟悉 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