summaryrefslogtreecommitdiff
path: root/bindings/python/test1_position.py
diff options
context:
space:
mode:
authorGökçen Eraslan <gokcen.eraslan@gmail.com>2016-01-07 18:32:14 +0100
committerGökçen Eraslan <gokcen.eraslan@gmail.com>2016-01-07 18:32:14 +0100
commit027385d0ff9f1223cb98410a29937e38d82de397 (patch)
treef0363a0ae6edaf6db30d0e487cb987a27f733d4a /bindings/python/test1_position.py
parentc7276ad4f627d3c3569996519de001431c04b1c0 (diff)
bindings: Add another python test file to demonstrate selfplay.
Diffstat (limited to 'bindings/python/test1_position.py')
-rw-r--r--bindings/python/test1_position.py80
1 files changed, 80 insertions, 0 deletions
diff --git a/bindings/python/test1_position.py b/bindings/python/test1_position.py
new file mode 100644
index 0000000..3a95808
--- /dev/null
+++ b/bindings/python/test1_position.py
@@ -0,0 +1,80 @@
+# coding: utf-8
+
+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()
+ fa.thisown = False
+
+ assert fa.load(abc2)
+ dm.setAlphabetParameters(fa)
+
+ # Set up the board
+ board = quackle.BoardParameters()
+ board.thisown = False
+ 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()
+
+# Create a computer player
+player1 = getComputerPlayer(dm)
+print player1.name()
+
+# Create the Game file (.gcg) reader
+gamereader = quackle.GCGIO()
+gamePath = quackle.Util.stdStringToQString('../../test/positions/short_game_with_bad_moves.gcg')
+game = gamereader.read(gamePath, quackle.Logania.MaintainBoardPreparation)
+
+# Get the current position
+position = game.currentPosition()
+
+player1.setPosition(position)
+
+racks = quackle.ProbableRackList()
+unseenbag = position.unseenBag()
+if unseenbag.size() <= dm.parameters().rackSize() + 3:
+ enum = quackle.Enumerator(unseenbag)
+ enum.enumerate(racks)
+ for rack in racks:
+ print rack
+
+movesToShow = 10
+
+print "Board state: \n%s" % position.board().toString()
+print "Move made: %s" % position.moveMade().toString()
+print "Current player: %s" % position.currentPlayer().storeInformationToString()
+print "Turn number: %i" % position.turnNumber()
+
+movelist = player1.moves(10)
+
+# Show 10 moves suggested by computer player
+for move in movelist: print move.toString()