Hallo,
Ich habe ein 4 Gewinnt programmiert. Was nicht läuft ist der Computer ich bekomme ne endlosschleife und weiß nicht warum.
Algorhytmus:
Board kopier Methode
wenn ich das board per .copy kopiere klappt es auch nicht. jemand ne Idee ? gerne auch generelle verbesserungsvorschläge
Ich habe ein 4 Gewinnt programmiert. Was nicht läuft ist der Computer ich bekomme ne endlosschleife und weiß nicht warum.
Algorhytmus:
Java:
private int computerzug(Color[][] board, int depth, Color spielerFarbe)
{
if(getGameLogic().hasWon(board, spielerFarbe))
{
return -10 -depth;
}
if(getGameLogic().hasDraw(board))
{
return 0;
}
int max = Integer.MIN_VALUE;
int index = 0;
for(int i =0;i<board[0].length;i++)
{
if(board[0][i].equals(Color.WHITE))
{
Color[][] board1 = new Color[board.length][board[0].length];
board1 = copy(board);// methode um das board zu kopieren es ensteht eine endlosschleife warum auch immer
// falls ich hier clone() oder sytsem.copy nehme dann geht er nur 42 mal in die mehtode heißt er macht wieder
// ne verknüpfung
board1[getRow(board, i)][i] = spielerFarbe;
int moval = -computerzug(board1, depth+1, (spielerFarbe.equals(Color.BLUE)?Color.RED:Color.BLUE));
if(moval> max)
{
max = moval;
index = i;
}
}
}
if(depth==0)
{
col = index;
row = getRow(this.board, index);
System.out.println(test);
}
return max;
}
Java:
private Color[][] copy(Color[][] board)
{
Color[][] copyBoard = new Color[board.length][board[0].length];
for(int i = 0;i<board.length;i++)
{
for(int j = 0;j<board[0].length;j++)
{
copyBoard[i][j] = new Color(board[i][j].getRed(), board[i][j].getGreen(), board[i][j].getBlue());
}
}
return copyBoard;
}