SSブログ

Python でリバーシ(オセロ) [Python]

先日、息子と「人間とコンピューターが対戦するオセロのプログラム」の話をした。

コンピューターが人と対戦するオセロは、僕が中学生の頃に読んでいた電波新聞社のマイコンBASICマガジンに、よく掲載されるテーマだった。
自分が、うっすらと記憶しているプログラムでは、盤の位置によって重みがつけられていて、コンピューターの手番で置ける場所のうち、重みの一番大きい位置に置くというロジックだったと思う。
自分でもプレイしたが、単純なロジックの割には、勝ったり負けたりして意外と強いんだなと思った記憶がある。

あの頃は、ただひたすら雑誌にあるプログラムを入力してカセットテープに save して遊ぶだけだったけど、今だったら、あのプログラム書けそうだぞ、と思った。

インターネットで探せば、解説記事があるだろう・・・と思ったらあった。
http://uguisu.skr.jp/othello/5-1.html

僕が見たプログラムでは、もっと単純な重みづけだった気がするし、次の手の位置の重みだけで判定していたと思うが、ここの解説では、置かれた後の盤上の黒と白の駒の重みの合計の差で判定していて、幾分かロジックが複雑だ。

今の自分なら Python で書くのが一番早いし、駒をカッコよく描画する必要はないんで、コンソールに、駒の位置がわかる程度に print できればいいや。・・・できた
https://gist.github.com/nakagami/7a7d799bd4bd4ad8fcea96135c4af179
(python3 で動きます)

プレイしてみると、なんとなく自分が昔プレイしたコンピューターよりは弱い気がするんだけど、それは自分が強くなったからなのかな?
コメント(0) 
共通テーマ:日記・雑感

コメント 0

コメントの受付は締め切りました

Facebook コメント