Реализация игры «Инь-Ян» - Java
Формулировка задачи:
Доброго времени суток. Я делаю курсовой проект на Java и столкнулся с проблемой, но обо всём по порядку.
Краткая постановка задачи.
Игра «Инь-Ян» представляет собой клеточный автомат, состояния ячеек и правила переключения которого приближённо отражают закон единства и борьбы противоположностей. Ячейки автомата имеют три состояния: пустая ячейка (мёртвая), живая ячейка Инь и живая ячейка Ян. Соседние по-Муру ячейки (у каждой ячейки их 8), если они живые, называются соседями. Правила переключения определены таким образом, чтобы популяции ячеек Инь и Ян противоборствовали, но не могли развиваться друг без друга. Вот эти правила:
1. Рождение. У пустой ячейки ровно три соседа (живых), и они не все одинаковые – в ней рождается Ян, если: среди соседей только один Ян, или Инь, среди соседей только один Инь.
2. Гибель от перенаселения (одиночества). Живая ячейка, имеющая больше четырех (меньше двух) соседей, умирает от перенаселения (от одиночества);
3. Гибель в неравном противостоянии. У живой ячейки ровно четыре соседа, из которых большинство – противоположного типа – ячейка умирает.
Начальные конфигурации формируются случайно (с помощью генератора случайных чисел для заданных вероятностей Инь и Ян). Эволюция, порождаемая заданной начальной конфигурацией состояний клеток, может быть изучена в общем случае только путём её пошагового воспроизведения. Однако для каждого значения вероятности генерации можно отследить статистику результата через n шагов и говорить в каком случае будет больше вероятность вырождения автомата за заданное количество шагов.
Готов уже весь код и текст работы, но есть загвоздка - где-то в программе закралась ошибка и в итоге вся популяция инь-ян погибает на третьем ходу, симуляции жизни не происходит. У меня, честно сказать, уже глаза замылились на эту работу, сколько не анализирую код, а проблему найти не могу. Помогите отследить ошибку.
В архиве исходники классов проекта.
Решение задачи: «Реализация игры «Инь-Ян»»
textual
Листинг программы
if ((countingReps(neighbors, 1) + countingReps(neighbors, 2)) > 4 || (countingReps(neighbors, 1) + countingReps(neighbors, 2)) < 2) { oneStepOfGameArray[i][j] = 0; } else if ((countingReps(neighbors, 0) == 4) && (countingReps(neighbors, 2) != 2)) oneStepOfGameArray[i][j] = 0; else if ((countingReps(neighbors, 1) + countingReps(neighbors, 2)) == 3 && oneStepOfGameArray[i][j] == 0) { if (countingReps(neighbors, 1) == 1) oneStepOfGameArray[i][j] = 1; else oneStepOfGameArray[i][j] = 2; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д