/*
* Autor: Peter Hirschfelder
*
*/
package dominospiel;
import java.util.ArrayList;
import java.util.Iterator;
import dominospiel.Computer;
import dominospiel.Mensch;
import dominospiel.Spieler;
import dominospiel.Dominostein;
public class Spiel {
//Variablendeklaration für Spielregeln
private static final int ANZAHL_SPIELSTEINE = 25;
private static final int ANZAHL_STEINE_JE_SPIELER = 5;
//Variablendeklaration für Instanzvariablen
private ArrayList<Dominostein> spielSteine = new ArrayList<Dominostein>();
private ArrayList<Spieler> spieler = new ArrayList<Spieler> ();
public Dominostein spielfeld;
public Spiel(){
}
//erstellt Spieler
public void erstelleSpieler(){
System.out.println("erstelleSpieler"); //TODO löschen
spieler.add(new Mensch());
spieler.add(new Computer());
}
//startet Spiel
public void starteSpiel(){
erstelleSpieler();
erstelleSpielsteine();
verteileSteine();
legeStartStein();
zeigeSpielfeld();
macheSpielzug();
}
//erzeugt den Vorrat an Spielsteinen für ein Spiel
public void erstelleSpielsteine(){
System.out.println("erstelleSpielsteine"); //TODO löschen
for (int i = 0; i <= ANZAHL_SPIELSTEINE; i++){
spielSteine.add(new Dominostein()) ;
}
}
//verteilt 5 Steine aus dem Vorrat an jeden Spieler
public void verteileSteine(){
System.out.println("verteile Steine");
Iterator<Spieler> einSpieler = spieler.iterator();
while (einSpieler.hasNext()) {
Spieler aktuellerSpieler = einSpieler.next();
for (int i = 0; i < ANZAHL_STEINE_JE_SPIELER; i++) {
aktuellerSpieler.zieheStein(spielSteine.remove(0));
}
}
}
//legt den ersten Stein aufs Spielfeld
public void legeStartStein(){
spielfeld = spielSteine.remove(0);
}
public void macheSpielzug(){
Iterator<Spieler> einSpieler = spieler.iterator();
while (einSpieler.hasNext()){
Spieler aktuellerSpieler = einSpieler.next();
aktuellerSpieler.deckeSteineAuf();
Dominostein stein = aktuellerSpieler.waehleStein(spielfeld);
int anlegeSeite = aktuellerSpieler.waehleAnlegeSeite(stein);
//legt spielstein an
switch (anlegeSeite){
case 1: spielfeld.setRechtesAuge(stein.getLinkesAuge()); break;
case 2: spielfeld.setLinkesAuge(stein.getRechtesAuge()); break;
case 3: aktuellerSpieler.zieheStein(); break; //TODO: stein holen
default:
System.out.println("Bitte 1 für Links, oder 2 für rechts drücken!");
}
}
}
public void zeigeSpielfeld(){
System.out.println("Spielfeld: " + spielfeld.zeigeAugen());
}
public void setSpielfeld(int linkesAuge, int rechtesAuge){
}
}