DamenEngine

Nico1999

Aktives Mitglied
hi ich wollte mal fragen wie ich eine engine mache
das ist mein code der ist auch schon getestet und so und sollte für die engine ausreichen
Java:
public class Board{
    private HashMap<Coordinates, Figur> playingField;
    private int brettGröße;
   
    public LinkedList<Input> possibleMoves(int moveanzahl )
    public LinkedList<Input> possibleMoves(int moveanzahl, Board board )
       
    public void makeMove(Input input, Board board,int moveanzahl)
    public void makeMove(Input input, int moveanzahl)
}
public record Coordinates(int x, int y){}
public record Figur(Color color, Typ typ){}
public class Input{
    private Coordinates location;
    private Coordinates goal;
   
    public void getInput()// fragt den user nach input
}



also für den Anfang möchte ich erstmal einen brutal force algorithmus schreiben der einfach jeden move durchgeht und dann schaut ob man verliert oder nicht.
das ist mein erster Ansatz

Code:
public void engine(Board board, int moveanzahl) {
    if(moveanzahl<1){
        System.out.println("invalid Input for moveanzahl")
    }
    if(moveanzahl==50){
        System.out.println("Done")
    }else{
        for(int i=0;i<board.possibleMoves(moveanzahl, board).size();i++) {
                LinkedList<Input> moveFolgen=new LinkedList<Input>();
                moveFolgen.add(board.possibleMoves(moveanzahl, board).get(i));
                board.makeMove(board.possibleMoves(moveanzahl, board).get(i), board, moveanzahl);
                engine(board, moveanzahl+1)
               
    }
}

jetzt hab ich gleich mehrere fragen
brauche ich für die engine in possiblemoves and makemove eine überladung mit zusätzlicher Board variable
kennt ihr vielleicht eine guten beitrag, tutorial für KI dann würde ich das nämlich auch mal mit einer KI probieren
ergibt mein Ansatz Sinn oder nicht(das mit rekursion blick ich noch net ganz)
was sollte die engine zurückgeben? eine LinkedList<LinkedList<Input>> um jede mögliche abfolge zu speichern und das hab ich jetzt noch net gemacht dann auf den ersten platz der LinkedList<Input> irgentwie eine 1 oder 0 für gewinnen oder verlieren zu machen oder eine void?
also schreibt mir bitte mal was ihr bei einer engine zurückgeben würdet
Danke schonma für euer Feedback
 

mihe7

Top Contributor
brauche ich für die engine in possiblemoves and makemove eine überladung mit zusätzlicher Board variable
Nein, wozu? Du kannst jede Board-Instanz nach den Zügen fragen, die für diese Instanz möglich sind.

kennt ihr vielleicht eine guten beitrag, tutorial für KI dann würde ich das nämlich auch mal mit einer KI probieren
KI ist ein weites Feld, da gibts nicht einfach mal ein Tutorial. Was Du Dir z. B. anschauen kannst, wäre https://de.wikipedia.org/wiki/Minimax-Algorithmus.

das mit rekursion blick ich noch net ganz
Was blickst Du nicht? Wäre evtl. ganz sinnvoll, sich damit zu beschäftigen, bevor man es anwendet.

ergibt mein Ansatz Sinn oder nicht
Kann ich nicht erkennen.

was sollte die engine zurückgeben?
Ich weiß nicht genau, was Du machen willst, aber wenn Du einen Computergegner schreiben willst: den nächsten Zug.
 

Neue Themen


Oben