2014-12-18 2 views
1

Я делаю игру с использованием LibGDX, и идея игры состоит из четырех кнопок с четырьмя различными цветами на них (красный, зеленый, желтый и синий). Затем есть круг, который проходит через нижнюю часть экрана, который является одним из четырех цветов, и вы выбираете, какой цвет он перед тем, как он попадает в конец экрана, и если вы успешно сделаете это, он сбрасывается как другой цвет, и вы повторяете это пока вы не проиграете (он также ускорится, тем больше очков вы получите). Там, где я застрял, я хочу добавить функцию, чтобы каждый раз, когда вы получаете точку, она будет рандомизировать 4 цвета кнопок. Вот диаграмма.LibGDX/Java Game - Создание 4 случайных цветов

diagram1

diagram2

Моя проблема, я не знаю, как бы я ranomize эти цвета без два или более из них оказывается в такой же цвет. То, как я рандомизировал нижний цвет, просто использует int RandomColor = MathUtils.random(1, 4);, а затем, исходя из того, какое число становится, каким цветом он становится, например, 1 = красный, 2 = синий, ect.

+0

Будет ли это работать для вас, чтобы иметь запас, скажем, 20 цветов, которые сильно отличаются друг от друга; а затем выбрать четыре из них наугад? –

+0

Это может сделать игру более интересной. – freemann098

+0

О, ты просто имел в виду, что ты держишь красный, желтый, зеленый и синий; но обменивать их вокруг? Извините, я неправильно понял ваш вопрос. –

ответ

0
  1. Создайте массив с 4 ячейками (для каждой «плитки»).
  2. У вас есть список (ArrayList, LinkedList - у обоих есть плюсы и минусы, вы обязательно должны прочитать о них) со всеми доступными фрагментами (ссылайтесь на них как на имена, идентификаторы или объекты, это не имеет значения).
  3. Случайно выберите один из элементов списка и вставьте его в первую ячейку массива, затем удалите этот элемент из списка.
  4. Следуйте шагу 3, пока список не будет пуст.
  5. Повторно инициализировать список для дальнейшего использования.

Как вы уже сказали, вы уже поняли, как выбрать случайный круг, который движется ниже плиток.

+0

Попробуй это, если я заставлю его работать так, как я этого хочу, я проверю это как ответ. – freemann098

+0

Я в конечном итоге использовал списки, но перетасование получилось лучше. – freemann098