1
0
Fork 0
mirror of https://github.com/shlomif/PySolFC.git synced 2025-04-05 00:02:29 -04:00

Working now - import board.

Mostly at least.
This commit is contained in:
Shlomi Fish 2017-12-18 21:52:29 +02:00
parent 3fc989ae0a
commit a803849b35
3 changed files with 42 additions and 26 deletions

View file

@ -485,7 +485,7 @@ class Game(object):
# start a new name # start a new name
def newGame(self, random=None, restart=0, autoplay=1, shuffle=True, def newGame(self, random=None, restart=0, autoplay=1, shuffle=True,
s_game=0): dealer=None):
# print 'Game.newGame' # print 'Game.newGame'
self.finished = False self.finished = False
old_busy, self.busy = self.busy, 1 old_busy, self.busy = self.busy, 1
@ -501,8 +501,6 @@ class Game(object):
if shuffle: if shuffle:
self.shuffle() self.shuffle()
assert len(self.s.talon.cards) == self.gameinfo.ncards assert len(self.s.talon.cards) == self.gameinfo.ncards
else:
self.s = s_game
for stack in self.allstacks: for stack in self.allstacks:
stack.updateText() stack.updateText()
self.updateText() self.updateText()
@ -528,7 +526,10 @@ class Game(object):
self.stopSamples() self.stopSamples()
# let's go # let's go
self.moves.state = self.S_INIT self.moves.state = self.S_INIT
self.startGame() if dealer:
dealer()
else:
self.startGame()
self.startMoves() self.startMoves()
for stack in self.allstacks: for stack in self.allstacks:
stack.updateText() stack.updateText()

View file

@ -819,12 +819,26 @@ class FreeCellSolver_Hint(Base_Solver_Hint):
return self._id return self._id
def importFile(solver, fh, s_game, self): def importFile(solver, fh, s_game, self):
game = s_game.s
solver._id = 1000 solver._id = 1000
s_game.endGame()
s_game.newGame(
shuffle=True,
dealer=lambda: solver.importFileHelper(fh, s_game, self))
def importFileHelper(solver, fh, s_game, self):
game = s_game.s
stack_idx = 0 stack_idx = 0
def crCard(id, deck, suit, rank): def crCard(suit, rank):
return s_game._createCard(id, deck, suit, rank, 0, 0) print(suit, rank)
ret = [i for i, c in enumerate(game.talon.cards)
if c.suit == suit and c.rank == rank]
assert len(ret) == 1
ret = ret[0]
game.talon.cards = \
game.talon.cards[0:ret] + game.talon.cards[ret:] +\
[game.talon.cards[ret]]
s_game.flipMove(game.talon)
for line_p in fh: for line_p in fh:
line = line_p.rstrip('\r\n') line = line_p.rstrip('\r\n')
m = re.match(r'^(?:Foundations:|Founds?:)\s*(.*)', line) m = re.match(r'^(?:Foundations:|Founds?:)\s*(.*)', line)
@ -834,11 +848,10 @@ class FreeCellSolver_Hint(Base_Solver_Hint):
for foundat in game.foundations: for foundat in game.foundations:
suit = foundat.cap.suit suit = foundat.cap.suit
if "CSHD"[suit] == gm[0]: if "CSHD"[suit] == gm[0]:
foundat.cards = [crCard( for r in range("0A23456789TJQK".index(gm[1])):
solver._getNextId(), 0, suit, r crCard(suit, r)
) for r in range( s_game.moveMove(1, game.talon, foundat,
"A23456789TJQK".index(gm[1])) frames=0)
]
break break
continue continue
m = re.match(r'^(?:FC:|Freecells:)\s*(.*)', line) m = re.match(r'^(?:FC:|Freecells:)\s*(.*)', line)
@ -846,26 +859,22 @@ class FreeCellSolver_Hint(Base_Solver_Hint):
g = re.findall( g = re.findall(
r'\b((?:[A23456789TJQK][HCDS])|\-)\b', m.group(1)) r'\b((?:[A23456789TJQK][HCDS])|\-)\b', m.group(1))
while len(g) < len(game.reserves): while len(g) < len(game.reserves):
g.append(('-')) g.append('-')
for i, gm in enumerate(g): for i, gm in enumerate(g):
str_ = gm str_ = gm
if str_ == '-': if str_ != '-':
game.reserves[i].cards = []
else:
print(str_) print(str_)
game.reserves[i].cards = [crCard( crCard("CSHD".index(str_[1]),
solver._getNextId(), 0, "CSHD".index(str_[1]), "A23456789TJQK".index(str_[0]))
"A23456789TJQK".index(str_[0]))] s_game.moveMove(
1, game.talon, game.reserves[i], frames=0)
continue continue
g = re.findall(r'\b((?:[A23456789TJQK][HCDS]))\b', line) g = re.findall(r'\b((?:[A23456789TJQK][HCDS]))\b', line)
game.rows[stack_idx].cards = [ for str_ in g:
crCard(solver._getNextId(), 0, "CSHD".index(str_[1]), crCard("CSHD".index(str_[1]), "A23456789TJQK".index(str_[0]))
"A23456789TJQK".index(str_[0])) s_game.moveMove(1, game.talon, game.rows[stack_idx], frames=0)
for str_ in g
]
stack_idx += 1 stack_idx += 1
s_game.endGame()
s_game.newGame(shuffle=False, s_game=game)
def calcBoardString(self): def calcBoardString(self):
game = self.game game = self.game

View file

@ -1216,6 +1216,12 @@ Unsupported game for import.
'''), '''),
bitmap='error') bitmap='error')
return return
if True:
filename = '/tmp/f.board'
with open(filename, 'r') as fh:
game = self.game
game.Solver_Class(game, self).importFile(fh, game, self)
return
filename = self.game.filename filename = self.game.filename
if filename: if filename: