1 Вопрос: Используя jfugue, как я могу генерировать случайные музыкальные строки (используя player.play) из массива?

вопрос создан в Wed, May 8, 2019 12:00 AM

Я использую Jfugue в Eclipse, и у меня есть список музыкальных строк в коде. Когда я запускаю код, он воспроизводит их все, но я хочу воспроизводить по одному в случайном порядке.

Пока что я использую:

Pattern pattern = new Pattern ("A");
Player.play(A);
Pattern pattern = new Pattern ("B");
Player.play(B);

Я пытался использовать "Random random = new Random ();" Но это не сработало, и я не знаю, как это реализовать.

Я также пытался повторно использовать генератор случайных слов:

  for(int i = 0; i < numberOfTest; i++) {
    int index = (int)(Math.random() * 10);
    System.out.println(strings[index]);

Но я не знаю, как заменить строки слов на музыкальные строки:

В целом большинство моих проблем проистекает из-за недостатка знаний о правильном синтаксисе, особенно в Jfugue.

    
3
  1. Подсказки: A) вы должны следовать соглашениям об именах java. Я предполагаю, что «Player» является (локальной) переменной, поэтому вы должны называть ее p слоем (имена переменных идут в CamelCase в Java B), использовать только те теги, которые имеют отношение к вашему вопросу. Тип IDE или редактора, который вы используете ... не имеет никакого отношения к этому вопросу.
    2019-05-09 05: 45: 30Z
1 ответ                              1                         

Поместите их в список, а затем перемешайте:

List<Pattern> allPatterns = Arrays.asList(new Pattern ("A"), new Pattern ("B"), ... more patterns);
Collections.shuffle(allPatterns);

И, пожалуйста, обратите внимание: вышеприведенный текст является простым и простым Java, он работает независимо от какой-либо конкретной среды, такой как jfugue.

Для игры вам просто нужно сказать игроку, чтобы он воспроизводил паттерны в порядке вашего перетасованного списка:

// by using the for-each loop
for (Pattern onePattern : allPatterns) {
   player.play(onePattern);
}

// alternatively, turn the list back into an array and play that
player.play(allPatterns.toArray(new Pattern[0]);
    
2
2019-05-09 05: 43: 44Z
  1. @ WolfgangAmadeusMozart Смотрите мои обновления, пожалуйста. Предполагая, что игрок играет «узоры»; конечно, вы должны сказать игроку использовать порядок из того случайного списка, который вы собрали!
    2019-05-09 05: 39: 03Z
  2. @ WolfgangAmadeusMozart Я не эксперт по jfugue, поэтому я не могу сказать вам разницу между: A) многократным вызовом play () в цикле и B ) вызывая его один раз, передавая массив значений. Оба решения, в конце концов, воспроизводят один и тот же «набор» шаблонов. Но A) вызывает метод несколько раз, а B) вызывает его только один раз.
    2019-05-09 14: 48: 33Z
  3. @ WolfgangAmadeusMozart И чтобы ответить на другой ваш вопрос: то, что я вам показал ... должно каждый раз воспроизводить случайный порядок. Когда вы вызываете shuffle () и у вас достаточно элементов в этом списке ... вы должны каждый раз получать новый порядок. Итак, если ваш текущий код не выполняет то, что вы хотите ... пожалуйста, напишите новый вопрос, включите текущий код и объясните, что там происходит, и как это неожиданно. Пожалуйста, не используйте комментарии, чтобы возвращаться с большим количеством вопросов. Это не то, как этот сайт намерен происходить.
    2019-05-09 14: 49: 55Z
источник размещен Вот