- ベストアンサー
C#でゲーム!オセロをプログラミングする方法とは?
- C#を使用して6×6マスのオセロゲームをプログラミングする方法について教えてください。
- 盤上の置ける場所を知るメソッドや裏返すコマを判別するメソッド、またCOMの思考クラスについても詳しく教えてください。
- また、COMのレベルは最弱であり、ランダムに置けるマスを選ぶものとします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
・現在の盤上のどこが置ける場所かということを知るメソッド(もしくはクラス) ・裏返すコマはどれかを判別するメソッド(もしくはクラス) ・COMの思考クラス(ただし、COMレベルは最弱(置けるマスからランダム)) >ソースコードで例を示していただくわけにはいかないでしょうか? いや、それを作るということが、プログラミングということなんですが。オセロのような指向型ゲームは、コンピュータの思考部分をいかに作るかこそがポイントであって、「そのソースコードを教えてくれ」となったら、それはあなたの作ったものではなくなってしまいますよ。 とりあえず、ヒントとなるものだけ。 例えば、ある空白のマス目があったとして、その隣のマス目について、相手の駒があるか、あったら更にその先のマス目はどうか、更にその先は……。とチェックしていって、「そのマス目と、ずっと先にある自分の駒との間がすべて相手の駒で埋まっている」という状態であれば、それはひっくり返せるということになります。 それを全方向について行っていけば、そのマス目に駒を置いたとき全部でいくつひっくり返せるかが計算できます。これを全てのマス目について行えば、どこに置いたらいくつひっくり返せるかがすべてわかるわけです。 こうして算出できた値に、「四隅は10個相手の駒を取れたのと同じぐらい重要だからプラス10」というようにして重要度ごとにウェイトを加算していきます。その結果、もっとも値が大きいところが「次に駒を置くべきところ」と計算できるわけです。 こういった「総当り計算」による計算を「MIN-MAX(ミニマックス)」と呼びます。思考型アルゴリズムのもっとも基本的な考え方です。「ミニマックス」で検索すればたくさんヒットしますので、まずはこれを勉強して、ごく単純なミニマックスによるアルゴリズムを作ってみましょう。それで一応動くところまでくれば、後はそれをベースに、独自のアルゴリズムを考えていけばいいでしょう。
その他の回答 (1)
- fifaile
- ベストアンサー率25% (622/2403)
よい作り方ってなんでしょう? 動けば何でもいいと思いますが。 一つ目二つ目は適当に作ってもらうとして、 三つ目は全てのマスに対して試行して、返せるコマが一番多いところに置く、 というようなことでいいとおもいますよ。
補足
説明不足で申し訳ございません。 私のいう良いというのは、 小さくて、ソースが複雑すぎない簡単なものであることです。 また、ソースコードで例を示していただくわけにはいかないでしょうか?