C # - динамическое создание объектов - PullRequest
0 голосов
/ 12 июня 2018

Мне дана сетка nXn с 1 и 0, и мне дано, что я могу двигаться только вверх или вправо, если 0 населяет клетку.Мне нужно найти все возможные способы добраться до верхнего правого угла от нижнего левого угла.Для этого я использую объект (Bot), инициализированный в (0,0), чье единственное поведение - смотреть направо и ячейку прямо над ней;если это 0, то он создает нового бота в эту доступную ячейку.

Итак, как бы мне реализовать это творческое поведение, не имея необходимости окончательно создавать экземпляр класса заново?

Что у меня есть (map - это двумерный массив):

using System;

namespace brancher
{
    public class Bot
    {
        public int row = 0;
        public int col = 0;
        public void startRoutine ()
        {
            if (row != 3 && col != 3) {
                if (Globals.map [row, col + 1] == 0) {
                    // This isn't right
                    Bot a = new Bot (row, col + 1);
                }
                if (Globals.map [row + 1, col] == 0) {
                    // This isn't right
                    Bot b = new Bot (row + 1, col);
                }
            }
                if (row == 3 && col == 3) {
                    Globals.count++;
                }
        }
        public Bot (int x, int y)
        {
            row = x;
            col = y;
            startRoutine ();
        }
    }
}

РЕДАКТИРОВАТЬ: Это не домашнее задание.Это вызов.Исправлены знаки равенства и заголовок.

1 Ответ

0 голосов
/ 13 июня 2018
 public class Bot
{
    public int row = 0;
    public int col = 0;
    public void startRoutine()
    {
        if (row != 3 && col != 3)
        {
            if (Globals.map[row, col + 1] == 0)
            {
                // Simply update the data, no need to create a new class
                this.Move(row, col + 1);
            }
            if (Globals.map[row + 1, col] == 0)
            {
                // Simply update the data, no need to create a new class
                this.Move(row + 1, col);
            }
        }
        if (row == 3 && col == 3)
        {
            Globals.count++;
        }
    }

    private void Move(int x, int y)
    {
        row = x;
        col = y;
        startRoutine();
    }
    public Bot(int x, int y)
    {
        row = x;
        col = y;
        startRoutine();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...