前回、C#でオセロを作ってみるの続きです。今回はコンピューターに次の一手を選ばせて対戦できるようにします。

追記:コンピュータのアルゴリズムを改良して作り直しました。こちらのページがおすすめです。

オセロをつくる コンピューターをもっと強くする

オセロをつくる 先読みさせてコンピューターをもっと強くする

以下は古いコンテンツです。

await Task.Delay(1000);をいれているのは着手が完了するとすぐにコンピュータが処理をするため、すぐに自分の手番になってしまうからです。ちょっと落ち着かないので、着手して1秒間待ってからコンピュータに次の手を考えさせます。

EnemyThinkメソッドはコンピュータに次の一手を決めさせるためのメソッドです。石が置かれていない場所で、黒を挟むことができる場所を探させます。見つかったら乱数で適当に決めさせています。そして石を置かせて石をひっくり返させています。

もし次にどこへ打っても石をひっくり返せない場合はパスをすることになります。その場合、ステータスバーにパスをしたこと、手番はプレーヤー側にあることがわかるように表示させます。

それからプレーヤー側に次の手があるかどうかもプログラムで調べさせています。そして双方がパスをした場合はゲームセットの処理をおこなうことになります。

ゲームセットになったときは双方の石の数を数えて勝ち負けを表示させています。

それにしても弱すぎ・・・