LoginSignup
12
19

More than 5 years have passed since last update.

wxPythonでオセロをつくろう

Last updated at Posted at 2016-06-06

はじめに

プログラミングをしたいけれど何をつくったらいいか分からないという方は、簡単なゲームをつくることからはじめてはいかかでしょうか。
今回は簡単にマルチプラットフォームのGUIアプリを作成できるwxPythonを使用してオセロをつくってみます。
この記事に触発されてマインスイーパや五目並べなど、つくっていただければと思います。
ソースはGitHubに上げてありますので、そちらから取得してください。
2016/6/10 : バグ修正しました。masterブランチの最新版を取得してください

wxPythonのインストール

LinuxMint, Ubuntu, Debianの方

$sudo apt-get install python-wxgtk2.8

Windowsの方

  • python2.7.11のインストール
    こちらのpython.orgからバイナリをダウンロードしてpython2.7.11をインストールします。32bit/64bitは環境に合わせて選んでください。

  • wxPythonのインストール
    その後、こちらのwxpython.orgからpython2.7用のバイナリをダウンロードしてインストールします。32bit/64bitは先にインストールしたpython2.7.11と合わせてください。

動作確認環境

  • LinuxMint17.3 (python2.7.6 + wxpython3.0.3)
  • Windows10 (python2.7.11 + wxpython3.0.2)

wxpythonは2.8でも動作すると思います。
Windows10では遊ぶことは可能ですが、BoxSizerの動作がおかしいのか、表示が崩れます。。。

遊び方

screen_shot.png
Game modeを選んでSTARTを押してプレイします。先攻が必ず黒です。

  • Man vs Computer : 人が先攻
  • Computer vs Man : コンピュータが先攻

マウスの左クリックで石を置きます。
マウスの中ボタンクリックはデバッグ用なので使用しないでください。

補足

ソースコードは解説するより実物を見ていただいたほうが分かるかもしれませんが、ひとつだけ。
自分でコンピュータのAIを作成しようと思う方は以下の場所にインプリしてください。現状、インプリ時に使用できるのは「石を置ける場所のリスト(pos_list)」、「その場所に石を置いた際に取れる石の数のリスト(gain_list)」です。
現在のAIはAIと呼ぶのもおこがましいもので、石を置ける場所で最初に見つかった場所に置く、としています。

    def decideComputerNext(self, pos_list, gain_list):
        print ("pos_list :" + str(pos_list))
        print ("gain_list:" + str(gain_list))

        # Insert a computer's AI here
        next_pos = pos_list[0]

        return next_pos

ぜひ自分で強いAIを作成して、友人と戦ってみてください。
一人が Man vs Computer, もう一人が Computer vs Manを使用すれば、それぞれのコンピュータAI同士で勝負できます。
(相手の手をManの手としてそれぞれ入力していく)

ちなみに、なぜComputer vs ComputerというGame modeがあるのか、と疑問を持つ方もいると思いますが、あまり気にしないでください。
とりあえず自分のAI同士の戦いが実現できます。

参考

Python-izm

12
19
0

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
12
19