summaryrefslogtreecommitdiff
path: root/bindings/python/test.py
blob: 3a958085455c544b6beb5dc1549d788a959fdec1 (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
# 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()