【问题标题】:2d array representation二维数组表示
【发布时间】:2010-11-01 15:51:02
【问题描述】:

这个问题与特定的编程语言无关,而是与极简代码和抽象有关。

我有这个由 3 行 3 列组成的数组 - 想象一下您可以在其中玩井字游戏(或 naughts 和 crosss)的棋盘。

当一个键(在电话上)被按下时,一个值 0 或 1 被添加到数组中(X 为 1,O 为 0)对应于按下的键的位置(键 9 为 board[2][ 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。

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

谢谢!

【问题讨论】:

    标签: java c logic multidimensional-array


    【解决方案1】:
    for ( y = 0; y < 3; ++y )
    {
        for ( x = 0; x < 3; ++x )
        {
            pos_x = x * 40 + 10;
            pos_y = y * 40 + 10;
            // Draw...
        }
    }
    

    【讨论】:

    • 哈哈,正是我的想法:) 我认为您的上限可能需要为 3 或使用
    【解决方案2】:
    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
     }
    }
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2010-11-29
        • 2011-02-28
        • 1970-01-01
        • 2012-04-17
        • 1970-01-01
        • 2017-01-26
        • 1970-01-01
        • 1970-01-01
        • 2013-05-01
        相关资源
        最近更新 更多