Как инициализировать и использовать массив

голоса
-2

Я делаю некоторые C # домашнее задание и эти инструкции:

Создать новый проект под названием FunWithArrays.

Добавить класс называется Game и убедитесь, что он является публичным. Игра должна иметь открытый 2 одномерный массив байтов размером 5 х 5 называется BingoCard. BingoCard следует инициализировать в конструкторе класса Game. Там также должна быть строка открытое свойство называется PlayerName в классе Game. Тот же конструктор упоминалось выше, должны получить строку инициализации имя игрока.

Назад в основном способе создать единый массив размера игры размера 3. Добавить три новые игры, используя имена «Беты», «Крис» и «Дон». Добавьте случайный объект основного метода.

Передайте массив игры и случайный объект статический метод, называемый «InitilizeArray.» Используйте цикл Еогеаспа перебирать игры. Внутри цикл просмотра, использовать вложенные циклы для присвоить случайное значение байта на каждый из 25 элементов в массиве. (Подсказка: использовать что-то вроде (байт) rand.next (), чтобы иметь случайный объект возвращает байт Убедитесь, что случайный диапазон байтов составляет от 1 до 75..

Тогда из основного метода, передать массив игры на статический метод под названием «DisplayArray.» Затем используйте Еогеасп и для петель, как и раньше, чтобы распечатать каждый игрок и бинго карту этого игрока. Карты должны быть отображены в таблице 5 х 5 в консоли.

До сих пор, я застрял в 3-м пункте.

В первом абзаце я сделал класс, который кажется правильным:

public class Game
{
    public Game() { }

    public Game (string pN)
    {
        PlayerName = pN;
        byte[,] BingoCard = new byte[5, 5];
    }

    public string PlayerName { get; set; }
}

А для второго абзаца, в моем основном методе:

static void Main(string[] args)
{
    const int GameSize = 3;

    Random rand = new Random();
    Game[] gameArray = new Game[GameSize];

    Game game1 = new Game(Chris);
    Game game2 = new Game(Beth);
    Game game3 = new Game(Don);

    InitializeArray(gameArray[], rand);
}

Я не уверен, что если бы я сделал «создать три новые игры» право, но я думаю, что это.

Теперь у меня возникли проблемы с третьим пунктом, я должен быть прохождение каждой новой игры (game1, Game2, Game3) к gameArray, а затем перебирать каждую игру с петлей Еогеаспа, такие как:

foreach (var game in g)
{
    for (int row = 0; row < 5; row++)
    {
        for (int col = 0; col < 5; col++)
        {
            game[row, col] = (byte)r.Next();
        }
    }
}

Как следует добавить три новые игры и инициализировать их?

Задан 07/11/2018 в 19:54
источник пользователем
На других языках...                            


1 ответов

голоса
0

Из ваших инструкций:

Игра должна иметь публичный 2 одномерный массив байтов размером 5 х 5 называется BingoCard.

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

То , что вы должны сделать , это создать его в качестве государственной собственности, так же , как вы делали с PlayerName:

public class Game
{
    // Public properties
    public byte[,] BingoCard = new byte[5, 5];
    public string PlayerName { get; set; }

    // Constructors
    public Game() { }

    public Game(string pN)
    {
        PlayerName = pN;            
    }
}

Теперь он будет доступен для вашей программы.


... создать единый массив размера игры размера 3. Добавить три новые игры, используя имена «Бет», «Крис» и «Дон»

В то время как вы создали 3 игры, вы не добавили их в массив. Вы можете сделать это с помощью индексов:

Game[] gameArray = new Game[GameSize];

gameArray[0] = new Game("Chris");
gameArray[1] = new Game("Beth");
gameArray[2] = new Game("Don");

И теперь вы можете перебрать массив игры и можете ссылаться , game.BingoCardчтобы добавить элементы в многомерный массив каждого Gameобъекта:

foreach (var game in gameArray)
{
    for (int row = 0; row < 5; row++)
    {
        for (int col = 0; col < 5; col++)
        {
            game.BingoCard[row, col] = (byte)r.Next();
        }
    }
}

Однако вы по-прежнему есть работа, чтобы сделать ...

Убедитесь, что случайный диапазон байтов составляет от 1 до 75.

Ответил 07/11/2018 в 20:24
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more