使用/ java进行网格程序

时间:2014-09-30 19:32:03

标签: java class awt

我目前正在研究一种利用Java的awt类的测试程序。在这个程序中,我试图在网格的特定象限中生成4个随机点。

在审核我的代码时,您能为组织提出更好的建议吗?

我目前只是使用for循环来显示4个点,如下所示:

 for (int dotsOnGrid = 1; dotsOnGrid < 5; dotsOnGrid++)
    {
        int x = (int) (Math.random() * (.50 * width)); 
        int y = (int) (Math.random() * (.50 * height));

        g.setColor(Color.RED);
        g.fillOval(x, y, r, r); 
    }

至于在网格的左上角有4个红点,我很坚固。

我只是在弄清楚如何制作黄色和绿色点。使用Math.random()时如何工作?

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

做一些简单的数学运算并不难理解。首先找出方形的坐标x范围,并找出方形的坐标y范围。在这两个范围内做两个random,这将是你的x,y值。简单。

答案 1 :(得分:0)

只需为其他颜色添加新的部分:

for (int numDots = 1; numDots < 5; numDots++)
{
    g.setColor(Color.YELLOW);

    int x = (int) (Math.random() * (.50 * width)) + (.50 * width); 
    int y = (int) (Math.random() * (.50 * height));

    g.fillOval(x, y, r, r);
}


for (int numDots = 1; numDots < 5; numDots++)
{
    g.setColor(Color.GREEN);

    int x = (int) (Math.random() * (.50 * width)); 
    int y = (int) (Math.random() * (.50 * height) + (.50 * height));

    g.fillOval(x, y, r, r);
}

答案 2 :(得分:0)

(虽然这闻起来像家庭作业:))

假设您必须用颜色填充四个网格。对于四个网格中的每个网格,您可以执行相同的代码。因此,创建一个为一种颜色制作网格的函数(这意味着颜色将是一个参数)。然后,一旦制作了四个网格,将它们粘贴在一个大网格中。

在伪代码中:

public Grid makeGrid(final Color color) {
  Grid g = new Grid();
  for(numberOfDotsPainted = 0; numberOfDotsPainted < NUMBER_OF_DOTS_TO_BE_PAINTED; ++numberOfDotsPainted) {
    // choose random spot for the new dot
    // Create a dot with the given color
    // Add the new dot to the grid
  }
  return g;
}

需要为每种颜色调用此函数,然后根据需要将坐标转换到正确位置所需的颜色。如果将四个网格放在笛卡尔坐标系的四个象限上,则可以轻松进行数学运算。 (翻译将以网格的宽度存在加法和减法)。

这种方法可以避免代码重复,并且比复制粘贴相同代码的结构更加结构化,每个部分都进行了少量更改。每当您需要将一个小东西更改为核心功能时,您只需要更改代码的一部分而不是更改n次(n颜色数量)。这非常容易出错。