Игра "Жизнь" на Си - C (СИ)
Формулировка задачи:
Здравствуйте!
Было дано задание написать игру "жизнь" без графики на языке Си. Сразу говорю, что в программировании я пока новичок, так что много чего могу не знать.
Вот мой принцип реализации:
У нас есть 2 двумерных массива, A и Б, А отвечает за текущее поколение, а Б за следующее.
В самом начале "клетки" массива А рандомно заполняются значениям(0 - если клетка мертва и 1 - если есть жизнь).
Далее с помощью циклов for мы проверяем каждую клетку массива Б, где условие - если у клетки б с индексами, к примеру, 3 и 5 значение 0,то тогда если есть 3 живых соседа из массива А( то есть клетки массива А но с координатами 3+-1 и 5+-1), то клетке Б присваивается значение 1, если у клетки уже было значение 1(проверяем такую же клетку из массива А), то если у нее есть 2 или 3 живых соседа из массива А, то ничего не делаем и клетка продолжает жить, а если больше или меньше то присваиваем 0.
После проверки каждой клетки мы все полученные значения массива Б записываем в массив А и так по кругу.
Признак окончания игры - если после выполнения цикла( еще до того как мы перенесли значения из б в а) значения в массивах уже равны(получается статическая фигура) или у всех клеток массива Б - значение 0.
Вопрос:
Как мне задать условие так, чтобы он задавал значение 1 если ТОЛЬКО 3 соседа имеют значение 1. Можно конечно вручную в if вбивать (Если M[i+1][j-1] =1 и так далее), но это очень долго и муторно... Надеюсь вы мне поможетеРешение задачи: «Игра "Жизнь" на Си»
textual
Листинг программы
neighbors += M[x + i][y + j];
Объяснение кода листинга программы
В данном коде выполняется сложение значения переменной neighbors
с элементом массива M
по индексам x + i
и y + j
.
Список действий:
- Выполняется приведение типов значения
neighbors
к типу массиваM
. - По индексам
x + i
иy + j
происходит обращение к элементу массиваM
. - Полученное значение прибавляется к переменной
neighbors
.