Java 图形中的参数
Java parameters in graphics
import java.awt.*;
public class CafeWall {
public static final int mortar = 2;
public static void main(String[] args) {
DrawingPanel panel = new DrawingPanel(650, 400);
panel.setBackground(Color.GRAY);
Graphics g = panel.getGraphics();
row(4, 20, 0, 0, g);
row(4, 30, 50, 70, g);
grid(0, 4, 25, 10, 150, g);
grid(10, 3, 25, 250, 200, g);
grid(10, 5, 20, 425, 180, g);
grid(35, 2, 35, 400, 20, g);
}
//This method will produce the two individual rows in CafeWall
public static void row(int amount, int size, int x, int y, Graphics g) {
for(int squares = 0; squares < amount; squares++){
g.setColor(Color.BLACK);
g.fillRect(x+2*squares*size, y, size, size);
g.setColor(Color.WHITE);
g.fillRect(x+2*squares*size+size, y, size, size);
g.setColor(Color.BLUE);
g.drawLine(x+2*size*squares, y, x+2*squares*size+size, y+size);
g.drawLine(x+2*size*squares, y+size, x+2*size*squares+size, y);
}
}
//This method will produce the grids using the method row
public static void grid(int indent, int amount, int size, int x, int y, Graphics g) {
for(int rows=0; rows<amount*2; rows++){
row(amount, size, x+indent, y+rows*(size*mortar), g);
}
}
}
CafeWall Illusion
在这个程序中,我正在尝试为咖啡馆墙壁错觉编写代码。我不能使用 if 语句。我几乎完成了所有事情。最后一部分,在网格方法中,x 和 y 值的代码给我带来了一些问题。看起来 y 轴是正确的。然而,我的 x 轴不工作。我认为正在发生的是所有行都在彼此之上。但是我不知道如何为我的 x 变量编码。每隔一行需要缩进给定的数量。例如,中间底部网格需要每隔一行缩进 10。但我不能做 x + 缩进,因为它会缩进每一行。有什么提示吗?
因为没有你的DrawingPanel
class,所以没法测试。我的想法是,在 grid()
中一次绘制两行,只缩进其中的一行:
for (int rows = 0; rows < amount * 2; rows += 2) {
row(amount, size, x, y + rows * (size * mortar), g);
row(amount, size, x + indent, y + (rows + 1) * (size * mortar), g);
}
import java.awt.*;
public class CafeWall {
public static final int mortar = 2;
public static void main(String[] args) {
DrawingPanel panel = new DrawingPanel(650, 400);
panel.setBackground(Color.GRAY);
Graphics g = panel.getGraphics();
row(4, 20, 0, 0, g);
row(4, 30, 50, 70, g);
grid(0, 4, 25, 10, 150, g);
grid(10, 3, 25, 250, 200, g);
grid(10, 5, 20, 425, 180, g);
grid(35, 2, 35, 400, 20, g);
}
//This method will produce the two individual rows in CafeWall
public static void row(int amount, int size, int x, int y, Graphics g) {
for(int squares = 0; squares < amount; squares++){
g.setColor(Color.BLACK);
g.fillRect(x+2*squares*size, y, size, size);
g.setColor(Color.WHITE);
g.fillRect(x+2*squares*size+size, y, size, size);
g.setColor(Color.BLUE);
g.drawLine(x+2*size*squares, y, x+2*squares*size+size, y+size);
g.drawLine(x+2*size*squares, y+size, x+2*size*squares+size, y);
}
}
//This method will produce the grids using the method row
public static void grid(int indent, int amount, int size, int x, int y, Graphics g) {
for(int rows=0; rows<amount*2; rows++){
row(amount, size, x+indent, y+rows*(size*mortar), g);
}
}
}
CafeWall Illusion
在这个程序中,我正在尝试为咖啡馆墙壁错觉编写代码。我不能使用 if 语句。我几乎完成了所有事情。最后一部分,在网格方法中,x 和 y 值的代码给我带来了一些问题。看起来 y 轴是正确的。然而,我的 x 轴不工作。我认为正在发生的是所有行都在彼此之上。但是我不知道如何为我的 x 变量编码。每隔一行需要缩进给定的数量。例如,中间底部网格需要每隔一行缩进 10。但我不能做 x + 缩进,因为它会缩进每一行。有什么提示吗?
因为没有你的DrawingPanel
class,所以没法测试。我的想法是,在 grid()
中一次绘制两行,只缩进其中的一行:
for (int rows = 0; rows < amount * 2; rows += 2) {
row(amount, size, x, y + rows * (size * mortar), g);
row(amount, size, x + indent, y + (rows + 1) * (size * mortar), g);
}