Случайное заполнение arry истинными и ложными логическими значениями и другие вопросы в c # - PullRequest
0 голосов
/ 15 ноября 2018

В настоящее время учусь в университете, изучаю программирование, и у меня есть домашнее задание, которое я не могу решить.

Моя задача - создать игру жизни Конвея, в которой вы создаете массив, который вы должны заполнить «клетками». Эти клетки могут быть мертвыми и живыми, и вы можете случайным образом заполнить массив случайными мертвыми и живыми клетками. Моей первой мыслью было заполнить клетки нулями и единицами, ноль - мертвыми клетками, а единицы - живыми клетками. В игре есть несколько правил, например

- если живая клетка имеет 2 или менее живых соседей, она становится мертвой - если у живой клетки есть 2 или 3 живых соседа, она остается живой если живая клетка имеет 3 или более живых соседей, она становится мертвой - если у мертвой клетки есть 3 живых соседа, она становится живой

Эта игра продолжается, имеет несколько раундов, где все эти ячейки меняют свое состояние в соответствии с правилами. Я должен следить за изменениями состояния ячеек и отслеживать большинство чисел, когда оно осталось живым.

Мои вопросы: Должен ли я сделать новый класс? Должен ли я объявить состояние их с истиной / ложью или 0/1. Если я должен использовать true / false, как я могу случайным образом заполнить матрицу значениями true и false? -Как вы видите в правилах, я должен сказать, является ли ячейка живой или мертвой, прежде чем я реализую правила и изменю состояние ячейки. Как бы вы это сделали?

Извините, если я задавал много вопросов. Заранее спасибо! Тамас

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Самый простой способ - создать класс ячейки. Каждая клетка должна содержать bool (false если мертв, true если жив). (Вы можете рандомизировать bool при вызове конструктора)

Следующим шагом является создание массива ячеек.

Теперь вы можете просто использовать поток в то время как true, а затем внутри него вы можете использовать foreach (ячейка c в ArrayofCell) ..... делать что-то (например, соблюдать правила)

0 голосов
/ 15 ноября 2018

Должны ли вы сделать новый класс?Вы можете, если хотите.Я знаю, что в некоторых классах, когда они преподают c #, они хотят, чтобы вы учились создавать классы и объекты, но если это не является обязательным требованием для вашего задания, вы можете справиться без его создания.

Если вы используете true / false или 0/ 1?Я не вижу большой разницы между ними.True / false может использовать немного меньше системных ресурсов, чем 0/1, но я просто предполагаю, и это может зависеть от того, как вы проверяете их значения.

Как заполнить массив случайными логическими значениями?Если вы используете массив с 2 слоями для своей матрицы, я бы сделал что-то вроде:

        int NumberOfColumns = 10;
        int NumberOfRows = 10;

        bool[,] Matrix = new bool[NumberOfRows, NumberOfColumns];

        Random rng  = new Random();

        for (int i = 0; i < NumberOfRows; i++)
        {
            for (int j = 0; j < NumberOfColumns; j++)
            {
                if (rng.Next(0, 2) == 1)
                {
                    Matrix[i,j] = true;
                }
                else
                {
                    Matrix[i,j] = false;
                }
            }
        }
...