4

そこで、チェッカーを単純に模倣するプログラムをここに示します (ただし、ジャンプする代わりに、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 メソッドには一切触れないように言われました。

4

1 に答える 1

5

ループでチップカウントを捨てています...行を変更します:

c.count();

の中へ:

chips = c.count();
于 2013-08-03T19:42:30.583 に答える