From 80bc5b91205dd48870e5134b0c71a78718253a95 Mon Sep 17 00:00:00 2001 From: Gökçen Eraslan Date: Sun, 24 Jan 2016 13:15:51 +0100 Subject: bindings: Add a lua test file and compile with lua5.1 for luajit compatibility. --- bindings/lua/test_selfplay.lua | 88 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 bindings/lua/test_selfplay.lua (limited to 'bindings/lua/test_selfplay.lua') diff --git a/bindings/lua/test_selfplay.lua b/bindings/lua/test_selfplay.lua new file mode 100644 index 0000000..4be6c28 --- /dev/null +++ b/bindings/lua/test_selfplay.lua @@ -0,0 +1,88 @@ +require 'quackle' + +function startUp(lexicon, alphabet, datadir) + + local lexicon = lexicon and lexicon or 'twl06' + local alphabet = alphabet and alphabet or 'english' + local datadir = datadir and datadir or '../../data' + + -- Set up the data manager + local dm = quackle.DataManager() + dm:setComputerPlayers(quackle.ComputerPlayerCollection.fullCollection()) + dm:setBackupLexicon(lexicon) + dm:setAppDataDirectory(datadir) + + -- Set up the alphabet + local abc = quackle.AlphabetParameters.findAlphabetFile(alphabet) + local abc2 = quackle.Util.stdStringToQString(abc) --convert to qstring + local fa = quackle.FlexibleAlphabetParameters() + + assert(fa:load(abc2)) + dm:setAlphabetParameters(fa) + + -- Set up the board + local board = quackle.BoardParameters() + dm:setBoardParameters(board) + + -- Find the lexicon + local dawg = quackle.LexiconParameters.findDictionaryFile(lexicon .. '.dawg') + local gaddag = quackle.LexiconParameters.findDictionaryFile(lexicon .. '.gaddag') + dm:lexiconParameters():loadDawg(dawg) + dm:lexiconParameters():loadGaddag(gaddag) + + dm:strategyParameters():initialize(lexicon) + return dm + +end + + +function getComputerPlayer(dm, name) + + local name = name and name or 'Speedy Player' + local player, found = dm:computerPlayers():playerForName(name) + assert(found) + player = player:computerPlayer() + return player + +end + +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:push_back(player1) +players:push_back(player2) + +game:setPlayers(players) +game:associateKnownComputerPlayers() +game:addPosition() + +for i=1, 50 do + if game:currentPosition():gameOver() then + print "GAME OVER" + break + end + + 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()) + +end -- cgit v1.2.3 From 7c2d25968459b9268b51a9ac0c15f66c4b73a800 Mon Sep 17 00:00:00 2001 From: Gökçen Eraslan Date: Sun, 24 Jan 2016 13:53:17 +0100 Subject: bindings: Fix lua default argument trick. --- bindings/lua/test_selfplay.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'bindings/lua/test_selfplay.lua') diff --git a/bindings/lua/test_selfplay.lua b/bindings/lua/test_selfplay.lua index 4be6c28..9209f52 100644 --- a/bindings/lua/test_selfplay.lua +++ b/bindings/lua/test_selfplay.lua @@ -2,9 +2,9 @@ require 'quackle' function startUp(lexicon, alphabet, datadir) - local lexicon = lexicon and lexicon or 'twl06' - local alphabet = alphabet and alphabet or 'english' - local datadir = datadir and datadir or '../../data' + local lexicon = lexicon or 'twl06' + local alphabet = alphabet or 'english' + local datadir = datadir or '../../data' -- Set up the data manager local dm = quackle.DataManager() @@ -38,10 +38,12 @@ end function getComputerPlayer(dm, name) - local name = name and name or 'Speedy Player' + local name = name or 'Speedy Player' + local player, found = dm:computerPlayers():playerForName(name) assert(found) player = player:computerPlayer() + return player end -- cgit v1.2.3