#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.
}
}
}
}