def getPromote(win, side, board, fro, to, single=False): if getType(side, board, fro) == "p": if (side == 0 and to[1] == 1) or (side == 1 and to[1] == 8): if single: return "q" else: return getChoice(win, side)
def showAvailMoves(win, side, board, pos, flags, flip): piece = pos + [getType(side, board, pos)] for i in availableMoves(side, board, piece, flags): if not isOccupied(side, board, i) and moveTest(side, board, pos, i): x = 470 - i[0] * 50 if flip else i[0] * 50 + 20 y = 470 - i[1] * 50 if flip else i[1] * 50 + 20 pygame.draw.rect(win, (0, 255, 0), (x, y, 10, 10))
def animate(win, side, board, fro, to, load, player=None): sound.play_drag(load) if player is None: FLIP = side and load["flip"] else: FLIP = player and load["flip"] piece = CHESS.PIECES[side][getType(side, board, fro)] x1, y1 = fro[0] * 50, fro[1] * 50 x2, y2 = to[0] * 50, to[1] * 50 if FLIP: x1, y1 = 450 - x1, 450 - y1 x2, y2 = 450 - x2, 450 - y2 stepx = (x2 - x1) / 50 stepy = (y2 - y1) / 50 col = (180, 100, 30) if (fro[0] + fro[1]) % 2 else (220, 240, 240) clk = pygame.time.Clock() for i in range(51): clk.tick_busy_loop(100) drawBoard(win) drawPieces(win, board, FLIP) pygame.draw.rect(win, col, (x1, y1, 50, 50)) win.blit(piece, (x1 + (i * stepx), y1 + (i * stepy))) pygame.display.update() sound.play_move(load)
def animate(win, side, board, fro, to, flip): piece = CHESS.PIECES[side][getType(side, board, fro)] x1, y1 = fro[0] * 50, fro[1] * 50 x2, y2 = to[0] * 50, to[1] * 50 if flip: x1, y1 = 450 - x1, 450 - y1 x2, y2 = 450 - x2, 450 - y2 stepx = (x2 - x1) / 50 stepy = (y2 - y1) / 50 col = (180, 100, 30) if (fro[0] + fro[1]) % 2 else (220, 240, 240) for i in range(50): pygame.time.delay(6) drawBoard(win) drawPieces(win, board, flip) pygame.draw.rect(win, col, (x1, y1, 50, 50)) win.blit(piece, (x1 + (i * stepx), y1 + (i * stepy))) pygame.display.update() drawBoard(win)
def getPromote(win, side, board, fro, to): if getType(side, board, fro) == "p": if (side == 0 and to[1] == 1) or (side == 1 and to[1] == 8): return getChoice(win, side)