リンク内容
リバーシの問題がやっと解けました。しかしわからない所がいくつかあります。
疑問①
クラスReversi の真ん中あたりにある
while ((n = board.place(player, prompt(player))) <= 0)
なんですが、この while文は {} がつけられていません。これは省略していいものなんですか? 省略できるとしたら、この while文の次の一文だけが繰り返しの対象になる、という認識でいいのですか?
疑問②
クラスReversi の下の方にある
else if (!board.canPlace(opponent))
の "!" がわかりません。どういう意味でしょうか。
疑問③
クラスBoard の下の方
int place(Player player, String position) {
int count = 0;
try {
int col = position.charAt(0) - 'a';
int row = position.charAt(1) - '1';
position で与えられた文字を抜き出して、1文字目を -'a' 、2文字目を -'1' するという処理。
問題中の盤の升は列ah、行18 で表されていますが、実際の要素は 0~7 の番号で表されるので、例えばposition が "d2" だった場合、
d-a=3
2-1=1
となり、[1][3] が指定される(他サイトの解説で理解したのですが)。
しかし d-a というのがわかりません。d にも a にも整数は入っていませんよね?こういった計算ができるのですか?
あと charAt() は文字を取り出しているんですよね? 文字型同士の計算はできるのですか? int型に変換しなくてもいいのでしょうか。
どなたか解説をお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/27 04:16
2015/09/27 04:30
2015/09/27 05:04
退会済みユーザー
2015/09/27 05:12