2010-11-01 10 views
2

La question n'est pas liée à un langage de programmation spécifique, mais plutôt au code et à l'abstraction minimalistes. J'ai ce tableau de 3 lignes et 3 colonnes - imaginez un tableau dans lequel vous joueriez Tic-Tac-Toe (ou naughts and crosses). Lorsqu'une touche (sur le téléphone) est enfoncée, une valeur de 0 ou 1 est ajoutée au tableau (1 pour X et 0 pour O) dans la position correspondant à la touche enfoncée (touche 9 étant la carte [2]). [2]).2d représentation de tableau

Dans la construction de l'interface utilisateur graphique, je besoin de cartographier l'ensemble de coordonnées de pixels, de telle sorte que si: [0] [0] - 10,10 [0] [1] - 10,50 [0] [ 2] - 10,90 ... [2] [2] - 90,90

le dessin aura lieu en traversant le tableau dans une boucle imbriquée, mais je me suis coincé sur la façon d'écrire dans des lignes plus petit nombre de code que possible la correspondance entre 0 = 10, 1 = 50 et 2 = 90.

Une façon d'aller serait d'utiliser un commutateur pour chaque cas. Un autre serait d'utiliser un si.

D'autres idées pour écrire cela en moins de lignes possibles?

Merci!

Répondre

1
for (y = 0; y < 3; ++y) 
{ 
    for (x = 0; x < 3; ++x) 
    { 
     pos_x = x * 40 + 10; 
     pos_y = y * 40 + 10; 
     // Draw... 
    } 
} 
+1

haha, exactement ce que je pensais :) Je pense qu'il peut être nécessaire de soit 3 pour votre limite supérieure ou utilisez <= au lieu de < –

+0

Oh oui, bien sûr! Je l'ai changé en 3! Merci! :) – Flinsch

1
for(var i = 0; i < 3; i++) { 
for(var j = 0; j < 3; j++) { 
    int xPos = i * 40 + 10; 
    int yPos = j * 40 + 10; 
    //set accordingly 
} 
} 
0

Utilisez votre valeur d'index Multiplicateur soit 90 = 2 * 40 + 10, 50 = 1 * 40 + 10