2015-08-20 1 views
1

Новый участник здесь. Есть много сообщений о массивах, но я этого не видел, поэтому мне интересно, возможно ли это.Использование зубчатых с многомерными массивами

У меня есть игровое поле, которое равно 11 x 10. У меня есть массив, чтобы выложить квадраты. Верхняя строка - [0] [0] - a [0] [10], а нижняя строка - [9] [0] - a [9] [10], а промежуточный - как и следовало ожидать.

Подумайте о доске в качестве шашки. Кусок перемещается в квадрат и помещается в массив в этом конкретном месте. Твист состоит в том, что вы можете иметь стопку штук на одном квадрате. Вот тут и возникает массив с зазубринами, потому что количество штук в стеках может варьироваться.

Вопрос в том, могу ли я вставить многогранный массив в многомерном массиве в каждой точке на плате?

Единственный способ, которым я могу это сделать, это иметь 110 зубчатых массивов, по одному в каждом месте без многомерного массива. Будет ли это способ сделать это?

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

+0

Конечно - синтаксис будет 'a [] [] []'. Это зубчатый массив зубчатых массивов массивов. –

+0

Спасибо. Поэтому, если бы у меня был зубчатый массив в нижнем углу, это было бы [9] [0] [0], [9] [0] [1], [9] [0] [2] и т. Д. массив? – StanneLLC

+0

Почему вы используете неровный массив вместо многомерного массива? Весь смысл зубчатого массива состоит в том, что он может быть зазубрен. Очевидно, что в вашем игровом поле одинаковое количество столбцов в каждой строке, и именно так работает многомерный массив. – jmcilhinney

ответ

0

Если количество штук в стеке может меняться, мне кажется, что вы действительно хотите, это двумерный массив, представляющий игровое поле, содержащее экземпляры стеков. Это может быть какой-то пользовательский тип данных, или вы можете просто использовать List<T> (например, List<Piece>, где Piece - ваш тип игрового предмета).

Например:

List<Piece>[,] board = new List<Piece>[11,10]; 

for (int row = 0; row < 11; row++) 
    for (int column = 0; column < 10; column++) 
     board[row, column] = new List<Piece>(); 

Используя List<T> здесь, то ваша плата начинается с пустым списком в каждом месте, и вы можете добавлять или удалять части просто путем добавления или удаления их из списка.

Если «стеки» на самом деле представляют собой отдельный игровой процесс, тогда может возникнуть смысл представлять их как пользовательский тип. И в этом случае (в зависимости от того, как работает игровой процесс) вы можете переназначить стеки в каждом элементе массива платы. Я не знаю & hellip, в вашем вопросе недостаточно информации, чтобы глубоко вникать в особенности реализации.

+0

Спасибо, Питер. Хороший момент вы делаете с дискретным геймплеем. Когда ваш кусок перемещается поверх стека, у вас будет выбор, чтобы перейти на другой квадрат или переместить стек как один блок. Использование списка никогда не приходило мне в голову. Я не могу сказать точно, что это был бы лучший выбор, но ваш ответ был прекрасен, давая мне точку опоры. Теперь я могу копаться и начать собирать. Время покажет, работает ли оно, но я не ожидал решения, насколько я был направлением. Благодарю. – StanneLLC