#はじめに
Pythonを用いてオセロゲームを開発しました.
誰でも簡単に遊べます
github ページ
https://github.com/chihina/othello-game-python
開発環境
python3.7.1
その他は以下のgithubページのrequirement.txt確認してください.
https://github.com/chihina/othello-game-python
ゲーム開始まで
まず, 以下のコマンドでgit clone をします.
git clone https://github.com/chihina/othello-game-python.git
次に, 以下のコマンドでライブラリを一括インストールします.
pip -r install requirement.txt
これで環境構築は終わりです. 簡単ですね.
以下のコマンドでゲームが始まります. ぜひ遊んでみてください!!
python game.py
ゲーム解説
対戦モード
対戦モードとしては以下の3つを実装しました.
- Human vs Human (人対人)
- Human vs CPU (人対コンピュータ)
- CPU vs CPU (コンピュータ対コンピュータ)
上2つのモードでは先攻・後攻を選択できます.
CPU種類
コンピュータは3つの強さを実装しました.
- Weak (弱い)
- Little strong (少し強い)
- Strong (強い)
以下にコンピュータの実装方法についてを述べます.
Weak (弱い)
着手可能な手の中から乱数を用いてランダムに打つ手を決定します.
要するにテキトーに手を選んでいます.
Little strong (少し強い)
オセロでは4隅を取ると強い(あくまで一般的に)と言われます.
つまり, 以下の画像の赤枠に自身のコマを打たなければ, 4隅を相手にとられることはありません.
よって, 以下の画像の赤枠に自身のコマを打たないように実装しました.
Strong (強い)
以下のwebサイトより入手したオセロの静的評価値を用います.
https://uguisu.skr.jp/othello/5-1.html
対戦シミュレーション結果
強さの順に勝率が出ていることがわかります.
如何にオセロにおいて隅が重要かがよくわかります.
あとがき
ここでは単純なCPUの実装にとどまりました.
今後の可能性としては, 数手先を読んだ手の決定, 機械学習を用いた手の決定が考えられます.
アドバイス等々ありましたらコメントいただけるとありがたいです!!
github ページ
https://github.com/chihina/othello-game-python
参考文献
オセロ(リバーシ)の作り方(アルゴリズム) ~石の位置による評価~ (2020/3/13 アクセス)
https://uguisu.skr.jp/othello/5-1.html