【问题标题】:High-Score Leaderboard system issue高分排行榜系统问题
【发布时间】:2019-10-22 20:53:11
【问题描述】:

我在 android studio 上制作了一款游戏,用户必须在死前收集尽可能多的积分。我已经建立了一个排行榜系统,所以如果用户获得高分,他们可以输入他们的名字,它将显示在排行榜上。我有一个游戏结束屏幕,当用户死亡时会出现,并且在该屏幕中我有一个用于排行榜屏幕的按钮。但唯一的问题是,如果用户获得了高分,则必须单击该按钮才能进入排行榜屏幕以输入他们的名字。我想要这样,如果用户获得高分,他会在他死后自动进入排行榜屏幕,而不是游戏结束屏幕。

所以我的问题是,如果用户获得高分而不是游戏结束,是否有人知道如何让用户进入排行榜类?

我已经尝试在我的排行榜类中创建一个静态 int "m",并将它放在用户可以放置的第 1、第 2 和第 3 个位置下,并说如果(分数 > m)然后转到排行榜屏幕,但我意识到这行不通,因为我的 m 等于 1,2 和 3

我的代码:

排行榜类

if(score > scoreSP){
            scoreTB = scoreSB;
            scoreSB = scoreSP;
            editorr.putInt("scoreSB", scoreSB);
            editorrr.putInt("scoreTB", scoreTB);
            scoreSP = score;
            editor.putInt("scoreSP", scoreSP);
            editor.commit();
            editorr.commit();
            editorrr.commit();
            scoreName = 1;
            m = 1;

 }else
        if(score > scoreSB && score <= scoreSP){
            scoreTB = scoreSB;
            editorrr.putInt("scoreTB", scoreTB);
            scoreSB = score;
            editorr.putInt("scoreSB", scoreSB);
            editorr.commit();
            editorrr.commit();
            scoreName = 2;
            m =2;

  }else
        if(score <= scoreSB && score > scoreTB){
            scoreTB = score;
            editorrr.putInt("scoreTB", scoreTB);
            editorrr.commit();
            scoreName = 3;
            m = 3;
}

游戏引擎类

if (lives == 0) {
            gameState = 2;
            GameActivity.end(score);

            if(score > Leaderboard.m){
                GameActivity.endd(score);
            }
        }

游戏活动类

static void end(int score){
    AppConstants.firstLeaderboard = true;
    Context context = AppConstants.gameActivityContext;
    Intent intent = new Intent(context, GameOver.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
    AppConstants.score = score;
    context.startActivity(intent);
    ((Activity) context).finish();
}
static void endd(int score){
    Context context = AppConstants.gameActivityContext;
    Intent intent = new Intent(context, Leaderboard.class);
    intent.putExtra("score", AppConstants.score);
    context.startActivity(intent);
    ((Activity) context).finish();
}

GameActivity.end(score);将我带到游戏结束屏幕和 GameActivity.endd(score);将我带到排行榜屏幕。

我也试过改变他们两个的位置,但这似乎不起作用

【问题讨论】:

    标签: java leaderboard


    【解决方案1】:

    假设其余的都是正确的,你需要解决这个问题:

    if (lives == 0) {
                gameState = 2;
                GameActivity.end(score);
    
                if(score > Leaderboard.m){
                    GameActivity.endd(score);
                }
            }
    

    到这里:

    if (lives == 0) {
                gameState = 2;
    
                if(score > Leaderboard.m){
                    GameActivity.endd(score);
                } else GameActivity.end(score);
            }
    

    【讨论】:

    • TO 声明 m 不是分数,而是排行榜上的排名(? - 我还没有完全弄清楚 SB、TB 或 SP 究竟代表什么),所以它可能更好存储获得排行榜所需的最低分数,然后再进行排名计算。
    • 是的,我错过了这个。如果您想决定要显示哪个屏幕,您肯定需要将最好的分数存储在一些可用的变量中。
    • 谢谢!我试试看
    猜你喜欢
    • 1970-01-01
    • 2021-10-07
    • 2015-11-22
    • 2021-08-08
    • 2012-08-04
    • 2019-07-26
    • 1970-01-01
    • 2016-10-21
    • 2023-03-30
    相关资源
    最近更新 更多