Python でリバーシ(オセロ) [Python]
先日、息子と「人間とコンピューターが対戦するオセロのプログラム」の話をした。
コンピューターが人と対戦するオセロは、僕が中学生の頃に読んでいた電波新聞社のマイコンBASICマガジンに、よく掲載されるテーマだった。
自分が、うっすらと記憶しているプログラムでは、盤の位置によって重みがつけられていて、コンピューターの手番で置ける場所のうち、重みの一番大きい位置に置くというロジックだったと思う。
自分でもプレイしたが、単純なロジックの割には、勝ったり負けたりして意外と強いんだなと思った記憶がある。
あの頃は、ただひたすら雑誌にあるプログラムを入力してカセットテープに save して遊ぶだけだったけど、今だったら、あのプログラム書けそうだぞ、と思った。
インターネットで探せば、解説記事があるだろう・・・と思ったらあった。
http://uguisu.skr.jp/othello/5-1.html
僕が見たプログラムでは、もっと単純な重みづけだった気がするし、次の手の位置の重みだけで判定していたと思うが、ここの解説では、置かれた後の盤上の黒と白の駒の重みの合計の差で判定していて、幾分かロジックが複雑だ。
今の自分なら Python で書くのが一番早いし、駒をカッコよく描画する必要はないんで、コンソールに、駒の位置がわかる程度に print できればいいや。・・・できた
https://gist.github.com/nakagami/7a7d799bd4bd4ad8fcea96135c4af179
(python3 で動きます)
プレイしてみると、なんとなく自分が昔プレイしたコンピューターよりは弱い気がするんだけど、それは自分が強くなったからなのかな?
コンピューターが人と対戦するオセロは、僕が中学生の頃に読んでいた電波新聞社のマイコンBASICマガジンに、よく掲載されるテーマだった。
自分が、うっすらと記憶しているプログラムでは、盤の位置によって重みがつけられていて、コンピューターの手番で置ける場所のうち、重みの一番大きい位置に置くというロジックだったと思う。
自分でもプレイしたが、単純なロジックの割には、勝ったり負けたりして意外と強いんだなと思った記憶がある。
あの頃は、ただひたすら雑誌にあるプログラムを入力してカセットテープに save して遊ぶだけだったけど、今だったら、あのプログラム書けそうだぞ、と思った。
インターネットで探せば、解説記事があるだろう・・・と思ったらあった。
http://uguisu.skr.jp/othello/5-1.html
僕が見たプログラムでは、もっと単純な重みづけだった気がするし、次の手の位置の重みだけで判定していたと思うが、ここの解説では、置かれた後の盤上の黒と白の駒の重みの合計の差で判定していて、幾分かロジックが複雑だ。
今の自分なら Python で書くのが一番早いし、駒をカッコよく描画する必要はないんで、コンソールに、駒の位置がわかる程度に print できればいいや。・・・できた
https://gist.github.com/nakagami/7a7d799bd4bd4ad8fcea96135c4af179
(python3 で動きます)
プレイしてみると、なんとなく自分が昔プレイしたコンピューターよりは弱い気がするんだけど、それは自分が強くなったからなのかな?
コメント 0
コメントの受付は締め切りました