そこで、チェッカーを単純に模倣するプログラムをここに示します (ただし、ジャンプする代わりに、1 つのピースが別のピースを「食べる」だけです)。「チェッカー」クラスオブジェクトを実装し、「チップ」と呼ばれるint配列変数を作成する単純なクラスがあります。チップ[0]とチップ[1]の整数が0より大きいときにループを作成する「WHILE」ステートメントがあります。次のようになります。
public static void main(String [] args){
Checkers c = new Checkers();
c.init();
c.printBoard();
int[] chips = c.count();
Scanner kbd = new Scanner(System.in);
while(chips[0]>0 && chips[1]>0){
System.out.println("\nYour move? 4 ints: src row, src col, dest row, dest col separated by [SPACE]");
int srcR = kbd.nextInt();
int srcC = kbd.nextInt();
int destR = kbd.nextInt();
int destC = kbd.nextInt();
kbd.nextLine();
c.move(srcR,srcC,destR,destC);
c.printBoard();
System.out.println(c.getMessage());
c.count();
}
}
Checkers クラスの count メソッドは次のようになります。
public int[] count() {
int wht=0;
int blk=0;
System.out.println();
for(int i=0; i<board.length;i++) {
for(int z=0; z<board[0].length;z++) {
if(board[i][z] instanceof White) {
wht++;
}
else if(board[i][z] instanceof Black) {
blk++;
}
}
}
int[] arr = {wht,blk};
System.out.println("Whites: "+wht+"\nBlacks: "+blk);
return arr;
}
ボードは 8 x 8 (これが board.length です) であり、count メソッドは単純に「arr」の値を返すことで、「chips」に報告して、chip[1] かどうかを判断できます。 chip[0] は両方とも 1 よりも大きい (どちらもボード上に少なくとも 1 つの白または黒の駒がある) 配列は 2 つの値 (つまり {white,black}; ) のみで構成されると想定されているcount() 全体をさまざまな方法で再フォーマットしますが、これはコードをコンパイルする数少ない方法の 1 つにすぎません。
出力は次のとおりです。
01234567
0|........
1|...B.....
2|........
3|........
4|........
5|..BBB
6|.BBBB
ご覧のとおり、白いピースはもうありません (一番上にあるはずです)。これはおそらく私の鼻のすぐ下を見つめている簡単な修正ですが、面倒なので、これを十分に説明したいと思います. ありがとうございました。
ところで、main メソッドには一切触れないように言われました。