#初めに
プログラミングを勉強するには何を作るか目標を立てるのがベストだといいます。
私が目標として選んだのはオセロです。
ゲーム開発の勉強も兼ねてUnityでオセロを作りました。
一人でプレイできるようにはなったものの、AIが作れません。
強化学習だか深層学習だかで実装できるようなので勉強しながらコードを書いていきます。
今のところデータをダウンロードしただけです。
ここのデータをダウンロードしました。
#ソースコード
言語は機械学習のライブラリが豊富なpythonです。
同階層にdatasetというディレクトリを作成し、その中にデータを入れていきます。
download.py
import sys
import urllib.request
import os.path
url = "https://www.skatgame.net/mburo/ggs/game-archive/Othello/"
#ダウンロードするファイルのリスト
fileList = {
}
#ダウンロードするファイルのリストを作る
for fileNumber in range(1, 155):
if fileNumber <= 9:
fileList[fileNumber] = 'Othello.0' + str(fileNumber) + 'e4.ggf.bz2'
elif fileNumber <= 128:
fileList[fileNumber] = 'Othello.' + str(fileNumber) + 'e4.ggf.bz2'
else:
fileList[fileNumber] = 'Othello.' + str(fileNumber) + '.ggf.bz2'
print('making download list...' + fileList[fileNumber])
pass
print("Done")
def _download(fileName):
filePath = "./dataset/" + fileName
if os.path.exists(filePath):
return
print("Downloading " + fileName + " ... ")
urllib.request.urlretrieve(url + fileName, filePath)
print("Done")
#ファイルをダウンロードする
for fileName in fileList.values():
_download(fileName)
#今後
次はダウンロードしたファイルを解凍する予定です。
手動で解凍したらこんなデータが出てきました。(改行がないので見づらいですが)
Othello.01e4.ggf
(;GM[Othello]PC[GGS/os]DT[940606712]PB[igor]PW[ant]RB[1285.87]RW[1471.98]TI[15:00//02:00]TY[8]RE[-38.00]BO[8 -------- -------- -------- ---O*--- ---*O--- -------- -------- -------- *]B[D3//4.58]W[C5/8.57/1.56]B[D6//1.67]W[E3/-35.58/0.09]B[F4//1.05]W[C6/-52.58/0.08]B[F5//1.41]W[C3/-24.58/0.06]B[C4//1.00]W[B5/-39.58/0.06]B[B4//0.93]W[F3/18.69/0.02]B[A5//2.25]W[B6/8.83/0.01]B[E6//1.40]W[A6/3.56]B[A7//1.72]W[A3/5.22/0.01]B[C7//2.88]W[D7/8.34/0.01]B[C8//1.78]W[G4/5.74/0.01]B[H3//4.70]W[F7/8.15]B[E7//3.44]W[G6/4.89/0.01]B[G3//3.31]W[G5/8.55/0.01]B[H5//1.46]W[F8/18.78/0.01]B[E8//4.44]W[F6/20.19/0.01]B[F2//4.39]W[D2/22.85/0.02]B[E2//1.56]W[C2/24.21/0.01]B[D1//4.15]W[B3/27.01/0.01]B[C1//2.23]W[A4/29.50/0.03]B[A2//1.40]W[G2/31.79/0.01]B[F1//4.67]W[H1/36.59/0.01]B[G1//1.46]W[E1/42.76]B[B2//1.40]W[A1/35.63/0.01]B[B1//0.88]W[H2/34.88/0.01]B[G8//3.04]W[D8/35.22/0.01]B[G7//1.66]W[H8/35.13/0.01]B[H7//0.91]W[H6/37.81/0.01]B[pass//0.68]W[H4/40.62/0.01]B[pass//0.62]W[B7/39.05/0.01]B[B8//1.80]W[A8];)
初心者がこのデータの前処理をするのは大変そうですが…
やるしかない!乞うご期待!
アドバイスがあればください!
#追記(2019/07/11)
今はDjangoの勉強で忙しいので続きは夏休みあたりになりそう。
#追記(2019/09/04)
先駆者が整形済みのデータを公開していました。
これを使います。
オセロの教師データ公開【ディープラーニング】 - meipuruのブログ
学習データ