/*
* 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(){
}
public void start(){
int auswahl = -1;
System.out.println("Willkommen bei Domino!");
System.out.println("----------------------");
System.out.println("(0) Spiel beenden");
System.out.println("(1) Spiel starten");
while (auswahl != 0) {
auswahl = waehleMenupunkt();
switch (auswahl){
case 0:
System.out.println("Wiedersehen"); break;
case 1:
starteSpiel(); break;
default:
System.out.println("keine gültige Eingabe!"); break;
}
}
}
private int waehleMenupunkt(){
return Eingabe.leseInt();
}
//startet Spiel
public void starteSpiel(){
erstelleSpieler();
erstelleSpielsteine();
verteileSteine();
legeStartStein();
zeigeSpielfeld();
while (!spielSteine.isEmpty()){
macheSpielzug();
zeigeSpielfeld();
}
}
//erstellt Spieler
public void erstelleSpieler(){
System.out.println("erstelleSpieler"); //TODO löschen
spieler.add(new Mensch());
spieler.add(new Computer());
}
//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"); //TODO: löschen
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(){
System.out.println("mache spielzug");
Iterator<Spieler> einSpieler = spieler.iterator();
while (einSpieler.hasNext()){
Spieler aktuellerSpieler = einSpieler.next();
aktuellerSpieler.deckeSteineAuf();
Dominostein stein = aktuellerSpieler.waehleStein(spielfeld);
System.out.println("der erste stein: " + stein);
if (stein == null){
aktuellerSpieler.zieheStein(spielSteine.remove(0));
System.out.println("kein passender stein vorhanden");
}
else{
System.out.println("passender stein da!");
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(spielSteine.remove(0)); break;
default:
System.out.println("Bitte 1 für Links, 2 für rechts oder 3 für Stein ziehen drücken!");
break;
}
}
}
}
public void zeigeSpielfeld(){
System.out.println("Spielfeld: " + spielfeld.zeigeAugen());
}
//TODO löschen?
public void setSpielfeld(int linkesAuge, int rechtesAuge){
}
}