Вопрос:

Android Studio, преобразование автономной игры в онлайн

android firebase google-play google-play-services

105 просмотра

1 ответ

12 Репутация автора

Я создал автономную викторину, в которой я задаю 10 случайных вопросов пользователю. Эти вопросы взяты из моей базы данных Firebase и хранятся в архиве. Моя программа каждый раз выбирает случайный вопрос из массива и отображает вопрос. Вот кусок моего кода

 public void askQuestion(){
        Random rnd=new Random();
        int index = rnd.nextInt(questionList.size());
        Info theQuestion=questionList.get(index);  
        question.setText(theQuestion.getQuestion());
        a.setText(theQuestion.getA());
        b.setText(theQuestion.getB());
        c.setText(theQuestion.getC());
        d.setText(theQuestion.getD());
        answer=theQuestion.getAnswer();
    }
//Info is the name of the object for my questions. questionList is an arraylist of type info where I keep the all questions I got from firebase.

Вот моя проблема (ы).

  1. Я прочитал, что я должен использовать сервисы Google Play, чтобы сделать игру онлайн. Есть ли лучший подход? Как лучше всего начать (ссылка будет оценена)
  2. Могу ли я использовать это упражнение в своей онлайн-игре или я должен изменить его? Будет ли случайность одинаковой у обоих пользователей? Я хочу задать им те же вопросы.
Автор: Freshia Источник Размещён: 11.03.2017 10:38

Ответы (1)


0 плюса

274518 Репутация автора

Решение

Будет ли случайность одинаковой у обоих пользователей?

Из документации Android по Randomклассу :

Если два экземпляра Randomсоздаются с одним и тем же начальным числом, и для каждого выполняется одна и та же последовательность вызовов методов, они будут генерировать и возвращать идентичные последовательности чисел.

Так что просто убедитесь, что вы создали свой Randomобъект с инициализатором, который одинаков между игроками:

Random rnd=new Random(42);

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

Calendar c = new GregorianCalendar(); // see http://stackoverflow.com/q/6850874
c.set(Calendar.HOUR_OF_DAY, 0); //anything 0 - 23
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Date day = c.getTime(); //the midnight, that's the first second of the day.
Random rnd=new Random(day.hashCode());
Автор: Frank van Puffelen Размещён: 11.03.2017 03:20
Вопросы из категории :
32x32