Реализация игры «Инь-Ян» - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д