/*
Bald ist Weihnachten und Sie möchten sich selbst mal eine 
Freude machen, indem Sie einen ASCII-Weihnachtsbaum auf 
den Bildschirm Ihres Computers malen.

Aufgabe: Schreiben Sie ein Java-Programm, das den 
Benutzer zunächst auffordert, eine Zahl größer gleich 2 
einzugeben und das anschließend einen entsprechend hohen 
Weihnachtsbaum der folgenden Form auf den Bildschirm 
ausgibt:

Höhe = 2:
  +-+
  | |
+-+ +-+

Höhe = 4:
      +-+
      | | 
    +-+ +-+
    |     | 
  +-+     +-+
  |         |
+-+         +-+
*/

void main() {
   int hoehe = hoeheEingeben();
   tannenbaumZeichnen(hoehe);
}

int hoeheEingeben() {
	int hoehe = IO.readInt("Zahl eingeben (>= 2): ");
	while (hoehe < 2) {
		hoehe = IO.readInt("Fehlerhafte Eingabe; Zahl eingeben (>= 2): ");
	}
	return hoehe;
}

void tannenbaumZeichnen(int hoehe) {
	gipfelZeichnen(hoehe);
	for (int i = hoehe - 1; i >= 1; i--) {
		stufeZeichnen(i, hoehe);
	}
}

void gipfelZeichnen(int hoehe) {
	for (int i = 0; i < (hoehe - 1) * 2; i++) {
		IO.print(' ');
	}
	IO.println("+-+");
}

void stufeZeichnen(int aktHoehe, int hoehe) {
	pipeZeileSchreiben(aktHoehe, hoehe);
	plusPipePlusZeileSchreiben(aktHoehe, hoehe);
}

void pipeZeileSchreiben(int aktHoehe, int hoehe) {
	for (int i = 0; i < aktHoehe * 2; i++) {
		IO.print(' ');
	}
	IO.print('|');
	for (int i = 0; i <= (hoehe - aktHoehe - 1) * 4; i++) {
		IO.print(' ');
	}
	IO.println('|');
}

void plusPipePlusZeileSchreiben(int aktHoehe, int hoehe) {
	for (int i = 0; i < aktHoehe * 2 - 2; i++) {
		IO.print(' ');
	}
	IO.print("+-+");
	for (int i = 0; i <= (hoehe - aktHoehe - 1) * 4; i++) {
		IO.print(' ');
	}
	IO.println("+-+");
}
