min max AIが機能しないようです。これはこれまでのコードです。私はallScores配列が空であるため、bestScoredへの移動を設定しないというエラーが表示されます。どんな助けもありがとう。MinMaxAIチェッカーの実装
int[] move;
public static int makeMove(Board board, int currentPlayerColor, int maxingPlayerColor){
int score = 0;
int[] moveIndex={};
if (Rules.gameOver(board)[0]==1){
if(Rules.gameOver(board)[1] == maxingPlayerColor){
System.out.println("1");
return score = 1;
} else if(Rules.gameOver(board)[1] == Math.abs(maxingPlayerColor-1)) {
System.out.println("-1");
return score = -1;
} else{
System.out.println("0");
return score = 0;
}
} else {
int[][] availableMoves = board.availableMoves(board, currentPlayerColor);
int[] allScores = {};
System.out.println("loop length: "+ availableMoves.length);
for(int x = 0; x<availableMoves.length; x++){
Board temp = board;
if(currentPlayerColor == maxingPlayerColor){
Board.doMove(availableMoves[x], temp, 7);
} else {
Board.doMove(availableMoves[x], temp, 0);
}
System.out.println(""+x);
allScores = add(makeMove(temp,Math.abs(maxingPlayerColor-1), maxingPlayerColor), allScores);
System.out.println("allscore len "+ allScores.length);
}
if(currentPlayerColor == maxingPlayerColor){
for(int x = 0; x<allScores.length; x++){
if(score < allScores[x]){
allScores = add(score, allScores);
}
}
for(int x = 0; x<allScores.length; x++){
if(score == allScores[x]){
moveIndex = add(x,moveIndex);
}
}
System.out.println("max "+moveIndex.length);
move = availableMoves[rand.nextInt(moveIndex.length)];
} else {
for(int x = 0; x<allScores.length; x++){
if(score > allScores[x]){
score = allScores[x];
}
}
for(int x = 0; x<allScores.length; x++){
if(score == allScores[x]){
moveIndex = add(x,moveIndex);
}
}
System.out.println("min "+moveIndex.length);
move = availableMoves[rand.nextInt(moveIndex.length)];
}
}
return 0;
}
達成しようとしていることをもう少し説明してください。なぜそれは働いていないのですか? – ventiseis
こんにちは、スタックオーバーフローへようこそ!あなたは間違いなく正しい場所に来て、コーディングの問題に関して高品質の助けを得ることができました。この質の高い標準は質問にも引き継がれます。あなたがあなたの質問をするのにもっと力を入れれば、他のユーザーがあなたの質問に答えてくれるほど多くの労力がかかります。質問が高品質であることを確認するには、[このガイド](https://stackoverflow.com/help/how-to-ask)を参照してください。コードで達成しようとしていることの説明、エラーメッセージ、入力と出力の例を必ず含めてください。もう一度、歓迎! –
このプログラムに戻ってくる前に、基本的なことに戻ってJava構文をレビューし、いくつかの非常に基本的な問題を解決するのが最善の方法だと私は思うほど多くの問題があります。 –