本文整理汇总了Python中chess.Board.move方法的典型用法代码示例。如果您正苦于以下问题:Python Board.move方法的具体用法?Python Board.move怎么用?Python Board.move使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类chess.Board
的用法示例。
在下文中一共展示了Board.move方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Example
# 需要导入模块: from chess import Board [as 别名]
# 或者: from chess.Board import move [as 别名]
class Example(QtGui.QWidget):
board_text_space = 15
min_board_sz = 80
hit_cell_color = "red"
move_cell_color = "green"
hit_and_move_cell_color = "orange"
piece_cell_color = "yellow"
img_path = os.path.join(self_dir, "chess_piece")
piece_fname_mapping = {
"WQ": "white_quinn",
"WK": "white_king",
"WP": "white_pawn",
"WN": "white_knight",
"WR": "white_rook",
"WB": "white_bishop",
"BQ": "black_quinn",
"BK": "black_king",
"BP": "black_pawn",
"BN": "black_knight",
"BR": "black_rook",
"BB": "black_bishop",
}
def __init__(self):
super(Example, self).__init__()
self.initUI()
self.font = QtGui.QFont("times", 24)
self.chess_piece_font = QtGui.QFont("console", 30)
self.fm = QtGui.QFontMetrics(self.font)
self.chess_piece_fm = QtGui.QFontMetrics(self.chess_piece_font)
self.vertical_lines_x_corrds = []
self.horizontal_lines_y_coords = []
self.board = Board([Adapter(Bishop((4,4), "W"))])
self.pieces_images = {}
self.load_pieces(self.img_path)
self.active_cell = None
self.selected_piece = None
def cell_to_coords(self, cell):
return self.cell_index_to_coords(*to_tuple_pos(cell))
def cell_index_to_coords(self, cell_x, cell_y):
cell_y = 7 - cell_y
x1, x2 = self.vertical_lines_x_corrds[cell_x: cell_x + 2]
y1, y2 = self.horizontal_lines_y_coords[cell_y: cell_y + 2]
return x1, y1, x2 - x1, y2 - y1
def load_pieces(self, path):
for key, fname in self.piece_fname_mapping.items():
img = QtGui.QImage()
img.load(os.path.join(path, fname))
self.pieces_images[key] = img
def initUI(self):
self.setGeometry(300, 300, 800, 800)
self.setWindowTitle('Chess GUI')
self.show()
def paintEvent(self, event):
qp = QtGui.QPainter()
qp.begin(self)
self.draw_board(qp)
def get_cell_from_abs_pos(self, x, y):
if x < self.vertical_lines_x_corrds[0] or x > self.vertical_lines_x_corrds[-1]:
return False, None, None
if y < self.horizontal_lines_y_coords[0] or y > self.horizontal_lines_y_coords[-1]:
return False, None, None
for xpos, cx in enumerate(self.vertical_lines_x_corrds[1:]):
if x < cx:
break
for ypos, cy in enumerate(self.horizontal_lines_y_coords[1:]):
if y < cy:
break
return True, xpos, 7 - ypos
def mousePressEvent(self, event):
ok, xpos, ypos = self.get_cell_from_abs_pos(event.pos().x(), event.pos().y())
if ok:
piece = self.board.get((xpos, ypos))
if piece is not None:
self.selected_piece = piece
else:
self.selected_piece = None
else:
return super(Example, self).mouseReleaseEvent(event)
def mouseMoveEvent(self, event):
if self.selected_piece is not None:
ok, xpos, ypos = self.get_cell_from_abs_pos(event.pos().x(), event.pos().y())
#.........这里部分代码省略.........