javafx游戏排行榜

javafx游戏排行榜,java,javafx-8,Java,Javafx 8,大家好,我的社区!我正在学习编程,正在为移动设备开发一款“猎鸭”风格的javafx游戏,其中有3种鸭子在屏幕上水平移动。每次单击某一类型的鸭子时,该类型的鸭子在其名称旁边都会得到一个点 我想做的是在游戏结束后显示一个全球排行榜,这样你就可以看到在所有玩过游戏的人中,哪种鸭子被点击的次数最多。每个人都喜欢用什么方式来实现这样的事情?如果你有任何问题,请随时问我。谢谢,-H.J 编辑(太平洋标准时间2016年4月20日下午1:40):因为我原来的帖子被认为含糊不清而被搁置,所以我写了一个非常基本的示

大家好,我的社区!我正在学习编程,正在为移动设备开发一款“猎鸭”风格的javafx游戏,其中有3种鸭子在屏幕上水平移动。每次单击某一类型的鸭子时,该类型的鸭子在其名称旁边都会得到一个点

我想做的是在游戏结束后显示一个全球排行榜,这样你就可以看到在所有玩过游戏的人中,哪种鸭子被点击的次数最多。每个人都喜欢用什么方式来实现这样的事情?如果你有任何问题,请随时问我。谢谢,-H.J

编辑(太平洋标准时间2016年4月20日下午1:40):因为我原来的帖子被认为含糊不清而被搁置,所以我写了一个非常基本的示例程序来帮助解释我要做的事情。在我的菜单场景中,我想检索在全球范围内玩过此游戏的所有人在红色和绿色矩形上的点击总数,当前为
globalScoreRed
globalScoreGreen
,设置为0,因为这是我需要帮助的部分之一

在playGame场景中,当您点击GG按钮时,我希望
得分红色
得分绿色
提交到排行榜,排行榜将在从菜单屏幕查看时调整值

这是一个非常糟糕的游戏,我可以证明这不是一个我喜欢玩的游戏,但我正在尝试学习如何发送值并检索它们的概念。再次感谢您查看我的帖子并提供帮助,非常感谢您

package LeaderboardHelp;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class LeaderboardHelpMain extends Application {

Stage window;
Scene menu, playGame;

private Rectangle targetRed = new Rectangle(40, 40);
private Rectangle targetGreen = new Rectangle(40, 40);

private int scoreRed = 0;
private int scoreGreen = 0;

private Text redScoreText = new Text("Red: " + scoreRed);
private Text greenScoreText = new Text("Green: " + scoreGreen);

private int globalScoreRed = 0;
private int globalScoreGreen = 0;

private Text globalRedScoreText = new Text("Worldwide Red Clicks: " + globalScoreRed);
private Text globalGreenScoreText = new Text("Worldwide Green Clicks: " + globalScoreGreen);

private boolean playable = false;


public static void main(String[] args) { launch(args); }


@Override
public void start(Stage primaryStage) throws Exception {
    window =  primaryStage;

    Button startButton = new Button("Start!");
    startButton.setOnAction(e -> window.setScene(playGame));

    //menu scene layout
    VBox menuLayout = new VBox(20);
    menuLayout.getChildren().addAll(globalGreenScoreText, globalRedScoreText, startButton);

    menu = new Scene(menuLayout, 600, 600);

    Button ggButton = new Button("GG");
    ggButton.setOnAction(e -> window.setScene(menu));

    targetRed.setFill(Color.RED);
    targetRed.setOnMouseClicked(event -> {
        scoreRed += 1;
        redScoreText.setText("Red: " + scoreRed);
    });

    targetGreen.setFill(Color.GREEN);
    targetGreen.setOnMouseClicked(event -> {
        scoreGreen += 1;
        greenScoreText.setText("Green: " + scoreGreen);
    });

    targetRed.setTranslateX(50);
    targetRed.setTranslateY(50);

    targetGreen.setTranslateX(100);
    targetGreen.setTranslateY(50);

    greenScoreText.setTranslateX(500);
    greenScoreText.setTranslateY(50);

    redScoreText.setTranslateX(500);
    redScoreText.setTranslateY(70);

    ggButton.setTranslateX(250);
    ggButton.setTranslateY(250);
    //game layout
    Pane gameLayout = new Pane();
    gameLayout.getChildren().addAll(targetRed, targetGreen, redScoreText, greenScoreText, ggButton);
    playGame = new Scene(gameLayout, 600, 600);

    window.setScene(menu);
    window.setTitle("Leaderboard Helper");
    window.show();



    }
}

编辑(太平洋标准时间4/20/16晚上8:45),所以在更多阅读之后,我遇到了oracles EchoServer示例,它让我走上了正轨(不确定它是正确的还是错误的)。我正在考虑让服务器将提交的分数保存在一个文本文件中。当客户端调用
菜单
场景时,它将连接到服务器并请求分数。服务器将读取文本文件并将分数发送到应用程序客户端。当按下
GG
按钮时,分数被发送到服务器,服务器读取文本文件,将新闻分数添加到旧分数,然后覆盖分数文本文件。有更好的方法吗?我确实希望这是可扩展的,允许许多用户同时添加他们的分数

  • 需要一个web服务。一个简单的,可能需要鸭子的类型和它被点击的次数

    POST/duck/{type}/{clicks}

  • web服务需要使用HTTPS或HMAC进行安全保护,或者更好的是两者都使用

  • 对于HMAC,需要在代码中隐藏和模糊密钥。安全性永远是脆弱的,它意味着付出的努力不值得为任何可能的黑客付出这么小的代价
  • 为了正确地执行HMAC,在创建摘要(又名签名)时应该使用NONCE。NONCE应具有较短的过期时间。许多实现使用时间戳作为NONCE,其他实现使用web服务提供的NONCE。为了简单起见,我会选择前者。如果NONCE超过2秒或3秒,则拒绝请求
  • 需要一个web服务。一个简单的,可能需要鸭子的类型和它被点击的次数

    POST/duck/{type}/{clicks}

  • web服务需要使用HTTPS或HMAC进行安全保护,或者更好的是两者都使用

  • 对于HMAC,需要在代码中隐藏和模糊密钥。安全性永远是脆弱的,它意味着付出的努力不值得为任何可能的黑客付出这么小的代价
  • 为了正确地执行HMAC,在创建摘要(又名签名)时应该使用NONCE。NONCE应具有较短的过期时间。许多实现使用时间戳作为NONCE,其他实现使用web服务提供的NONCE。为了简单起见,我会选择前者。如果NONCE超过2秒或3秒,则拒绝请求

  • Hi gamedev可能更适合这个问题Hi BevynQ,我编辑了我的帖子,并添加了一个代码示例,你能不能暂停我的帖子?谢谢“我在考虑让服务器将提交的分数保存在一个文本文件中…”不。将分数保存到关系数据库中。写下休息功能,服务器保存一个分数,检索最高分数,并检索特定用户的最高分数。感谢帮助Gilbert Le Blanc,我仍然相当新的java和Havnt听到休息功能,直到你提到它。我会在早上详细调查,因为现在已经很晚了。CheersHi gamedev可能更适合这个问题Hi BevynQ,我编辑了我的帖子,并添加了一个代码示例,你能停止我的帖子吗?谢谢“我在考虑让服务器将提交的分数保存在一个文本文件中…”不。将分数保存到关系数据库中。写下休息功能,服务器保存一个分数,检索最高分数,并检索特定用户的最高分数。感谢帮助Gilbert Le Blanc,我仍然相当新的java和Havnt听到休息功能,直到你提到它。我会在早上详细调查,因为现在已经很晚了。谢谢Jose Martinez的输入,我添加了一个代码示例,希望能够阐明我想要实现的目标。感谢Jose Martinez的输入,我添加了一个代码示例,希望能够阐明我想要实现的目标。