LoginSignup
10
11

More than 3 years have passed since last update.

Python でつくるオセロゲーム開発

Posted at

はじめに

Pythonを用いてオセロゲームを開発しました.
誰でも簡単に遊べます

github ページ
https://github.com/chihina/othello-game-python

top_resized.png

開発環境

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隅を相手にとられることはありません.
よって, 以下の画像の赤枠に自身のコマを打たないように実装しました.
top_resized - コピー.png

Strong (強い)

以下のwebサイトより入手したオセロの静的評価値を用います.
https://uguisu.skr.jp/othello/5-1.html

この静的評価値を利用して手を決定します.
value.png

対戦シミュレーション結果

3つのCPUのシミュレーション結果を以下に示します.
result.png

強さの順に勝率が出ていることがわかります.
如何にオセロにおいて隅が重要かがよくわかります.

あとがき

ここでは単純なCPUの実装にとどまりました.
今後の可能性としては, 数手先を読んだ手の決定, 機械学習を用いた手の決定が考えられます.
アドバイス等々ありましたらコメントいただけるとありがたいです!!

github ページ
https://github.com/chihina/othello-game-python

参考文献
オセロ(リバーシ)の作り方(アルゴリズム) ~石の位置による評価~ (2020/3/13 アクセス)
https://uguisu.skr.jp/othello/5-1.html

10
11
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11