二维数组表示

时间:2010-11-01 15:51:02

标签: java c logic multidimensional-array

问题不是与特定的编程语言有关,而是与简约的代码和抽象有关。

我有3行3列的数组 - 想象一下你会玩Tic-Tac-Toe(或者是顽皮和十字架)。

当按下一个键(在电话上)时,在与按下的键对应的位置(键9为板[2] []中,向阵列添加0或1的值(X为1,O为0) 2])。

在构建GUI时,我需要将数组坐标映射到像素,如果: [0] [0] - 10,10 [0] [1] - 10,50 [0] [2] - 10,90 ... [2] [2] - 90,90

绘图将在嵌套循环中遍历数组时发生,但我仍然坚持如何在尽可能少的代码行中写入0 = 10,1 = 50和2 = 90之间的映射。

一种方法是为每种情况使用一个开关。另一个是使用if。

还有其他想法可以用更少的行来写这个吗?

谢谢!

3 个答案:

答案 0 :(得分: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 :(得分: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
 }
}

答案 2 :(得分:0)

使用您的索引值作为乘数,即90 = 2 * 40 + 10,50 = 1 * 40 + 10