构建Java applet以使用循环绘制一系列房屋

时间:2013-07-06 23:04:25

标签: java loops applet japplet

我对Java很新,发现自己在循环时遇到了一些麻烦。我首先要设计一个简单的小程序来构建一个房子,我有以下代码:

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次的循环,每次新房子必须使用不同的颜色并且位于不同的位置。我无法理解如何让applet循环。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

这是一个迭代5次的循环。

 for(int i = 0; i < 5; i++){
     /* Your_code_here */
 }

我希望这会有所帮助,如果没有,请告诉我。

答案 1 :(得分:0)

您不循环applet。你可以在applet中循环,如arg0's answer所示。

你通过paint方法使用了魔法数字。您需要将幻数更改为字段,以便更改变量。

你需要做的第一件事是重构你的绘画方法,这样你就有很多小方法。你应该有一个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,width和height值传递给方法的好方法。