Python(オセロ19_コード構成のまとめ)

■今までのオセロコードのまとめ。
データベースのコードを組み込んで形にはなったので、最後に今回のオセロのコードの構成などまとめておく。まず、ファイルは現在、下のように9ファイルある。

sample078_Othello_main.py
 sample078_common.py
 sample078_commonDBcode.py

 sample078_logicBase.py
  sample078_cornerLogic.py
  sample078_randomLogic.py
  sample078_searchLogic.py
  sample078_boardscoreLogic.py
  sample078_chatGPTLogic.py

mainが実際の実行部分、共通して使うメソッドやデータベース(DB)関連はcommon、commonDBcodeとしてまとめている。logic部分は、まずベースとなるlogicBaseを作り、そこから継承させてそれぞれのロジックのクラスを作る。logicBaseは下のように、フィールドとメソッドを決めているだけ。movelogicで、盤面の状況(board)、置ける場所(blank_list)、現在の手番(currentTurn)を引数として入力し、返し値として選択した場所を返す。詳細な内容は、それぞれのクラスで定める。

class logicBase:
    def __init__(self, name, elo, logic_id, version, description):
        self.name = name
        self.elo = elo
        self.logic_id = logic_id
        self.version = version
        self.description = description

    def movelogic(self, board, blank_list, currentTurn):
        pass

実行は5つのロジックからランダムで2つ選び対戦させることを所定の回数繰り返す。この1セットを1実行とする。先攻、後攻で有利不利があるそうなので、順番も考慮した組み合わせを使う。

結果は前回検討したように、実行毎(runs)、ゲーム毎(games)、1手毎(moves)に加え、ロジックとEloレーティングも入力する。

先のファイル(logicクラスはrandomのみ)をChat GPTに入れて、クラス図やシーケンス図を作った。以前、生成AIを使う際にAI関連の問い合わせをしたせいか、オセロAIの案件として処理されており、あまり正確ではなさそう。でも、参考程度にはなる。

・コンポーネント図
参照関連は概ね正しい(各logicクラスの中でもcommonは使っているけど)。

・クラス図
commonのファイルもアップロードしたけど、main → logicBase → 各logicクラスのみ。

・シーケンス図
AIと表記されているところはlogicクラスの誤りかと思う。Gameというクラスはないし、insert_moveは各ターンごとに呼んでいるわけではない。半分くらいは間違っていそう。

・E-R図
noteがなかったり、movesの細かな列が消えていたりするけど、相関関係は正しい。

今回で一端区切りにする。多少データが揃った段階で解析関連のことはやりたい。

コメントを残す

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