【完成】Pythonでオセロのスクリプトを作成

概要

オセロをプレイするAIを開発するために、まずはオセロを動かせるPythonスクリプトを構築しました。ざっくりと以下のような仕様です。

  1. 対戦形式は人間VS人間、人間VSCPU、CPUVSCPUが可能
  2. 人間とのIFはターミナル(GUIを作る予定はいまのところなし)
  3. CPUのアルゴリズムはランダム選択を実装(今後適宜追加予定)
  4. CPUVSCPUの場合、対戦回数を任意に指定可能(これを使って、例えば指定したアルゴリズムで10000回対戦させて傾向を見る、とかをする)
  5. 1局ごとに棋譜のログを出力可能(これを使って後で解析する)

使い方

まずスクリプトは以下で公開しています。(GitHub)
https://github.com/Rosyuku/othello.git
これをGit等でダウンロードしてきたら、以下のコマンドでオセロゲームを開始できます。

from Othello import Othello
Othello().start()

ターミナルで対局条件を設定するとゲームが始まります。

手の入力は「d6」や「e3」等の打ちたい場所(座標)を入力することで行います。

打てない手を拒否する機能はちゃんとつけています。

現状のCPUはランダムに打ってくるだけなので弱いです。

終わると結果が表示されます。

ログは以下のような感じで、1手ごとの盤面の状態が確認できるようにしています。

2018_02_13_23_58_22_965559.csv (287 ダウンロード)
CPU同士で対戦させる場合は回数を指定して実行することができます。

以下のようにコマンドで始めることもできます。

Othello(False, 2, 2, Algorithm.random_choice(), Algorithm.random_choice(), 10000, 4).start()

引数は順に、以下を指定しています。

  1. ターミナルで条件を設定するか
  2. 先攻は人間かCPUか
  3. 後攻は人間かCPUか
  4. 先手がCPUの場合のアルゴリズムは
  5. 後手がCPUの場合のアルゴリズムは
  6. 対戦回数
  7. 並列コア数

CPUアルゴリズムについて

アルゴリズムはクラスで作るようにしていて、Othelloプログラムからはget_next_choiceで呼ばれるようになっています。
引数には、ここまでの棋譜と、打てる場所の情報、手番が与えられます。

class random_choice:
    
    def __init__(self):
        pass
    
    def get_next_choice(self, diagrams, next_dia_all, turn):
        next_posi_enable = []
        for i in range(0,8):
            for j in range(0,8):
                if next_dia_all[i,j] == turn + 4:
                    next_posi_enable.append(str(Inv_columnList[j])+str(Inv_rowList[i]))
    
        return random.choice(next_posi_enable)

まとめ

ようやくオセロAI開発のスタート地点に立てました。ここからじゃんじゃん分析・強化していきたいと思います。
↓ランダム選択する条件で10000回対局した結果を分析しました。(2018/04/30)

オセロで打ち手をランダム選択する条件で10000回対局させてみた


6 thoughts on “【完成】Pythonでオセロのスクリプトを作成

  1. asachan

    強化学習バージョンは開発中なんでしたっけ?
    できたらURL公開してください!やりたいです!

    Reply
    1. Rosyuku Post author

      コメントありがとうございます。実はUI作る部分で詰まって止まってました。。。
      強化学習の勉強は進んだので、また再開したいと思います!

      Reply
  2. user

    私はプログラムを学んだことがありません。その為、
    >from Othello import Othello
    >Othello().start()
    ・このコマンドをどこに入力すべきなのか、
    ・動作させるためにどのソフトが必要なのか、
    ・ファイルの保存場所はデスクトップでよいのか

    現在この三点についてご教授して頂けないでしょうか?
    宜しくお願い致します。

    (また、強化学習や定石(途中までの進行)を指定してそこから対戦させる機能があると更に便利かと思います。)

    私はWindows 10で

    python-3.8.5.exe
    VSCodeUserSetup-x64-1.49.2.exe
    Anaconda3-2020.07-Windows-x86_64.exe
    上記のソフトはダウンロード済みです。

    Reply
    1. Rosyuku Post author

      コメントありがとうございます。手を付けられていないのですが、言われるような機能を設けたいと思っています。
      ・ファイルの保存場所はデスクトップでよいのか
       →問題ありません。
      ・動作させるためにどのソフトが必要なのか
       →既にAnacondaをインストールされているようなので追加は必要ないはずです。
      ・このコマンドをどこに入力すべきなのか、
       →ファイルの保存場所でコマンドプロンプトを立ち上げて、pythonと入力してください。
       その後にコマンドを入れてください。

      Reply

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA