本文整理汇总了Python中pychess.Utils.logic.validate函数的典型用法代码示例。如果您正苦于以下问题:Python validate函数的具体用法?Python validate怎么用?Python validate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了validate函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: validate
def validate (self, cord0, cord1):
if cord0 is None or cord1 is None:
return False
# prevent accidental NULL_MOVE creation
if cord0 == cord1:
return False
if self.getBoard()[cord0] == None:
return False
if self.parent.setup_position:
to_piece = self.getBoard()[cord1]
# prevent moving pieces inside holding
if (cord0.x < 0 or cord0.x > self.FILES-1) and \
(cord1.x < 0 or cord1.x > self.FILES-1):
return False
# prevent moving kings off board
elif self.getBoard()[cord0].piece == KING and \
(cord1.x < 0 or cord1.x > self.FILES-1):
return False
# prevent taking enemy king
elif to_piece is not None and to_piece.piece == KING:
return False
else:
return True
if cord1.x < 0 or cord1.x > self.FILES-1:
return False
if cord0.x < 0 or cord0.x > self.FILES-1:
# drop
return validate(self.getBoard(), Move(lmovegen.newMove(self.getBoard()[cord0].piece, cord1.cord, DROP)))
else:
return validate(self.getBoard(), Move(cord0, cord1, self.getBoard()))
示例2: validate
def validate(self, cord0, cord1):
if cord0 is None or cord1 is None:
return False
# prevent accidental NULL_MOVE creation
if cord0 == cord1:
return False
if self.getBoard()[cord0] is None:
return False
if self.parent.setup_position:
# prevent moving pieces inside holding
if (cord0.x < 0 or cord0.x > self.FILES - 1) and \
(cord1.x < 0 or cord1.x > self.FILES - 1):
return False
else:
return True
if cord1.x < 0 or cord1.x > self.FILES - 1:
return False
if cord0.x < 0 or cord0.x > self.FILES - 1:
# drop
return validate(self.getBoard(), Move(lmovegen.newMove(
self.getBoard()[cord0].piece, cord1.cord, DROP)))
else:
return validate(self.getBoard(), Move(cord0, cord1,
self.getBoard()))
示例3: test_getstatus2
def test_getstatus2(self):
"""Testing bare white king is not draw in Atomic variant"""
board = AtomicBoard(setup=FEN3)
self.assertTrue(not validate(board, parseSAN(board, 'Kxg7')))
self.assertTrue(not validate(board, parseSAN(board, 'Kg8')))
self.assertTrue(not validate(board, parseSAN(board, 'Kh7')))
print(board)
self.assertEqual(getStatus(board), (DRAW, DRAW_STALEMATE))
示例4: validate
def validate (self, cord0, cord1):
assert cord0 != None and cord1 != None, "cord0: " + str(cord0) + ", cord1: " + str(cord1)
if self.getBoard()[cord0] == None:
return False
if cord1.x < 0 or cord1.x > self.FILES-1:
return False
if cord0.x < 0 or cord0.x > self.FILES-1:
# drop
return validate(self.getBoard(), Move(lmovegen.newMove(self.getBoard()[cord0].piece, cord1.cord, DROP)))
else:
return validate(self.getBoard(), Move(cord0, cord1, self.getBoard()))
示例5: test_validate
def test_validate(self):
"""Testing validate move in Crazyhouse variant"""
board = CrazyhouseBoard(setup=FEN0)
print(board)
# Drop can save mate
self.assertTrue(validate(board, parseSAN(board, '[email protected]')))
self.assertTrue(validate(board, parseSAN(board, 'Ka7')))
self.assertTrue(validate(board, parseSAN(board, 'Kb7')))
self.assertTrue(not validate(board, parseSAN(board, '[email protected]')))
self.assertTrue(not validate(board, parseSAN(board, 'Kb8')))
示例6: test_validate1
def test_validate1(self):
"""Testing castling rights lose in explosion in Atomic variant"""
board = AtomicBoard(setup=FEN1)
board = board.move(parseSAN(board, 'Nxa7'))
print(board)
# Rook exploded, no O-O-O anymore!
self.assertTrue(validate(board, parseSAN(board, 'b6')))
self.assertTrue(not validate(board, parseSAN(board, 'a6')))
self.assertTrue(not validate(board, parseSAN(board, 'Rb8')))
self.assertTrue(not validate(board, parseSAN(board, 'O-O-O')))
示例7: test_validate2
def test_validate2(self):
"""Testing explode king vs mate in Atomic variant"""
board = AtomicBoard(setup=FEN1)
board = board.move(parseSAN(board, 'Nc7+'))
print(board)
# King explosion takes precedence over mate!
self.assertTrue(validate(board, parseSAN(board, 'Qxd2')))
self.assertTrue(validate(board, parseSAN(board, 'Qxf2')))
self.assertTrue(not validate(board, parseSAN(board, 'Qxb2')))
self.assertTrue(not validate(board, parseSAN(board, 'Qe4+')))
示例8: validate
def validate (self, cord0, cord1):
if cord0 is None or cord1 is None:
return False
if self.getBoard()[cord0] == None:
return False
if cord1.x < 0 or cord1.x > self.FILES-1:
return False
if cord0.x < 0 or cord0.x > self.FILES-1:
# drop
return validate(self.getBoard(), Move(lmovegen.newMove(self.getBoard()[cord0].piece, cord1.cord, DROP)))
else:
return validate(self.getBoard(), Move(cord0, cord1, self.getBoard()))
示例9: validate
def validate (self, cord0, cord1):
if cord0 is None or cord1 is None:
return False
# prevent accidental NULL_MOVE creation
if cord0 == cord1:
return False
if self.getBoard()[cord0] == None:
return False
if cord1.x < 0 or cord1.x > self.FILES-1:
return False
if cord0.x < 0 or cord0.x > self.FILES-1:
# drop
return validate(self.getBoard(), Move(lmovegen.newMove(self.getBoard()[cord0].piece, cord1.cord, DROP)))
else:
return validate(self.getBoard(), Move(cord0, cord1, self.getBoard()))
示例10: makeMove
def makeMove(self, board1, move, board2):
log.debug("Human.makeMove: move=%s, board1=%s board2=%s" % (
move, board1, board2))
if self.board.view.premove_piece and self.board.view.premove0 and \
self.board.view.premove1 and \
self.color == self.board.view.premove_piece.color:
if validate(board1,
Move(self.board.view.premove0,
self.board.view.premove1,
board1,
promotion=self.board.view.premove_promotion)):
log.debug("Human.makeMove: Setting move to premove %s %s" % (
self.board.view.premove0, self.board.view.premove1))
self.board.emit_move_signal(
self.board.view.premove0,
self.board.view.premove1,
promotion=self.board.view.premove_promotion)
# reset premove
self.board.view.setPremove(None, None, None, None)
self.gmwidg.setLocked(False)
item = yield from self.move_queue.get()
self.gmwidg.setLocked(True)
if item == "del":
log.debug("Human.makeMove got: del")
raise PlayerIsDead
elif item == "int":
log.debug("Human.makeMove got: int")
raise TurnInterrupt
elif item == "pass":
log.debug("Human.makeMove got: pass")
raise PassInterrupt
return item
示例11: makeMove
def makeMove(self, board1, move, board2):
log.debug("Human.makeMove: move=%s, board1=%s board2=%s" % (
move, board1, board2))
if self.board.view.premove_piece and self.board.view.premove0 and \
self.board.view.premove1 and \
self.color == self.board.view.premove_piece.color:
if validate(board1,
Move(self.board.view.premove0,
self.board.view.premove1,
board1,
promotion=self.board.view.premove_promotion)):
log.debug("Human.makeMove: Setting move to premove %s %s" % (
self.board.view.premove0, self.board.view.premove1))
self.board.emit_move_signal(
self.board.view.premove0,
self.board.view.premove1,
promotion=self.board.view.premove_promotion)
# reset premove
self.board.view.setPremove(None, None, None, None)
self.gmwidg.setLocked(False)
item = self.queue.get(block=True)
self.gmwidg.setLocked(True)
if item == "del":
raise PlayerIsDead("Killed by foreign forces")
if item == "int":
log.debug("Human.makeMove: %s: raise TurnInterrupt" % self)
raise TurnInterrupt
return item
示例12: key_pressed
def key_pressed (self, keyname):
if keyname in "PNBRQKMFSOox12345678abcdefgh":
self.keybuffer += keyname
elif keyname == "minus":
self.keybuffer += "-"
elif keyname == "at":
self.keybuffer += "@"
elif keyname == "equal":
self.keybuffer += "="
elif keyname == "Return":
color = self.view.model.boards[-1].color
board = self.view.model.getBoardAtPly(self.view.shown, self.view.shownVariationIdx)
try:
move = parseAny(board, self.keybuffer)
except:
self.keybuffer = ""
return
if validate(board, move):
if self.view.shownIsMainLine() and self.view.model.boards[-1] == board:
self.emit("piece_moved", move, color)
else:
if board.board.next is None and not self.view.shownIsMainLine():
self.view.model.add_move2variation(board, move, self.view.shownVariationIdx)
self.view.shown += 1
else:
new_vari = self.view.model.add_variation(board, (move,))
self.view.setShownBoard(new_vari[-1])
self.keybuffer = ""
elif keyname == "BackSpace":
self.keybuffer = self.keybuffer[:-1] if self.keybuffer else ""
示例13: test_check_evasions
def test_check_evasions(self):
"""Testing check evasions in Crazyhouse variant"""
board = CrazyhouseBoard(setup=FEN1)
print(board)
# invalid drop
self.assertTrue(validate(board, parseSAN(board, '[email protected]')))
self.assertTrue(validate(board, parseSAN(board, '[email protected]')))
self.assertTrue(validate(board, parseSAN(board, 'Kxb2')))
self.assertTrue(not validate(board, parseSAN(board, '[email protected]')))
self.assertTrue(not validate(board, parseSAN(board, '[email protected]')))
evasions = [move for move in genCheckEvasions(board.board)]
self.assertTrue(parseSAN(board, '[email protected]').move in evasions)
self.assertTrue(parseSAN(board, '[email protected]').move in evasions)
self.assertTrue(parseSAN(board, 'Kxb2').move in evasions)
self.assertTrue(parseSAN(board, '[email protected]').move not in evasions)
self.assertTrue(parseSAN(board, '[email protected]').move not in evasions)
示例14: test_validate
def test_validate(self):
"""Testing validate move in Losers variant"""
board = LosersBoard(setup=FEN0)
print(board)
self.assertTrue(validate(board, parseSAN(board, 'Kxa7')))
self.assertTrue(not validate(board, parseSAN(board, 'Kb8')))
self.assertTrue(not validate(board, parseSAN(board, 'Kb7')))
board = LosersBoard(setup=FEN1)
print(board)
self.assertTrue(not validate(board, parseSAN(board, 'Kxa7')))
self.assertTrue(not validate(board, parseSAN(board, 'Kb8')))
self.assertTrue(validate(board, parseSAN(board, 'Kb7')))
board = LosersBoard(setup=FEN2)
print(board)
self.assertTrue(not validate(board, parseSAN(board, 'Kxb7')))
self.assertTrue(not validate(board, parseSAN(board, 'Kb8')))
self.assertTrue(validate(board, parseSAN(board, 'Rxb7')))
示例15: isAPotentiallyLegalNextMove
def isAPotentiallyLegalNextMove (self, cord0, cord1):
""" Determines whether the given move is at all legally possible
as the next move after the player who's turn it is makes their move
Note: This doesn't always return the correct value, such as when
BoardControl.setLocked() has been called and we've begun a drag,
but view.shown and BoardControl.lockedPly haven't been updated yet """
if cord0 == None or cord1 == None: return False
if not self.parent.lockedPly in self.parent.possibleBoards:
return False
for board in self.parent.possibleBoards[self.parent.lockedPly]:
if not board[cord0]:
return False
if validate(board, Move(cord0, cord1, board)):
return True
return False