本文整理汇总了Python中pychess.Utils.lutils.LBoard.LBoard.applyMove方法的典型用法代码示例。如果您正苦于以下问题:Python LBoard.applyMove方法的具体用法?Python LBoard.applyMove怎么用?Python LBoard.applyMove使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pychess.Utils.lutils.LBoard.LBoard
的用法示例。
在下文中一共展示了LBoard.applyMove方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_parseFAN
# 需要导入模块: from pychess.Utils.lutils.LBoard import LBoard [as 别名]
# 或者: from pychess.Utils.lutils.LBoard.LBoard import applyMove [as 别名]
def test_parseFAN(self):
"""Testing parseFAN"""
board = LBoard()
board.applyFen("rnbqkbnr/8/8/8/8/8/8/RNBQKBNR w KQkq - 0 1")
for lmove in genAllMoves(board):
board.applyMove(lmove)
if board.opIsChecked():
board.popMove()
continue
board.popMove()
fan = toFAN(board, lmove)
self.assertEqual(parseFAN(board, fan), lmove)
示例2: test_apply_pop
# 需要导入模块: from pychess.Utils.lutils.LBoard import LBoard [as 别名]
# 或者: from pychess.Utils.lutils.LBoard.LBoard import applyMove [as 别名]
def test_apply_pop(self):
"""Testing Atomic applyMove popMove"""
board = LBoard(variant=ATOMICCHESS)
board.applyFen(FEN1)
print(board)
hist_exploding_around0 = [a[:] for a in board.hist_exploding_around]
print_apply_pop = False
for lmove1 in genAllMoves(board):
board.applyMove(lmove1)
if board.opIsChecked():
if print_apply_pop: print("popMove1 (invalid)", Move(lmove1))
board.popMove()
continue
hist_exploding_around1 = [a[:] for a in board.hist_exploding_around]
for lmove2 in genAllMoves(board):
board.applyMove(lmove2)
if print_apply_pop: print(" applyMove2", Move(lmove2))
if board.opIsChecked():
if print_apply_pop: print(" popMove2 (invalid)", Move(lmove2))
board.popMove()
continue
hist_exploding_around2 = [a[:] for a in board.hist_exploding_around]
for lmove3 in genAllMoves(board):
board.applyMove(lmove3)
if print_apply_pop: print(" applyMove3", Move(lmove3))
if board.opIsChecked():
if print_apply_pop: print(" popMove3 (invalid)", Move(lmove3))
board.popMove()
continue
board.popMove()
if print_apply_pop: print(" popMove3", Move(lmove3))
self.assertEqual(hist_exploding_around2, board.hist_exploding_around)
board.popMove()
if print_apply_pop: print(" popMove2", Move(lmove2))
self.assertEqual(hist_exploding_around1, board.hist_exploding_around)
board.popMove()
if print_apply_pop: print("popMove1", Move(lmove1))
self.assertEqual(hist_exploding_around0, board.hist_exploding_around)
示例3: PyChessCECP
# 需要导入模块: from pychess.Utils.lutils.LBoard import LBoard [as 别名]
# 或者: from pychess.Utils.lutils.LBoard.LBoard import applyMove [as 别名]
#.........这里部分代码省略.........
minutes[i] = re.match(r'\d*', minutes[i]).group()
self.basetime = int(minutes[0])*60
if len(minutes) > 1 and minutes[1]:
self.basetime += int(minutes[1])
self.clock[:] = self.basetime, self.basetime
self.increment = inc, inc
elif lines[0] == "st":
self.searchtime = float(lines[1])
elif lines[0] == "sd":
self.sd = int(lines[1])
# Unimplemented: nps
elif lines[0] == "time":
self.clock[self.playingAs] = float(lines[1])/100.
elif lines[0] == "otim":
self.clock[1-self.playingAs] = float(lines[1])/100.
elif lines[0] == "usermove":
self.__stopSearching()
try:
move = parseAny (self.board, lines[1])
except ParsingError, e:
print "Error (unknown command):", lines[1]
print self.board
continue
if not validateMove(self.board, move):
print "Illegal move", lines[1]
print self.board
continue
self.board.applyMove(move)
self.playingAs = self.board.color
if not self.forced and not self.analyzing:
self.__go()
if self.analyzing:
self.__analyze()
elif lines[0] == "?":
if not self.forced and not self.analyzing:
self.__stopSearching()
elif lines[0] == "ping":
print "pong", lines[1]
elif lines[0] == "draw":
if self.__willingToDraw():
print "offer draw"
elif lines[0] == "result":
# We don't really care what the result is at the moment.
pass
elif lines[0] == "setboard":
self.__stopSearching()
try:
self.board = LBoard(self.board.variant)
fen = " ".join(lines[1:])
self.board.applyFen(fen.replace("[", "/").replace("]", ""))
except SyntaxError as e:
print "tellusererror Illegal position:", str(e)
if self.analyzing:
self.__analyze()
示例4: PyChessFICS
# 需要导入模块: from pychess.Utils.lutils.LBoard import LBoard [as 别名]
# 或者: from pychess.Utils.lutils.LBoard.LBoard import applyMove [as 别名]
#.........这里部分代码省略.........
self.tellHome("Starting a game (%s, %s) gameno: %s" %
(ficsgame.wplayer.name, ficsgame.bplayer.name, ficsgame.gameno))
if ficsgame.bplayer.name.lower() == self.connection.getUsername().lower():
self.playingAs = BLACK
else:
self.playingAs = WHITE
self.board = LBoard(NORMALCHESS)
# Now we wait until we recieve the board.
def __go (self):
if self.worker:
self.worker.cancel()
self.worker = GtkWorker(lambda worker: PyChess._PyChess__go(self, worker))
self.worker.connect("published", lambda w, msg: self.extendlog(msg))
self.worker.connect("done", self.__onMoveCalculated)
self.worker.execute()
def __willingToDraw (self):
return self.scr <= 0 # FIXME: this misbehaves in all but the simplest use cases
def __onGameEnded (self, boardManager, ficsgame):
self.tellHome(reprResult_long[ficsgame.result] + " " + reprReason_long[ficsgame.reason])
lsearch.searching = False
if self.worker:
self.worker.cancel()
self.worker = None
def __onMoveCalculated (self, worker, sanmove):
if worker.isCancelled() or not sanmove:
return
self.board.applyMove(parseSAN(self.board,sanmove))
self.connection.bm.sendMove(sanmove)
self.extendlog(["Move sent %s" % sanmove])
def __onBoardUpdate (self, boardManager, gameno, ply, curcol, lastmove, fen, wname, bname, wms, bms):
self.extendlog(["","I got move %d %s for gameno %s" % (ply, lastmove, gameno)])
if self.gameno != gameno:
return
self.board.applyFen(fen)
self.clock[:] = wms/1000., bms/1000.
if curcol == self.playingAs:
self.__go()
def __onAmbiguousMove (self, errorManager, move):
# This is really a fix for fics, but sometimes it is necessary
if determineAlgebraicNotation(move) == SAN:
self.board.popMove()
move_ = parseSAN(self.board, move)
lanmove = toLAN(self.board, move_)
self.board.applyMove(move_)
self.connection.bm.sendMove(lanmove)
else:
self.connection.cm.tellOpponent(
"I'm sorry, I wanted to move %s, but FICS called " % move +
"it 'Ambigious'. I can't find another way to express it, " +
"so you can win")
self.connection.bm.resign()
#===========================================================================
示例5: test_apply_pop
# 需要导入模块: from pychess.Utils.lutils.LBoard import LBoard [as 别名]
# 或者: from pychess.Utils.lutils.LBoard.LBoard import applyMove [as 别名]
def test_apply_pop(self):
"""Testing Crazyhouse applyMove popMove"""
board = LBoard(variant=CRAZYHOUSECHESS)
board.applyFen(FEN1)
holding0 = (board.holding[0].copy(), board.holding[1].copy())
promoted0 = board.promoted[:]
capture_promoting0 = board.capture_promoting
hist_capture_promoting0 = board.hist_capture_promoting[:]
print_board_promoted = False
print_apply_pop = False
for lmove1 in genAllMoves(board):
#if lmove1 != parseAN(board, "c7b8=Q"):
# continue
board.applyMove(lmove1)
if print_apply_pop: print("applyMove1", Move(lmove1), board.holding, board.capture_promoting)
if print_board_promoted: print(board.promoted)
if board.opIsChecked():
if print_apply_pop: print("popMove1 (invalid)", Move(lmove1))
board.popMove()
continue
holding1 = (board.holding[0].copy(), board.holding[1].copy())
promoted1 = board.promoted[:]
capture_promoting1 = board.capture_promoting
hist_capture_promoting1 = board.hist_capture_promoting[:]
for lmove2 in genAllMoves(board):
#if lmove2 != parseAN(board, "e8f7"):
# continue
board.applyMove(lmove2)
if print_apply_pop: print(" applyMove2", Move(lmove2), board.holding, board.capture_promoting)
if print_board_promoted: print(board.promoted)
if board.opIsChecked():
if print_apply_pop: print(" popMove2 (invalid)", Move(lmove2))
board.popMove()
continue
holding2 = (board.holding[0].copy(), board.holding[1].copy())
promoted2 = board.promoted[:]
capture_promoting2 = board.capture_promoting
hist_capture_promoting2 = board.hist_capture_promoting[:]
for lmove3 in genAllMoves(board):
#if lmove3 != parseAN(board, "b8c8"):
# continue
board.applyMove(lmove3)
if print_apply_pop: print(" applyMove3", Move(lmove3), board.holding, board.capture_promoting)
if print_board_promoted: print(board.promoted)
if board.opIsChecked():
if print_apply_pop: print(" popMove3 (invalid)", Move(lmove3))
board.popMove()
continue
board.popMove()
if print_apply_pop: print(" popMove3", Move(lmove3), board.holding, board.capture_promoting)
if print_board_promoted: print(board.promoted)
self.assertEqual(holding2, board.holding)
self.assertEqual(promoted2, board.promoted)
self.assertEqual(capture_promoting2, board.capture_promoting)
self.assertEqual(hist_capture_promoting2, board.hist_capture_promoting)
board.popMove()
if print_apply_pop: print(" popMove2", Move(lmove2), board.holding, board.capture_promoting)
if print_board_promoted: print(board.promoted)
self.assertEqual(holding1, board.holding)
self.assertEqual(promoted1, board.promoted)
self.assertEqual(capture_promoting1, board.capture_promoting)
self.assertEqual(hist_capture_promoting1, board.hist_capture_promoting)
board.popMove()
if print_apply_pop: print("popMove1", Move(lmove1), board.holding, board.capture_promoting)
if print_board_promoted: print(board.promoted)
self.assertEqual(holding0, board.holding)
self.assertEqual(promoted0, board.promoted)
self.assertEqual(capture_promoting0, board.capture_promoting)
self.assertEqual(hist_capture_promoting0, board.hist_capture_promoting)
示例6: PyChessCECP
# 需要导入模块: from pychess.Utils.lutils.LBoard import LBoard [as 别名]
# 或者: from pychess.Utils.lutils.LBoard.LBoard import applyMove [as 别名]
#.........这里部分代码省略.........
minutes[i] = re.match(r'\d*', minutes[i]).group()
self.basetime = int(minutes[0]) * 60
if len(minutes) > 1 and minutes[1]:
self.basetime += int(minutes[1])
self.clock[:] = self.basetime, self.basetime
self.increment = inc, inc
elif lines[0] == "st":
self.searchtime = float(lines[1])
elif lines[0] == "sd":
self.sd = int(lines[1])
# Unimplemented: nps
elif lines[0] == "time":
self.clock[self.playingAs] = float(lines[1]) / 100.
elif lines[0] == "otim":
self.clock[1 - self.playingAs] = float(lines[1]) / 100.
elif lines[0] == "usermove":
self.__stopSearching()
try:
move = parseAny(self.board, lines[1])
except ParsingError as err:
self.print("Error (unknown command): %s" % lines[1])
self.print(self.board.prepr(ascii=ASCII))
continue
if not validateMove(self.board, move):
self.print("Illegal move: %s" % lines[1])
self.print(self.board.prepr(ascii=ASCII))
continue
self.board.applyMove(move)
self.playingAs = self.board.color
if not self.forced and not self.analyzing:
self.__go()
if self.analyzing:
self.__analyze()
elif lines[0] == "?":
if not self.forced and not self.analyzing:
self.__stopSearching()
elif lines[0] == "ping":
self.print("pong %s" % lines[1])
elif lines[0] == "draw":
if self.__willingToDraw():
self.print("offer draw")
elif lines[0] == "result":
# We don't really care what the result is at the moment.
pass
elif lines[0] == "setboard":
self.__stopSearching()
try:
self.board = LBoard(self.board.variant)
fen = " ".join(lines[1:])
self.board.applyFen(fen.replace("[", "/").replace("]",
""))
except SyntaxError as err:
self.print("tellusererror Illegal position: %s" %
str(err))
示例7: PyChessCECP
# 需要导入模块: from pychess.Utils.lutils.LBoard import LBoard [as 别名]
# 或者: from pychess.Utils.lutils.LBoard.LBoard import applyMove [as 别名]
class PyChessCECP(PyChess):
def __init__ (self):
PyChess.__init__(self)
self.board = LBoard(NORMALCHESS)
self.board.applyFen(FEN_START)
self.forced = False
self.analyzing = False
self.worker = None
self.features = {
"setboard": 1,
"analyze": 1,
"san": 1,
"usermove": 1,
"reuse": 0,
"draw": 1,
"sigterm": 1,
"colors": 1,
"variants": "normal,nocastle,fischerandom",
"myname": "PyChess %s" % pychess.VERSION
}
def makeReady(self):
PyChess.makeReady(self)
def run (self):
while True:
line = raw_input()
if not line.strip(): continue
lines = line.split()
if lines[0] == "protover":
stringPairs = ["=".join([k,repr(v)]) for k,v in self.features.iteritems()]
print "feature %s done=1" % " ".join(stringPairs)
elif lines[0] == "usermove":
self.__stopSearching()
move = parseAny (self.board, lines[1])
if not validateMove(self.board, move):
print "Illegal move", lines[1]
continue
self.board.applyMove(move)
self.playingAs = self.board.color
if not self.forced and not self.analyzing:
self.__go()
if self.analyzing:
self.__analyze()
elif lines[0] == "sd":
self.sd = int(lines[1])
self.skipPruneChance = max(0, (5-self.sd)*0.02)
if self.sd >= 5:
print "If the game has no timesettings, you probably don't want\n"+\
"to set a search depth much greater than 4"
elif lines[0] == "egtb":
# This is a crafty command interpreted a bit loose
self.useegtb = True
elif lines[0] == "level":
moves = int(lines[1])
self.increment = int(lines[3])
minutes = lines[2].split(":")
self.mytime = int(minutes[0])*60
if len(minutes) > 1:
self.mytime += int(minutes[1])
print "Playing %d moves in %d seconds + %d increment" % \
(moves, self.mytime, self.increment)
elif lines[0] == "time":
self.mytime = int(lines[1])/100.
#elif lines[0] == "otim":
# self.optime = int(lines[1])
elif lines[0] == "quit":
sys.exit()
elif lines[0] == "result":
# We don't really care what the result is at the moment.
sys.exit()
elif lines[0] == "force":
if not self.forced and not self.analyzing:
self.forced = True
self.__stopSearching()
elif lines[0] == "go":
self.playingAs = self.board.color
self.forced = False
self.__go()
#.........这里部分代码省略.........