Husrekke.java [Last ned]

/*
 * Programmet tegner ut en husrekke slik som i læreboken,
 * men det er nå lagt til et lite takutstikk.
 */
import java.awt.*;
import java.applet.*;
 
public class Husrekke extends EasyGraphics {
 
  public static void main (String[] args) {
    launch (args);
  }
 
  public void run() {
    makeWindow ("Husrekke",800,300);
 
    tegnHusrekke(5, 50, 100, 90, 50, 25);
  }
 
  private void tegnHusrekke(int antallHus,
          int startX, int startY, int bredde, int høyde, int avstand) {
    for (int husNr=1; husNr<=antallHus; husNr++) {
      tegnHus(startX, startY, bredde, høyde);
      startX = startX + bredde + bredde/3 + avstand;
      // bredde/3 er tillegget pga takutstikket, se nedenfor
    }
  }
 
  private void tegnHus(int x, int y, int bredde, int høyde ) {
    int veggHøyde = høyde*2/3;
    int toppVegg  = y - veggHøyde;
    drawRectangle(x, toppVegg, bredde, veggHøyde);
    // Takutstikket er valgt til 1/6 av bredden på huset.
    // Ett på hver side gjør til sammen grunnlinja i taket
    // 1/3 lengre enn bredden på huset.
    int ut = bredde/6;
    tegnTrekant(x-ut, toppVegg, bredde + 2*ut, høyde/3);
  }
 
  private void tegnTrekant(int x, int y, int bredde, int høyde) {
    drawLine(x, y, x+bredde, y);
    drawLine(x+bredde, y, x+bredde/2, y-høyde);
    drawLine(x+bredde/2, y-høyde, x, y);
  }
 
}
Kildekode blir vist ved hjelp av GeSHi.