图形中的Java参数

时间:2016-10-11 22:58:34

标签: java loops parameters graphics2d

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 +缩进,因为它会缩进每一行。有没有提示?

1 个答案:

答案 0 :(得分:0)

我没有能够测试它,因为我没有你的DrawingPanel课程。我的想法是,在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);
    }