Как получить столбец, массив строк (не наоборот) - PullRequest
2 голосов
/ 23 ноября 2010

Создание игры из жизни Мне нужно иметь сетку 30x20 (X * Y).Проблема в том (у меня был другой вопрос по этому поводу), что массивы c # - это строки, столбцы.Поэтому, когда я использую CursorPosition() для рисования, мне нужно поменять его местами, потому что он сначала хочет столбец.Есть ли способ, как я могу повернуть его вспять, чтобы я мог использовать, как это?

int [,] Array = new int[30,20];
Console.SetCursorPosition(29,19) // now its vice versa, I would need to use 19,29.

Ответы [ 3 ]

3 голосов
/ 23 ноября 2010

Я считаю, что это чисто концептуально (массивы c # не являются ни строкой / столбцом, ни столбцом / строкой, которая зависит от разработчика) и сводятся к итерации вашего массива либо в глубину, либо в ширину, например

//Breadth-first
for(int x = 0; x < col.Length; x++)
{    
     for(int y = 0; y < row.Length; y++)
     {             
     }    
}

//Depth-first
for(int y = 0; y < row.Length; y++)
{    
     for(int x = 0; x < col.Length; x++)
     {    
     }    
}
0 голосов
/ 23 ноября 2010

Вам нужна структура данных для хранения даты относительно координаты x, y.

Для этого вам не нужно использовать многомерный массив. Вы можете очень легко создать класс, который скрывает конкретную реализацию от других классов.

Фактически это сделает ваш дизайн более надежным.

Вы можете хранить данные в базе данных, в массиве битов, одномерном массиве и т. Д.

0 голосов
/ 23 ноября 2010

Сначала я был склонен ответить "нет", поскольку параметры Console.SetCursorPosition равны Позиционные параметры .Но когда я вспоминаю, что в C # тоже есть Именованные параметры , что-то вроде этого работает.

int a = 10;
int b = 20;
Console.SetCursorPosition(top: a, left: b);

Это самое близкое, что вы можете получить, если хотите знать почему, ищите терминывыше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...