Проблема системы лидеров рейтинга - PullRequest
0 голосов
/ 07 июня 2019

Я создал игру на андроид-студии, в которой пользователь должен набрать как можно больше очков, прежде чем умрет.Я настроил систему списка лидеров, поэтому, если пользователь получает рекорд, он может ввести свое имя, и оно будет отображаться в списке лидеров.У меня есть экран игры, который появляется, когда пользователь умирает, и на этом экране у меня есть кнопка для экрана списка лидеров.Но единственная проблема заключается в том, что пользователь должен нажать на эту кнопку, чтобы перейти на экран списка лидеров, чтобы ввести свое имя, если он получил рекорд.Я хочу, чтобы, если пользователь получает рекорд, он автоматически попадает на экран списка лидеров, когда он умирает, а не на экран игры.

Так что мой вопрос: есть ли у кого-нибудь идеи о том, как заставить пользователя пойти?в класс лидеров, если они получают рекорд, а не игру за классом?

Я пытался сделать статический 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 (оценка);выводит меня на экран игры и GameActivity.endd (оценка);выводит меня на экран списка лидеров.

Я также пытался изменить положение двух из них, но это, похоже, не работает

1 Ответ

0 голосов
/ 07 июня 2019

Если все остальное правильно, вам нужно исправить это:

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);
        }
...