Использование коллекций для перетасовки массива примитивных типов является немного избыточным ...
Достаточно просто реализовать функцию самостоятельно, используя, например, Fisher-Yates shuffle :
import java.util.*;
import java.util.concurrent.ThreadLocalRandom;
class Test
{
public static void main(String args[])
{
int[] solutionArray = { 1, 2, 3, 4, 5, 6, 16, 15, 14, 13, 12, 11 };
shuffleArray(solutionArray);
for (int i = 0; i < solutionArray.length; i++)
{
System.out.print(solutionArray[i] + " ");
}
System.out.println();
}
// Implementing Fisher–Yates shuffle
static void shuffleArray(int[] ar)
{
// If running on Java 6 or older, use `new Random()` on RHS here
Random rnd = ThreadLocalRandom.current();
for (int i = ar.length - 1; i > 0; i--)
{
int index = rnd.nextInt(i + 1);
// Simple swap
int a = ar[index];
ar[index] = ar[i];
ar[i] = a;
}
}
}
Вот некоторые ресурсы, которые я собрал несколько лет назад. Знаменитый Интеграция Verlet. Я также включаю ссылки на некоторые и коммерческие механизмы физики с открытым исходным кодом, которые я нашел в то время. Существует stackoverflow статья об этом предмете здесь: 2-я игровая физика?
Методы Физики
Книги
Механизмы Физики
Это - большое учебное руководство, которое демонстрирует 2D понятия физики с помощью флэш-памяти и не характерно для флэш-памяти. http://www.rodedev.com/tutorials/gamephysics/game_physics.swf
(источник: oreilly.com )
физика для разработчиков игр O'Reilly
Даже если Вы хотите изучить все это с самого начала, библиотека физики с открытым исходным кодом, которая хорошо кодируется и документируется, содержит намного больше информации, чем книга. Как заключают меня сделка с ситуацией x.. найдите в файлах, может быть быстрее, чем бумажный индекс.
Исходный ответ:
, Что, никакое упоминание о Box2D? Параллельный проект с открытым исходным кодом сотрудника снежной бури, имеет хорошее сообщество, и хорошо, работает отлично.
В моем (кратком) опыте с Box2D, интегрируя его с Игровым Разработчиком Крутящего момента, я нашел API чистым для использования, документация была четкой, это поддерживало все объекты физики, которые я ожидал (соединения в особенности были требованием), и сообщество выглядело дружелюбным и активным (когда-то около начала 2010 года).
Оценка по плакатам форума, также казалось, что менеджеры были восприимчивыми к исходным вкладам (который не нес багаж лицензии).
Это - островной решатель, казался довольно быстрым, как я ожидал от его репутации, не, что я сделал любое основное тестирование производительности.
Это - большой ресурс для записи Вашего первого механизма. Это находится в 3D, но очень легко преобразовать вниз в 2D. Я знаю по крайней мере одну крупную компанию, которая следовала этому учебному руководству для их внутреннего механизма, и я лично выполнил его шаги для своего собственного механизма. Он объясняет все основные понятия физики в основанной на пружине/импульсе физике и показывает Вам, как записать Вашу собственную межтерку.
F# имеет функцию, названную Единицы измерения , который делает размерный анализ для Вас, обеспечивая ошибки, если Вы понимаете его превратно. Например, если Вы говорите:
let distance : float<meters> = gravity * 3.0<seconds>
, Который привел бы к ошибке компиляции, так как сила тяжести является < meters/seconds^2> и не < метры>. Кроме того, так как F# является просто.NET, которую можно записать коду математики/физики в библиотеке классов и ссылке это от C#.
я был бы reccomend Вы проверять эти сообщения в блоге для получения дополнительной информации:
Andew KennedyЖурнал F # .NET опубликовал две статьи об этом:
Моделирование материалов из конечных элементов в реальном времени (15 июня 2008 г.).
Динамика твердого тела (15 января 2010 г.)