diff options
author | John Fultz <jfultz@wolfram.com> | 2016-07-03 03:07:52 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-03 03:07:52 -0500 |
commit | 50c4a8cd619d0da78a1a4012d2f688dea4c7ec27 (patch) | |
tree | a40498693dc3b56005c96c35c7c38aa816782662 /bindings/python/test2_selfplay.py | |
parent | da2f20720facda706be06b5813ab20057d5b4de9 (diff) | |
parent | 147b22ae1225863cac9f07b3906415713afdcf02 (diff) |
Merge pull request #35 from gokceneraslan/master
Generate Python, Lua and Go bindings through SWIG
Diffstat (limited to 'bindings/python/test2_selfplay.py')
-rw-r--r-- | bindings/python/test2_selfplay.py | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/bindings/python/test2_selfplay.py b/bindings/python/test2_selfplay.py new file mode 100644 index 0000000..bb6e889 --- /dev/null +++ b/bindings/python/test2_selfplay.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +import time + +import quackle + +def startUp(lexicon='twl06', + alphabet='english', + datadir='../../data'): + + # Set up the data manager + dm = quackle.DataManager() + dm.setComputerPlayers(quackle.ComputerPlayerCollection.fullCollection()) + dm.setBackupLexicon(lexicon) + dm.setAppDataDirectory(datadir) + + # Set up the alphabet + abc = quackle.AlphabetParameters.findAlphabetFile(alphabet) + abc2 = quackle.Util.stdStringToQString(abc) #convert to qstring + fa = quackle.FlexibleAlphabetParameters() + + assert fa.load(abc2) + dm.setAlphabetParameters(fa) + + # Set up the board + board = quackle.BoardParameters() + dm.setBoardParameters(board) + + # Find the lexicon + dawg = quackle.LexiconParameters.findDictionaryFile(lexicon + '.dawg') + gaddag = quackle.LexiconParameters.findDictionaryFile(lexicon + '.gaddag') + dm.lexiconParameters().loadDawg(dawg) + dm.lexiconParameters().loadGaddag(gaddag) + + dm.strategyParameters().initialize(lexicon) + return dm + + +def getComputerPlayer(dm, name='Speedy Player'): + player, found = dm.computerPlayers().playerForName(name) + assert found + player = player.computerPlayer() + return player + + +dm = startUp() + +p1 = getComputerPlayer(dm) +p2 = getComputerPlayer(dm) + +# Create computer players +player1 = quackle.Player('Compy1', quackle.Player.ComputerPlayerType, 0) +player1.setComputerPlayer(p1) +print player1.name() + +player2 = quackle.Player('Compy2', quackle.Player.ComputerPlayerType, 1) +player2.setComputerPlayer(p2) +print player2.name() + +dm.seedRandomNumbers(42) + +game = quackle.Game() +players = quackle.PlayerList() + +players.append(player1) +players.append(player2) + +game.setPlayers(players) +game.associateKnownComputerPlayers() +game.addPosition() + +for i in range(50): + if game.currentPosition().gameOver(): + print "GAME OVER" + break + + player = game.currentPosition().currentPlayer() + move = game.haveComputerPlay() + #print "Player: " + player.name() + print "Rack : " + player.rack().toString() + print 'Move: ' + move.toString() + print 'Board: \n' + game.currentPosition().board().toString() + + time.sleep(1) |