Как поместить круги над шахматной доской?

#java #arrays

#java #массивы

Вопрос:

Простите меня, если это глупый вопрос, но я новичок в 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. Мне очень жаль, клянусь, я нажал на javascript. Я чувствую себя очень плохо. Извините.

2. О, он сказал java, когда я пришел сюда, поэтому я был смущен и изменил его обратно, но он снова изменил его сам? Это моя первая публикация.

3. Спасибо! Это большая помощь, извините за неудобства.

4. Я пытаюсь найти решение вашей проблемы, но я не уверен, какие функции вы вызываете. Знаете ли вы, используете ли вы java с какими-либо надстройками или фреймворками? В частности, к какому классу принадлежит метод ellipse()?

5. @ngood97 он использует Processing, язык, который мне нравится называть «visual Java». processing.org

Ответ №1:

Я исправил проблему для вас. Вам нужно было указать, как определяется локальное значение (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.
      }
    }
  }
}