|
分類:[Java]
課題なんですがよろしくお願いします。
位置の指定は0 2のように、整数値2つをスペースで区切って入力するものとし、1つめの値が行、2つめの値が列を表すものとする。 また、実行例のように座標の指定が終わると盤面が描画され、すべてのマスが埋まった(9手目)ときにプログラムは停止するものとする(それ以外の終了判定は行わない)。char型配列dataを引数として勝敗の判定を行うメソッド isWinning(char[][] d) を作成し、勝敗のメッセージを表示してプログラムが終了するようにTicTakToe.javaを改良しなさい。 なお、このメソッドは縦・横・斜めのいずれか三目が同じ記号(OかX)で揃っていればtrueを、そうでなければfalseを返すものとする。
※注1 printBoard()メソッドは画面に盤面を描くためのメソッドである。 このプログラムでは printBoard(board); とすると、二次元配列board[][]にあるデータを元に盤面を描く。 ※注2 先行、後攻共に人間が入力するものとし、コンピュータの思考ルーチン(対戦機能)を実装する必要はない。
実行例(の一部) O|X|O -+-+- O|X| -+-+- X| |
2 1 ←先行(O)が2行1列を指定
O|X|O -+-+- O|X| -+-+- X|O|
・プログラム TicTacToe.java import java.util.Scanner;
class TicTacToe { public static void printBoard(char[][] data) { int i, j; i = j = 0; /* 通常のfor文で書いた方が綺麗だけれど、拡張for文の動作確認のために */ for (char[] col : data) { for (char row :col) { System.out.print(row); if (j != col.length-1) { System.out.print('|'); } else { System.out.println(); } j++; } i++; j = 0; if (i != col.length) { System.out.println("--+--+--"); } } } public static void main(String[] args) { char board[][] = {{' ',' ', ' '}, {' ',' ', ' '}, {' ',' ', ' '}}; //ここになにを書けばいいのか
} } }
二次元配列については理解しているつもりなんですが、スキャナーを使ってどう書けばいいのかが わかりません。よろしくお願いします。
|