2013-07-06 2 views
1

저는 Java에 익숙하지 않고 스스로 반복하는 데 어려움이 있습니다.루프를 사용하여 일련의 집을 그리는 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 번 반복 할 루프, 새 집은 다른에 있어야 할 때마다 작성해야 내가하는 나는 아래의 코드를 먼저 집을 지을 수있는 간단한 애플릿을 디자인이다 색상 및 다른 위치에서. 애플릿을 루프하는 법을 이해하는 데 문제가 있습니다. 어떤 도움을 주셔서 감사합니다!

+1

* "애플릿을 루프하는 법을 이해하는 데 어려움이 있습니다."* CLI 응용 프로그램과 거의 같은 방식으로. 루프. 그리고 이것은 더 어려운 '애플릿'은 말할 것도없이 GUI를 시도하기 전에 알아 내야 할 사항입니다. 그 문제에 대해 애플릿을 코딩하는 이유는 무엇입니까? 사양으로 인해 예정된 경우. 선생님이 [왜 CS 교사가 Java 애플릿 교육을 중단해야하는지] (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/)를 참조하십시오. –

답변

0

애플릿을 반복하지 마십시오. 애플릿 내에서 반복하면 arg0's answer이 보여줍니다.

당신은 페인트 방법을 통해 모든 마법의 숫자를 사용했습니다. 변수를 변경할 수 있도록 마술 번호를 필드로 변경해야합니다.

가장 먼저해야 할 일은 페인트 방법을 리팩토링하여 작은 방법을 많이 사용하는 것입니다. 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, 폭, 높이 값을 전달하기위한 좋은 방법이 될 것이다.

0

다음은 5 번 반복되는 루프입니다.

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

이 정보가 도움이되기를 바랍니다. 그렇지 않은 경우 알려주세요.

+0

int 앞에 int를 잊어 버렸습니다 ... for (int i = 0 ... –