私は斜めに(左上から右下に)勝ったかどうかを確認しようとしています。グリッドの左上部分は(0,0)です。最後に配置されたタイルに基づいてプレーヤーが勝ったかどうかは確認しません。代わりに、私は誰かが斜めに勝ったかどうかを確認するためにグリッド上のすべてのスポットをチェックしています。これは私が思いついたものです。4つの対角線で勝利
public class TestWin {
private int count_piece;
private char[][] board;
public void myBoard(char[][] x){
this.board = x;
//vertWin();
//horizontalWin();
diagDownWin();
}
public boolean diagDownWin(){
for(int row = 0; row < board.length; row++){
for(int col = 0; col < board[0].length; col++){
if(board[row][col] == board[row+1][col+1]){
count_piece++;
if(count_piece >= 4){
System.out.println("You win");
return true;
}
}else{
count_piece = 0;
}
}
}
System.out.println("No win");
return false;
}
public static void main(String[] args) {
char[][] myGrid = {
{ 'X', 'O', 'O', 'O'},
{ 'X', 'X', 'O', 'O'},
{ 'O', 'X', 'X', 'O'},
{ 'O', 'O', 'X', 'X'},
{ 'O', 'O', 'O', 'O'}
};
TestWin m1 = new TestWin();
m1.myBoard(myGrid);
}
}
私は左上から右下に移動しチェックしていdiagonal--から勝つために2つの方法がありますので。私は1つを下ると、1以上の(行+ 1とCOL +1)したいが、私は私が書くのライン上の境界エラーのうち、配列に実行します。
if(board[row][col] == board[row+1][col+1])
私が到達したときので、この問題が発生したと仮定します最後の行と最後の列私はboard.lengthとボード[0] .length大きい1つを追加しています
私はこのエラーを避けるために何ができますか?
さて、単純な解決策は小切手を追加することでしょうか? 'if((row + 1)
@JoeC配列は0からインデックスされ、そのポストの答えの記法に従っていることを理解しています。 – Construct0r