Создайте апплет 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 раз, каждый раз новый дом должен быть другого цвета и в другом месте. У меня проблемы с пониманием того, как заставить апплет зацикливаться. Любая помощь приветствуется!


person Kara    schedule 06.07.2013    source источник
comment
У меня возникли проблемы с пониманием того, как заставить апплет зацикливаться. Почти так же, как вы получаете приложение CLI. зациклить. И обратите внимание, что это то, что вы должны понять, прежде чем пытаться использовать графический интерфейс, не говоря уже о более сложных «апплетах». По этому вопросу: зачем кодировать апплет? Если это связано со спец. учителем, направьте их на Почему преподавателям компьютерных наук следует прекратить преподавать апплеты Java.   -  person Andrew Thompson    schedule 07.07.2013


Ответы (2)


Вы не зацикливаете апплет. Вы зацикливаетесь внутри апплета, как показывает ответ arg0.

Вы использовали магические числа во всем своем методе рисования. Вам нужно изменить магические числа на поля, чтобы вы могли изменять переменные.

Первое, что вам нужно сделать, это реорганизовать метод рисования, чтобы у вас было много маленьких методов. У вас должен быть метод 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 был бы хорошим способом для передачи значений x, y, ширины и высоты в метод.

person Gilbert Le Blanc    schedule 07.07.2013

Вот цикл, который повторяется 5 раз.

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

Я надеюсь, что это поможет, пожалуйста, скажите мне, если это не так.

person Joe Lloyd    schedule 07.07.2013