blob: 9209f5214dc1c97ac6190269dbbf0c5581af2818 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
require 'quackle'
function startUp(lexicon, alphabet, datadir)
local lexicon = lexicon or 'twl06'
local alphabet = alphabet or 'english'
local datadir = 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 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
|