public void starteSpiel() {
		for (int zeile = 0; zeile < spielfeld.length; zeile++) {
			for (int spalte = 0; spalte < spielfeld[zeile].length; spalte++) {
				spielfeld[zeile][spalte] = "[ ]";
			}
		}

		platziereSpieler();

		Spieler gewinner = null;
		int runde = 0;
		GamePrinter.printSpielfeld(spielfeld, spielerReihenfolge);
		Date startZeit = new Date();
		Date endZeit = null;

		do {
			runde++;

			spiel: for (Spieler aktuellerSpieler : spielerReihenfolge) {
				GamePrinter.printAktuellerSpieler(aktuellerSpieler, runde);
				Figur gewaehlteFigur = aktuellerSpieler.waehleFigur(spielfeld);
				boolean weitererZugMoeglich = true;
				ArrayList<int[]> mglZuege = gewaehlteFigur
						.findeZuege(spielfeld);
				ArrayList<int[]> altePos = new ArrayList<int[]>();
				int index = 0;

				while (weitererZugMoeglich) {
					altePos.add(index, gewaehlteFigur.getPosition());
					aktuellerSpieler.waehleZug(mglZuege, gewaehlteFigur,
							spielfeld);
					bewegeFigur(altePos.get(index), gewaehlteFigur);
					GamePrinter.printSpielzug(aktuellerSpieler,
							altePos.get(index), gewaehlteFigur.getPosition());
					GamePrinter.printSpielfeld(spielfeld, spielerReihenfolge);
					mglZuege = moeglicheSpruenge(gewaehlteFigur, spielfeld,
							altePos);
					if (mglZuege.isEmpty()) {
						weitererZugMoeglich = false;
						// Testzweck
						System.out.println("Kein weiterer Zug möglich.");

					} else {
						weitererZugMoeglich = true;
						weitererZugMoeglich = aktuellerSpieler
								.zugWeiterfuehren();
						// Testzweck
						if (weitererZugMoeglich == false) {
							System.out.println("Kein weiterer Zug.");
						} else {
							System.out.println("Zieht weiter.");
						}
					}
					sleep(100);
					index++;
					if (isGewonnen(aktuellerSpieler.getFigurenArray(),
							aktuellerSpieler.berechneZielPositionen())) {
						endZeit = new Date();
						gewinner = aktuellerSpieler;
						break spiel;
					}
				}
			}
		} while (gewinner == null);

		beendeSpiel(gewinner, runde, startZeit, endZeit);
	}