Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用图形制作棋盘_Java - Fatal编程技术网

Java 用图形制作棋盘

Java 用图形制作棋盘,java,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, sk

我正在尝试用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++;
}
inta=0,b=0;
对于(int y=30;y

(不要担心-318和-70之类的-我稍后会修复它们,它们现在没有多大影响。)棋盘的第一行是正常的-但是其余的行是偏移的,因为第一列的其余部分是白色的,并且没有与黑色交替。b有点问题,但我不知道如何解决。非常感谢您的帮助

当您在电路板中循环时,您似乎对使用哪些变量有点困惑。在某些地方,你使用a和b,它们上升1(a=1和b=2,它们似乎是指从顶部向右走1步,向下走2步的正方形),在其他地方,你使用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
      }     
   }
}
//int a=0,b=0;//我们将循环a,b
对于(int a=0;a<8;a++){
对于(int b=0;x<8;x++){
//b表示水平轴,a表示垂直轴
如果((a+b)%2==0){
g、 设置颜色(颜色为黑色);
g、 fillRect(30+b*80,30+a*80,80,80);//制作80 x 80像素的正方形
}     
}
}

尝试修改程序,以便每次通过循环打印x、y、a和b。他们正在改变你期望他们改变的方式吗?如果没有,第一个错误是什么时候发生的,你能解释一下原因吗?(或者在调试器中启动它并逐步执行,观察变量的变化。这是做同样事情的更优雅的方式。)我敢打赌,一旦你看到它发生,你会自己找出问题并解决。所以你是在白色背景上画黑色方块?我知道它说要避免在评论中说谢谢,但是。。。哇!我从来没有想过。。。更优雅的解决方案,谢谢!请记住在否决投票时留下评论。否则,它们相对来说是无用和烦人的。谢谢