# Mensch Ärgere Dich nicht - Künstliche Intelligenz



## javanatting (15. Apr 2015)

Hallo meine lieben informatiker Freunde :meld:
ich hätte da eine kleine Frage, und zwar möchte ich eine künstliche Intelligenz zu diesem Spiel implementieren. Ich stecke gerade bei der Methode fest um meine Spielfiguren bis zum Ende laufen zu lassen für den Fall dass ich 2 oder mehrere Spielfiguren meiner eigenen Farbe auf dem Spielfeld habe. Wie kann ich das implementieren, dass man sich von jeder Spielfigur die Position zurück geben lassen kann und dann jeweils immer zu jeder der Figuren berechnet wird wie viele Felder noch zu gehen sind um ans ende zu kommen. Spielbrett bzw Felder habe ich alle als Arraylists implementiert. Bin langsam echt am verzweifeln ich hoffe jemand kann mir hier weiterhelfen ich sage schonmal ein großes danke für jede Hilfe!
Hier ist meine Methode die ich bis jetzt habe:


```
public void zumEnde() {        
            if (this.spieler.getFarbe() == FarbEnum.ROT) {
            if (this.figur.getFeld().getBrett().getStartBlau().size() == 4) {
                throw new RuntimeException("Es ist keine Figur draußen");


            } else if (this.figur.getFeld().getBrett().getStartBlau().size() == 3) {
                int z = this.brett.getWeg().indexOf(this.figur.getFeld());
                int posErg = this.spieler.getLetzterWurf() + z;
                this.spiel.laufen(this.figur.getFigurId());


            } else if (this.figur.getFeld().getBrett().getStartBlau().size() == 2) {
                int z = this.brett.getWeg().indexOf(this.figur.getFeld());
                int posErg = this.spieler.getLetzterWurf() + z;
                for (Spielfeld a : brett.getWeg()) {
                    if (brett.getFeld().getFigur().getFarbe() == FarbEnum.ROT) {


                    }
                }


            }


        }
    }
```


----------



## DieKeksmaffia (15. Apr 2015)

Hi,

1. ich würde nicht die Felder eines einzelnen Spielbretts in eine ArrayList packen, denn bei Mensch ärgere dich nicht ist die Felderanzahl pro Brett bekannt! (spart Speicher und Leistung(afaik))
2. Frage doch mit einer if-Struktur ab solange Figuren auf dem Feld der KI sind, ob die Figur eine andere Figur schlagen würde (bevorzugt) oder nicht (nicht bevorzugt) oder ob sie eine eigene Figur am Zielfeld treffen würde (unmöglich). Z.B:
[Java]
for(int i = 0; i<this.spieler.getAktiveFigurenanzahl();i++){ //this.spieler.getAktiveFigurenanzahl  gibt die Anzahl aller aktiven Figuren des Spielers (die sich bewegen dürfen) zurück
if(this.Brett.getFeldInhalt(this.spieler.getFigurPos(i)+this.spieler.getLetzterWurf())!=eigeneFigur&&this.Brett.getFeldInhalt(this.spieler.getFigurPos(i)+this.spieler.getLetzterWurf())!=null){
//this.spieler.getFigurPos(i) gibt das aktuelle Feld der Figur i zurück
//this.Brett.getFeldInhalt(int) gibt den Feldinhalt (dessen Figur) zurück, falls keine darauf steht null
this.spieler.bewegeFigur(this.spieler.getFigurPos(i)+this.spieler.getLetzterWurf());
//bewegt die Figur da die aktuelle Figur eine andere schlagen (aus dem Spiel werfen) kann
break;}
[/Java]
Dannach könntest du ja einfach die am weitest beweget Figur bewegen. falls es dieser möglich ist.


----------



## javanatting (17. Apr 2015)

hey vielen dank für deine Antwort habe dank dir jetzt doch einen anderen weg gefunden


----------

