2010-11-23 12 views
2

Faire le jeu de la vie que j'ai besoin d'avoir une grille qui est 30x20 (X * Y). Le problème est (j'avais une autre question à ce sujet) que les tableaux de C# sont des lignes, des colonnes. Donc, quand j'utilise CursorPosition() pour dessiner j'ai besoin de l'échanger parce qu'il veut la colonne au début. Y at-il un moyen de l'inverser afin que je puisse utiliser comme ça?Comment avoir la colonne, tableau de rangées (pas l'inverse)

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

Répondre

3

Je crois que cela est purement conceptuelle (tableaux C# ne sont ni ligne/col ou col/ligne qui est au développeur) et se résume à itérer votre tableau soit dans une première profondeur ou en largeur manière par exemple

//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

Regardez MSDN - il est vraiment des lignes, la colonne – Loj

+1

« conceptuelle » étant le mot ici ... Est-ce qu'ils définissent 5 , 6D tableaux également dans MSDN? Penser à un tableau 2D comme ligne/col rend juste la vie dure pour vous-même. – Rob

0

Au début, je enclin à répondre non que les paramètres à Console.SetCursorPosition est paramètres positionnels. Mais quand je me souviens que C# ont Named paramètres trop donc quelque chose comme ça fonctionne.

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

C'est le plus proche, vous pouvez obtenir, si vous voulez savoir pourquoi, rechercher les termes ci-dessus

0

Qu'est-ce que vous avez besoin est une structure de données pour stocker la date en relation avec une coordonnées x, y.

Vous n'avez pas besoin d'utiliser un tableau multidimensionnel pour cela. Vous pourriez très facilement créer une classe qui cache l'implémentation spécifique des autres classes.

En fait, cela rendra votre conception plus robuste.

Vous pouvez stocker les données dans une base de données, BitArray, matrice de dimension unique, etc.

+0

La classe peut être trop lourde. –

+0

Le masquage des détails d'implémentation est rarement excessif. Si les méthodes sont petites, elles seront inline (pas de surcharge de perf), mais cela rendra vos classes consommatrices plus propres. – GvS