Класс имеет эффективный метод перетасовки, который можно скопировать, чтобы не зависеть от него:
/**
* Usage:
* int[] array = {1, 2, 3};
* Util.shuffle(array);
*/
public class Util {
private static Random random;
/**
* Code from method java.util.Collections.shuffle();
*/
public static void shuffle(int[] array) {
if (random == null) random = new Random();
int count = array.length;
for (int i = count; i > 1; i--) {
swap(array, i - 1, random.nextInt(i));
}
}
private static void swap(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
Я рассматривал и Pygame и Pyglet для маленького 2D стрелка, и после рассмотрения исходного кода, и некоторые учебные руководства пошли с Pyglet. Я был очень доволен результатами.
Pyglet сразу работал и был приятен работать с, и концептуально очень чистый. Это, конечно, сделало, чтобы Pythonic чувствовал мне: Вы могли получить простой и читаемый пример, идущий очень быстро, и он использует декораторов успешно для обработки событий. Это также не вызвало конкретную структуру программы, которая облегчила для меня смешиваться в моделировании физики Pymunk ( http://code.google.com/p/pymunk/ ).
, В то время как это основано на OpenGL и можно использовать те функции для специальных эффектов, я смог сделать очень хорошо без любого ведома их.
Это также работает хорошо с py2exe и py2app, который важен, потому что большому количеству людей не установили интерпретатор Python.
На оборотной стороне, существует меньше информации об этом в сети, потому что это является более новым, а также меньше демонстрационных игр для взгляда на.
кроме того, это изменилось вполне немного от предыдущих версий, таким образом, некоторые учебные руководства, которые являются, там теперь устарели (существует "модернизированный цикл событий" и класс Sprite как основные дополнения.)
я рекомендовал бы загрузить примеры (существует хороший клон Астероидов, названный включенным Astraea), и видящий, нравится ли Вам стиль.
Я хотел бы добавить, что существует быстрая библиотека спрайта Rabbyt, который может быть хорошим дополнением для Pyglet.
Pygame: лицензия
LGPL Pyglet: лицензия
BSD Pygame полагается на библиотеки SDL в большой степени
Pyglet, является чистой библиотекой Python с меньшим количеством зависимостей, я думаю, что это требует, чтобы лучшее понимание OpenGL
Pygame было здесь в течение долгого времени, много людей использовало его
, Pyglet является новым lib
, Pygame приспособлен к разработке игр (курсоры, спрайты, поддержка джойстика/игрового планшета)
, Pyglet является более общей целью (хотя это имеет класс Sprite)
, я нашел также это обсуждение pyglet-пользовательского списка рассылки: от pygame+pyopengl до поросенка
Правовая оговорка: Я еще не использовал ни одного, только попробовал некоторые учебные руководства;-)
Посмотрев на оба pygame и pyglet Я обнаружил, что pyglet легче понять, и я смог написать простую игру в стиле прорыва за несколько дней.