用图形制作棋盘

时间:2013-12-28 04:50:15

标签: java

我正在尝试制作一个带有Java图形的棋盘(带有像素本身 - 不仅仅是粘贴方块),而且它不能像我想要的那样工作。这是我的代码:

int a = 0, b = 0;
for(int y = 30; y < getHeight() - 318; y++){
   for(int x = 30; x < getWidth() - 70; x++){
      if((b % 2 != 0)){
        x+=80;
        b++;     //if odd row, skip to next horizontal square to color black
      }
      if((x % 80 == 30) && (a % 2 == 0)){
        g.setColor(Color.BLACK);
        g.fillRect(x, y, 80, 80); //make squares of 80 x 80 pixels
      }     
      x+=79;
      a++;
  }
y+=79;
b++;
}

(不要担心 - 318和 - 70等 - 我稍后会修复它们,它们现在没有太大的影响。)棋盘的第一排是正常的 - 但其余的行是偏移的,因为第一列的其余部分是白色,而不是与黑色交替。 b有问题,但我不确定如何修复它。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

当您循环通过电路板时,您似乎对使用哪些变量感到有点困惑。在某些地方你使用a和b,它增加1(a = 1和b = 2,它们似乎指的是从顶部开始的正方形1步和向下两步),在其他地方你循环x和y表示屏幕像素

我改变了一点只使用a和b,我们只在绘制正方形时确定x和y。我也改变了逻辑来确定一个正方形是黑色还是白色 - 这可能是错的,但只有两种方法可以将国际象棋棋盘画成黑色或白色开始。

//int a = 0, b = 0; // we will loop thorugh a,b instead
for(int a = 0; a < 8; a++){
   for(int b = 0; x < 8; x++){
      //b is for the horizontal axis and a for vertical
      if((a + b) % 2 == 0){
        g.setColor(Color.BLACK);
        g.fillRect(30 + b * 80, 30 + a * 80, 80, 80); //make squares of 80 x 80 pixels
      }     
   }
}