如何在棋盘上画圈?

时间:2019-04-18 01:45:20

标签: java arrays

如果这是一个愚蠢的问题,请原谅我,但是我是Java的初学者,我们的老师讲得不太好。我了解如何在Java中创建棋盘格。接下来,我应该在所有黑色方块上放上白色圆圈,这样看起来就像是一个跳棋游戏。它不必移动。

我认为我会使用与矩形相同的逻辑,但随后所有的圆都相距甚远,根本与黑色正方形不匹配。

int sqSize = 50;  
int gridSize = 500; 
int n;  
int[][] grid; 

public void setup()
{
  size(500, 500);  
  noLoop();  
  n = gridSize/sqSize; 
  grid = new int[n][n];
}

void draw()
{
  for (int row = 0; row < n; row++) {
    for (int col = 0; col < n; col++) {
      stroke(0);
      if ( (row % 2) == (col % 2) )
      {
        fill(255, 0, 0); 
        rect(row*sqSize, col*sqSize, sqSize-2, sqSize-2);
      } else {
        fill(0, 0, 0); 
        rect(row*sqSize, col*sqSize, sqSize-2, sqSize-2); 
        fill(255);
        ellipse(row*sqSize, col*sqSize, sqSize-2, sqSize-2);
        //this is what I tried, but failed.
      }
    }
  }
}

我希望圆像实际的棋子一样在其上完全对齐,但是实际输出是圆没有足够的间距并且在两个正方形上。

1 个答案:

答案 0 :(得分:0)

我已为您解决了该问题。您需要指定如何为形状定义局部(0,0)。我将椭圆更改为将(0,0)设为左上角,现在按预期绘制。

int sqSize = 50;  
int gridSize = 500; 
int n;  [![enter image description here][1]][1]
int[][] grid; 

public void setup()
{
  size(500, 500);  
  noLoop();  
  n = gridSize/sqSize; 
  grid = new int[n][n];

  ellipseMode(CORNER);
}

void draw()
{
  for (int row = 0; row < n; row++) {
    for (int col = 0; col < n; col++) {
      stroke(0);
      if ( (row % 2) == (col % 2) )
      {
        fill(255, 0, 0); 
        rect(row*sqSize, col*sqSize, sqSize-2, sqSize-2);
      } else {
        fill(0, 0, 0); 
        rect(row*sqSize, col*sqSize, sqSize-2, sqSize-2); 
        fill(255);
        ellipse(row*sqSize, col*sqSize, sqSize-2, sqSize-2);
        //this is what I tried, but failed.
      }
    }
  }
}