Реализация игры «Инь-Ян» - 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;
                }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5