はじめに
プログラミングをしたいけれど何をつくったらいいか分からないという方は、簡単なゲームをつくることからはじめてはいかかでしょうか。
今回は簡単にマルチプラットフォームの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の動作がおかしいのか、表示が崩れます。。。
遊び方
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同士の戦いが実現できます。