質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

1862閲覧

オセロのゲームのアルゴリズムの説明が分かりません

nishika

総合スコア2

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/08/06 02:17

オセロのゲームのサンプルをまねしてつくろうとアルゴリズムを見たのですが、よく分かりません。説明では以下に記述しますが、★「指定されたx座標をx、y座標をyとする
右上方向の隣の駒が相手の駒であるかどうかを確認する。隣の駒の座標はx+1 y-1 ですので、配列[y – 1][x + 1] の要素の値である」の説明の部分で右上方向の隣の駒とはどこの場所で、隣の駒の座標がなぜx+1 y-1になるのかでつまずいています。単純な日本語の理解ができていないのは承知しています。ここでつまずいて後が進みません。私はまだjavaの入門と実践編しか読み終えていない初心者です。お力を貸していただけるとありがたいです。

駒の位置は座標で管理する。座標はx方向に0~7、同じくy方向に0~7とします。座標中にどの駒がおかれえいるかどうかはString[8][8]の多次元配列で管理する。
オセロゲームにおいて一番肝心となるのが同色で挟んだ駒をひっくり返す部分である。ある位置に駒をおくと、その上、下、右、左、左上、右上、左下、右下の8方向に配置済みの駒を確認し今おいた駒と挟むことができる場合はひっくり返す。
例として右上方向の配置を確認してひっくり返すアルゴリズムを記述する。

★指定されたx座標をx、y座標をyとする
右上方向の隣の駒が相手の駒であるかどうかを確認する
隣の駒の座標はx+1 y-1 ですので、配列[y – 1][x + 1] の要素の値である
隣の駒が自分の駒の場合は続きの処理はしない

相手の駒の場合は、さらにその右上方向の駒をひとつづつ確認する。ここでは自駒からの距離をあらわすiをインクリメントしつつfor文で処理をする
自分の駒がある場合は挟まれた位置にある駒を全て自分の駒として多次元配列の値を上書きをする

多次元配列の値を上書きする処理はfor文を使って行う
自分の駒がない場合や、座標が8×8の表から出てしまう場合は処理を終了。
このような処理を8方向分作成し、駒を配置するごとに8方向全てを確認し駒をひっくり返す。

駒のひっくり返しが終った状態の情報になっている配列の要素をひとつづつ取り出し、表として出力。
表の出力は2重for文を使って行う。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/08/06 02:31

右のほうが X が大きく、上の方が Y が小さくなるように座標をとっているのでしょう。数学のグラフを思い浮かべてください。そうすると、X を +1 したものが右隣で、そこから Y を -1 したものが右上になるのがわかると思います。
guest

回答3

0

ベストアンサー

右上方向の隣の駒」という表現に引っかかっている可能性もあるね。右上のマスの隣(どっちに?)みたいに考えているのかも。

ここでは、「隣」という言葉を、「自分を中心として隣接する周囲8マス」を意味する用語として使っている(と読み取れる)。
つまり、「右上方向の隣の駒」とは、「自分を中心として隣接する周囲8マスのうち、右上に位置するマスに置かれた駒」の意味だ。

端末画面の表示方向に従って、x座標は右向き、y座標は下向きに正の向きを(暗黙の内に)決めているので、「右上方向の隣の駒」の座標は、x+1, y-1ってことになる。

投稿2020/08/06 04:09

編集2020/08/06 04:36
Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2020/08/06 04:53

> 右上のマスの隣(どっちに?)みたいに考えているのかも。 正直私も最初そう読みました
nishika

2020/08/07 03:37

返信ありがとうございます。やはり最初は意味をはき違えてしまうような文章だったのですね。わかりやすく教えていただきありがとうございます!
guest

0

--------> x | | ..o <- ここ | .o. | ... / y

投稿2020/08/06 02:26

ozwk

総合スコア13553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

他の回答者様の補足代わりに置いておきます。
イメージ説明

投稿2020/08/06 05:28

dit.

総合スコア3235

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nishika

2020/08/07 03:25

返信ありがとうございます。とてもわかりやすくて助かりました!隣の駒の意味をおかげさまで知ることができました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問