Вот ожидаемый результат моего кода:кафе Wall Иллюзия
И вот мой код:
import java.awt.*;
public class CafeWall
{
final static int MORTAR = 2;
final static int WIDTH = 650;
final static int HEIGHT = 400;
public static void main(String[] args)
{
StdDraw.setCanvasSize(WIDTH, HEIGHT);
StdDraw.setXscale(0, WIDTH);
StdDraw.setYscale(0, HEIGHT);
// Change from Color.GRAY to change background color.
StdDraw.setPenColor(Color.GRAY);
StdDraw.filledRectangle(WIDTH/2, HEIGHT/2, WIDTH/2, HEIGHT/2);
drawRow( 0, 378, 4, 20);
drawRow( 50, 300, 5, 30);
drawGrid( 10, 36, 4, 25, 0);
drawGrid(250, 40, 3, 25, 10);
drawGrid(425, 2, 5, 20, 10);
drawGrid(400, 234, 2, 35, 35);
}
// Draw a row of squares, the total number of squares is pairs * 2
// (x, y) is the lower left corner of the first box
public static void drawRow(int x, int y, int pairs, int size)
{
StdDraw.setPenColor(Color.BLACK);
StdDraw.filledRectangle(x, y, size, size);
StdDraw.setPenColor(Color.BLUE);
StdDraw.line(x, y, x+size, y+size);
StdDraw.line(x, y+size, x+size, y);
StdDraw.setPenColor(Color.WHITE);
StdDraw.filledRectangle(x+size, y, size, size);
}
// Draw a grid of 2 * pairs rows
public static void drawGrid(int x, int y, int pairs, int size,
int offset)
{
int startingX = x;
for(int line = 1; line <= pairs; line++) {
if(line % 2 ==1) { //if line is odd
x = startingX;
} else { //else line is even and must be shifted by offset specified
x = startingX + offset;
}
for(int i = 1; i <= pairs; i++) {
drawRow(x, y, pairs, size);
x = x + 2*size;
}
y = y + size + MORTAR;
}
}
}
Проблемы:
- Мои ряды не соответствует должным образом
- Мои синие «х» не отображаются.
Я смотрел на это часами. Я не могу понять, где я ошибся. Может ли кто-нибудь предложить какое-то руководство?
(Дополнительное примечание) Это реальный выход из этого кода для тех, кто задается вопросом:
Ну ... как выглядит ваша программа? Кроме того, всем остальным следует отметить, что рисунки с нижним и нижним правыми не имеют разной высоты для строк - это оптическая иллюзия. Измерьте значком мыши, если вам нужно подтверждение. – ajp15243
Мы отвечаем на вопросы. Вы должны удалить свой пост и рассказать его как вопрос. – Mikhail
Как насчет того, чтобы опубликовать свой результат? – futureelite7