예제 #1
0
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)
예제 #2
0
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))
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)