# Weihnachtsbaum



## annawald (6. Dezember 2009)

Halllo!

Ich muss mit einer for-schleife ein programm schreiben, das mir einen weihnachtsbaum zeichnet. das ganze mit lines. ich habe es schon mit triangle gemacht, aber da sieht es einfachnicht gleichmäßig aus.



kann mir jemand helfen (ich arbeite mit processing)

hier ist der code (mit triangle)


```
void setup() {  
  
  size(500, 500);
  
  baum(140, 10, 3);
  
}


void baum(int x, int y, int ebenen) {
  
 int breite = 40;
   fill(#00ff00);
   noStroke();
   
 for(int i = 1; i <= ebenen; i = i + 1) {
  
 triangle(x, y, x + breite, y+100, x-breite, y+100);
  
  y = y + 75;
  breite = breite + 20;
  } 
}
```

der baum sollte nur aus "line" bestehen (ich glaube in java heißt das DrawLine) und eben nicht aus triangle(dreiecken)

also so wie abbildung 2 und nicht wie abbildung 1 (natürlich sollten die linien gleichmäßig sein und nicht so wie auf der zeichnung; ich habe das jetzt nur mit paint gemacht )







danke


----------



## Kalstone (7. Dezember 2009)

Hi,

die Aufgabe kommt mir doch bekannt vor . Keine Ahnung ob's genau das ist was du suchst, aber meine Lösung sieht so aus.

Gruß
K.


```
package de.tutorials.forum.java.tannebaum;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;

public class Tannebaum extends JFrame {

	private static final long serialVersionUID = 3750532944149712446L;

	public static void main(String[] args) {
		new Tannebaum();
	}

	public Tannebaum() {
		super("Tannebaum");
		this.getContentPane().setBackground(Color.WHITE);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(500, 500);
		setBackground(Color.WHITE);
		setVisible(true);
	}

	public void paint(Graphics graphics) {
		super.paint(graphics);
		graphics.setColor(Color.GREEN);
		drawTannebaum(graphics, 250, 50, 4);
	}

	void drawTannebaum(Graphics graphics, int x, int y, int levels) {
		int lx = x;
		int ly = y;
		int rx = x;
		int ry = y;
		for (int i = 0; i < levels; i++) {
			graphics.drawLine(lx,   ly,   lx -= 50,  ly += 50);
			graphics.drawLine(rx,   ry,   rx += 50,  ry += 50);
			if (i < levels - 1) {
				graphics.drawLine(lx,  ly,  lx += 25,  ly);
				graphics.drawLine(rx,  ry,  rx -= 25,  ry);
			} else {
				graphics.drawLine(x, ly, lx, ly);
				graphics.drawLine(x, ry, rx, ry);
			}
		}
	}
}
```


----------

