summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGökçen Eraslan <gokcen.eraslan@gmail.com>2016-01-24 13:15:51 +0100
committerGökçen Eraslan <gokcen.eraslan@gmail.com>2016-01-24 13:15:51 +0100
commit80bc5b91205dd48870e5134b0c71a78718253a95 (patch)
tree11886dde0f3cb37acd45d180396847e9e58e5611
parent11c010c445f4dc00c1d92fd13c5ea40df5cbecfe (diff)
bindings: Add a lua test file and compile with lua5.1 for luajit compatibility.
-rw-r--r--bindings/Makefile3
-rw-r--r--bindings/lua/test_selfplay.lua88
2 files changed, 89 insertions, 2 deletions
diff --git a/bindings/Makefile b/bindings/Makefile
index 702d678..55d1164 100644
--- a/bindings/Makefile
+++ b/bindings/Makefile
@@ -3,7 +3,7 @@ CC=g++
QTFLAGS := $(shell pkg-config QtCore --cflags)
QTLIBS := $(shell pkg-config QtCore --libs)
PYTHONFLAGS := $(shell pkg-config python2 --cflags)
-LUAFLAGS := $(shell pkg-config lua52 --cflags)
+LUAFLAGS := $(shell pkg-config lua5.1 --cflags)
INCLUDES=-I..
QUACKLELIBS=../lib/release/libquackle.a ../quackleio/lib/release/libquackleio.a
@@ -40,5 +40,4 @@ clean:
-rm -rf */*.o
-rm -rf */*.so
-rm -rf */*.pyc
- -rm -rf lua
-rm -rf go/quackle.swigcxx
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