gpt4 book ai didi

java - 构建 Java 小程序以使用循环绘制一系列房屋

转载 作者:行者123 更新时间:2023-12-01 04:34:37 24 4
gpt4 key购买 nike

我对 Java 很陌生,发现自己在循环方面遇到了一些麻烦。我首先要设计一个简单的小程序来 build 一座房子,我的代码如下:

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Polygon;

public class Houseref extends Applet
{
public void paint (Graphics page)
{
Polygon poly = new Polygon(); // Roof Polygon
poly.addPoint (50,90);
poly.addPoint (150, 50);
poly.addPoint (250, 90);
page.setColor (new Color(218,165,32)); // Custom brown color
page.fillPolygon (poly);

page.setColor (Color.black);
page.drawLine (50, 90, 150, 50); // Roof outline
page.drawLine (150, 50, 250, 90);

page.setColor (Color.yellow);
page.fillRect (50, 90, 200, 100); // House base with houseColor
page.setColor (Color.black);
page.drawRect (50, 90, 200, 100); // House outline

page.setColor (Color.black);
page.fillRect (75, 110, 30, 25); // Window 1
page.fillRect (190, 110, 30, 25); // Window 2

page.setColor (Color.blue);
page.drawLine (75, 123, 105, 123); // Window Frame 1
page.drawLine (89, 110, 89, 134);
page.fillRect (70, 110, 5, 25); // Shutter 1
page.fillRect (105, 110, 5, 25); // Shutter 2

page.drawLine (75+115, 123, 105+115, 123); // Window Frame 2
page.drawLine (89+115, 110, 89+115, 134);
page.fillRect (70+115, 110, 5, 25); // Shutter 3
page.fillRect (105+115, 110, 5, 25); // Shutter 4

page.setColor (Color.blue);
page.fillRect (130, 150, 35, 40); // Door

page.setColor (Color.red);
page.fillOval (155, 170, 4, 4); // Door knob
}
}

现在我需要创建一个迭代 5 次的循环,每次新房子必须采用不同的颜色并位于不同的位置。我无法理解如何让小程序循环。如有任何帮助,我们将不胜感激!

最佳答案

您不循环小程序。您在小程序中循环,如 arg0's answer说明。

您在整个绘画方法中都使用了魔法数字。您需要将魔数(Magic Number)更改为字段,以便可以更改变量。

您需要做的第一件事是重构您的绘制方法,以便您拥有很多小方法。您应该有一个drawWall 方法、一个drawRoof 方法、一个drawDoor 方法和一个调用两次的drawWindow 方法。

我假设不同颜色的房子意味着墙壁应该是不同的颜色。您将颜色作为参数传递给您创建的墙方法。

这是一个重构的drawWall方法,所以你可以明白我在说什么。您需要以这种方式分解其余的绘制方法。

private void drawWall(Graphics page, Color color, int x, int y, int width,
int height) {
page.setColor(color);
page.fillRect(x, y, width, height); // House base with houseColor
page.setColor(Color.black);
page.drawRect(x, y, width, height); // House outline
}

Rectangle class将 x、y、宽度和高度值传递给该方法是一个好方法。

关于java - 构建 Java 小程序以使用循环绘制一系列房屋,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17507874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com