0

そのため、課題のためにマインスイーパ ゲームを作成する必要があります。2 つの 2D 配列を含む Board のクラスを作成したとします。1 つはボードの値用で、もう 1 つはユーザーがそこをクリックしたかどうかを保持します。2 つの 2D 配列の引数を使用してメソッドを作成しました。メインクラスでこれらの配列をどのように呼び出すのですか?

public class Board {

    int x;
    int y;
    public char[][] board;
    public char[][] reveal;

    Board(int x, int y){
        board = new char[x][y];
        reveal = new boolean[x][y];
}

    }

public class Mine{

    public static void main(String[] args){

        Board gameboard;
        gameboard = new Board(5, 5);

                   ???

        Board.printBoard(board, reveal);

    }
}


public void printBoard(char[][] board, boolean[][] test){

        for(int i=0; i<=board.length; i+=1){
            for(int j=0; j<board[i].length; j+=1){
                if (test[i][j]==true){
                System.out.print(board[i][j]);
                }
                else {
                    System.out.print('?');
                }
            }
            System.out.println();
        }

    }
4

5 に答える 5

1

メインクラスでこれらの配列をどのように呼び出すのですか?

配列を「呼び出す」ことはありません。メソッドを呼び出します。クラスのインスタンス変数にアクセスする場合は、アクセサ メソッド、つまりインスタンス変数を「取得」および「設定」するメソッドを提供する必要があります。

于 2013-04-20T01:58:31.433 に答える
0

boardand属性を public として宣言しているので、andrevealを使用してそれらの値にアクセスできます。 ただし、これは非常に悪いアプローチです。カプセル化。 そのため、クラス属性ごとに getter と setter を宣言し、次のようにしてその値にアクセスする必要があります。gameboard.boardgameboard.reveal

xobjectName.getX()

于 2013-04-20T02:04:01.443 に答える
0

メイン メソッドでボード クラスのインスタンスをインスタンス化した後、次のようにアクセスします (例)。

Board gameboard = new Board(5,5);
for (int i = 0; i < 5; i++) {
  for (int j = 0; j < 5; j++) {
    System.out.print(gameboard.board[i][j]);
  }
}

プライベート メンバーとアクセサー メソッドを使用する方がより適切なアプローチですが、必須ではありません。

于 2013-04-20T02:04:27.633 に答える
0

Board オブジェクトに格納されている「ボード」を取得するには、gameboard.board と入力するだけです。

于 2013-04-20T02:05:08.177 に答える
0

他の人が提案したように、次のコードを使用してメソッドに簡単にアクセスできます。

System.out.print(gameboard.board[i][j]);

多くの人が示唆しているように、カプセル化を組み込むことができます。

ただし、割り当てが許可されている場合は、より簡単に、1 つのクラス内で実装することもお勧めします。

これは、より少ないコードで効果的に機能し、IMO も同様に理解しやすいものです。

public class Board {
    private int x;
    private int y;
    private char[][] board;
    private boolean[][] reveal;

    public static void main(String[] args) {
        Board gameboard = new Board(5, 5);
        gameboard.printBoard();
    }

    public Board(int x, int y) {
        this.x = x;
        this.y = y;
        board = new char[x][y];
        reveal = new boolean[x][y];
    }

    public void printBoard() {
        for (int i = 0; i < board.length; i += 1) {
            for (int j = 0; j < board[i].length; j += 1) {
                if (reveal[i][j] == true) {
                    System.out.print(board[i][j]);
                } else {
                    System.out.print('?');
                }
            }
            System.out.println();
        }
    }

    public class Mine {

    }
}
于 2013-04-20T02:39:35.753 に答える