Пример #1
0
def undoMove():
    # read and build fpc
    fSqr_status = globVar.m_f_ps
    f_clr = globVar.m_f_p_color
    f_type = globVar.m_f_p_type
    f_label = globVar.m_f_p_label
    f_row = globVar.m_f_row
    f_col = globVar.m_f_col
    fpc = pieceConstructor(f_clr, f_type)

    fpc.label = f_label
    fpc.row = f_row
    fpc.col = f_col

    # read and build tpc
    tSqr_status = globVar.m_t_ps
    t_clr = globVar.m_t_p_color
    t_type = globVar.m_t_p_type
    t_label = globVar.m_t_p_label
    t_row = globVar.m_t_row
    t_col = globVar.m_t_col
    tpc = pieceConstructor(t_clr, t_type)

    tpc.label = t_label
    tpc.row = t_row
    tpc.col = t_col

    if fpc.type == "pawn":
        fpc.firstMove = globVar.m_fm

    # update the board
    board.uGrid(fpc)
    board.uGrid(tpc)
    updatePieces(fpc)

    board.Grid(fpc.row, fpc.col).pieceStatus = fSqr_status
    board.Grid(tpc.row, tpc.col).pieceStatus = tSqr_status

    # reset des
    board.Grid(fpc.row, fpc.col).des = False
    board.Grid(tpc.row, tpc.col).des = False

    if not globVar.removed:
        board.Grid(tpc.row, tpc.col).pieceStatus = False
        board.Grid(tpc.row, tpc.col).piece.color = "none"

    un_deletePiece(fpc)
    globVar.removed = False
    board.Grid(fpc.row, fpc.col).piece.selected = True
Пример #2
0
def read_firstPawns(save):
    p_array = save.readline().split(',')
    k = 0
    n = globVar.firstPawnsNum

    for i in range(n):
        color = p_array[k]
        k += 1
        selected = p_array[k]
        if selected == "True":
            sl = True
        else:
            sl = False
        k += 1
        type = p_array[k]
        k += 1
        label = int(p_array[k])
        k += 1
        row = int(p_array[k])
        k += 1
        col = int(p_array[k])
        k += 1
        fm = p_array[k]
        if fm == "True":
            firstMove = True
        else:
            firstMove = False
        k += 1

        pc = pieces.Pawn(color, type)

        pc.selected = sl
        pc.label = label
        pc.row = row
        pc.col = col
        pc.firstMove = firstMove

        globVar.firstPawns.append(pc)
        board.Grid(row, col).piece.firstMove = firstMove
        index = findIndex(label, color)

        if color == "W" and index != None:
            globVar.w_pieces[index].firstMove = True
        elif color == "b" and index != None:
            globVar.b_pieces[index].firstMove = True
Пример #3
0
def recordMove(fromSqr, toSqr):
    # record fromSqr
    globVar.m_f_ps = fromSqr.pieceStatus
    globVar.m_f_p_color = fromSqr.piece.color
    globVar.m_f_p_type = fromSqr.piece.type
    globVar.m_f_p_label = fromSqr.piece.label
    globVar.m_f_row = fromSqr.row
    globVar.m_f_col = fromSqr.col
    # record toSqr
    globVar.m_t_ps = toSqr.pieceStatus
    globVar.m_t_p_color = toSqr.piece.color
    globVar.m_t_p_type = toSqr.piece.type
    globVar.m_t_p_label = toSqr.piece.label
    globVar.m_t_row = toSqr.row
    globVar.m_t_col = toSqr.col

    if fromSqr.piece.type == "pawn":
        globVar.m_fm = fromSqr.piece.firstMove
        board.Grid(fromSqr.row, fromSqr.col).piece.firstMove = False
Пример #4
0
def human_turn():
    runagain = True
    while runagain:
        utils.clearAllOptions()
        fromSqr = select()
        fpc = copy.deepcopy(fromSqr.piece)
        availMoves = fromSqr.piece.scan()
        globVar.r_avail = copy.deepcopy(availMoves)
        globVar.r_avail_Num = len(globVar.r_avail)

        # remove invalid moves
        availMoves = utils.mark_invalid_moves(availMoves, fromSqr.piece)
        runagain = not utils.hasMoves(availMoves)

        if runagain:
            board.Grid(fromSqr.row, fromSqr.col).piece.selected = False
            am = fromSqr.piece.scan()
            utils.resetAvailMoves(am)
            Canvas.chooseAvailableMessage()
            Canvas.drawBoard()

    utils.un_resetAvailMoves(availMoves)
    choice = choose(availMoves)
    utils.record_user_move(fpc, availMoves, choice)
    pc = utils.move(fromSqr, availMoves, choice)

    # Check for check
    utils.check_king()
    # revert back if still in check
    if ((globVar.w_check and globVar.player == "W") or
    (globVar.b_check and globVar.player == "b")):
        Canvas.getouttacheckMessage()
        utils.undo_user_move()
        # utils.undoMove()
        human_turn()

    utils.check_pawn(pc)
Пример #5
0
    def scan(self):
        availMoves = []
        optionCounter = 1
        pieceFound = False

        # scan 2 up 1 left
        rowCount = self.row - 2
        colCount = self.col - 1
        if self.row > 1 and self.col > 0:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # scan 2 up 1 right
        rowCount = self.row - 2
        colCount = self.col + 1
        if self.row > 1 and self.col < 7:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # scan 1 up 2 right
        rowCount = self.row - 1
        colCount = self.col + 2
        if self.row > 0 and self.col < 6:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # scan 1 down 2 right
        rowCount = self.row + 1
        colCount = self.col + 2
        if self.row < 7 and self.col < 6:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # scan 2 down 1 right
        rowCount = self.row + 2
        colCount = self.col + 1
        if self.row < 6 and self.col < 7:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # scan 2 down 1 left
        rowCount = self.row + 2
        colCount = self.col - 1
        if self.row < 6 and self.col > 0:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # scan 1 down 2 left
        rowCount = self.row + 1
        colCount = self.col - 2
        if self.row < 7 and self.col > 1:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # scan 1 up 2 left
        rowCount = self.row - 1
        colCount = self.col - 2
        if self.row > 0 and self.col > 1:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        return availMoves
Пример #6
0
    def scan(self):
        availMoves = []
        optionCounter = 1
        pieceFound = False
        running = True

        rowCount = self.row
        colCount = self.col

        # scan above
        while rowCount - 1 > -1 and running:
            rowCount -= 1
            if (board.Grid(rowCount, self.col).piece.color != self.color):
                board.Grid(rowCount, self.col).des = True
                board.Grid(rowCount, self.col).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, self.col))
                if board.Grid(rowCount, self.col).pieceStatus:
                    pieceFound = True

            else:
                rowCount = 0
                running = False

            if pieceFound:
                rowCount = 0
                running = False

        # scan below
        rowCount = self.row
        running = True
        pieceFound = False
        while rowCount + 1 < 8 and running:
            rowCount += 1
            if (board.Grid(rowCount, self.col).piece.color != self.color):
                board.Grid(rowCount, self.col).des = True
                board.Grid(rowCount, self.col).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, self.col))
                if board.Grid(rowCount, self.col).pieceStatus:
                    pieceFound = True
            else:
                rowCount = 7
                running = False
            if pieceFound:
                rowCount = 7
                running = False

        # scan right
        running = True
        pieceFound = False
        while colCount + 1 < 8 and running:
            colCount += 1

            if (board.Grid(self.row, colCount).piece.color != self.color):
                board.Grid(self.row, colCount).des = True
                board.Grid(self.row, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(self.row, colCount))
                if board.Grid(self.row, colCount).pieceStatus:
                    pieceFound = True
            else:
                colCount = 7
                running = False
            if pieceFound:
                colCount = 7
                running = False

        # scan left
        colCount = self.col
        running = True
        pieceFound = False
        while colCount - 1 > -1 and running:
            colCount -= 1

            if (board.Grid(self.row, colCount).piece.color != self.color):
                board.Grid(self.row, colCount).des = True
                board.Grid(self.row, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(self.row, colCount))
                if board.Grid(self.row, colCount).pieceStatus:
                    pieceFound = True
            else:
                colCount = 0
                running = False
            if pieceFound:
                colCount = 0
                running = False

        return availMoves
Пример #7
0
def clearAllOptions():
    for i in range(8):
        for j in range(8):
            board.Grid(i, j).option = 0
            board.Grid(i, j).des = False
Пример #8
0
def writeBoard(save):
    for i in range(8):
        for j in range(8):
            save.write(str(board.Grid(i, j).pieceStatus))
            save.write(",")
            save.write(str(board.Grid(i, j).color))
            save.write(",")
            save.write(str(board.Grid(i, j).row))
            save.write(",")
            save.write(str(board.Grid(i, j).col))
            save.write(",")
            save.write(str(board.Grid(i, j).des))
            save.write(",")
            save.write(str(board.Grid(i, j).option))
            save.write(",")
            save.write(str(board.Grid(i, j).piece.type))
            save.write(",")
            save.write(str(board.Grid(i, j).piece.color))
            save.write(",")
            save.write(str(board.Grid(i, j).piece.selected))
            save.write(",")
            save.write(str(board.Grid(i, j).piece.label))
            save.write(",")
            save.write(str(board.Grid(i, j).piece.row))
            save.write(",")
            save.write(str(board.Grid(i, j).piece.col))
            save.write(",")
Пример #9
0
def readBoard(save):
    board.populate()
    k = 0
    sqrArray = save.readline().split(',')

    for i in range(8):
        for j in range(8):

            ps = sqrArray[k]
            if ps == "True":
                pieceStatus = True
            else:
                pieceStatus = False
            k += 1
            board.Grid(i, j).color = sqrArray[k]
            k += 1
            board.Grid(i, j).row = int(sqrArray[k])
            k += 1
            board.Grid(i, j).col = int(sqrArray[k])
            k += 1
            board.Grid(i, j).des = False
            k += 1
            board.Grid(i, j).option = int(sqrArray[k])
            k += 1

            type = sqrArray[k]
            k += 1
            color = sqrArray[k]
            k += 1
            selected = False
            k += 1
            label = int(sqrArray[k])
            k += 1
            row = int(sqrArray[k])
            k += 1
            col = int(sqrArray[k])
            k += 1

            pc = pieceConstructor(color, type)
            board.Grid(i, j).piece = pc
            board.Grid(i, j).piece.selected = selected
            board.Grid(i, j).piece.label = label
            board.Grid(i, j).piece.row = row
            board.Grid(i, j).piece.col = col
            board.Grid(i, j).pieceStatus = pieceStatus
Пример #10
0
    def scan(self):
        availMoves = []
        optionCounter = 1
        pieceFound = False

        # scan up and left
        rowCount = self.row - 1
        colCount = self.col - 1
        if self.row > 0 and self.col > 0:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # scan up
        pieceFound = False
        rowCount = self.row - 1
        colCount = self.col
        if self.row > 0:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # scan up and right
        pieceFound = False
        rowCount = self.row - 1
        colCount = self.col + 1
        if self.row > 0 and self.col < 7:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # scan right
        pieceFound = False
        rowCount = self.row
        colCount = self.col + 1
        if self.col < 7:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

################################
# scan down and right
        pieceFound = False
        rowCount = self.row + 1
        colCount = self.col + 1
        if self.row < 7 and self.col < 7:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # scan down
        pieceFound = False
        rowCount = self.row + 1
        colCount = self.col
        if self.row < 7:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # scan down and left
        pieceFound = False
        rowCount = self.row + 1
        colCount = self.col - 1
        if self.row < 7 and self.col > 0:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # scan left
        pieceFound = False
        rowCount = self.row
        colCount = self.col - 1
        if self.col > 0:
            if (board.Grid(rowCount, colCount).piece.color != self.color):
                board.Grid(rowCount, colCount).des = True
                board.Grid(rowCount, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, colCount))
                if board.Grid(rowCount, colCount).pieceStatus:
                    pieceFound = True

        # check availMoves and remove the ones that put user in check
        # if ((self.color == "W" and globVar.w_check) or
        # (self.color == "b" and globVar.b_check) and
        # not globVar.scanning):
        #     availMoves = utils.remove_invalid_moves(availMoves, self)

        return availMoves
Пример #11
0
    def scan(self):
        # rook code
        availMoves = []
        optionCounter = 1
        pieceFound = False
        running = True

        rowCount = self.row
        colCount = self.col

        # scan above
        while rowCount - 1 > -1 and running:
            rowCount -= 1
            if (board.Grid(rowCount, self.col).piece.color != self.color):
                board.Grid(rowCount, self.col).des = True
                board.Grid(rowCount, self.col).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, self.col))
                if board.Grid(rowCount, self.col).pieceStatus:
                    pieceFound = True

            else:
                rowCount = 0
                running = False

            if pieceFound:
                rowCount = 0
                running = False

        # scan below
        rowCount = self.row
        running = True
        pieceFound = False
        while rowCount + 1 < 8 and running:
            rowCount += 1
            if (board.Grid(rowCount, self.col).piece.color != self.color):
                board.Grid(rowCount, self.col).des = True
                board.Grid(rowCount, self.col).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(rowCount, self.col))
                if board.Grid(rowCount, self.col).pieceStatus:
                    pieceFound = True
            else:
                rowCount = 7
                running = False
            if pieceFound:
                rowCount = 7
                running = False

        # scan right
        running = True
        pieceFound = False
        while colCount + 1 < 8 and running:
            colCount += 1

            if (board.Grid(self.row, colCount).piece.color != self.color):
                board.Grid(self.row, colCount).des = True
                board.Grid(self.row, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(self.row, colCount))
                if board.Grid(self.row, colCount).pieceStatus:
                    pieceFound = True
            else:
                colCount = 7
                running = False
            if pieceFound:
                colCount = 7
                running = False

        # scan left
        colCount = self.col
        running = True
        pieceFound = False
        while colCount - 1 > -1 and running:
            colCount -= 1

            if (board.Grid(self.row, colCount).piece.color != self.color):
                board.Grid(self.row, colCount).des = True
                board.Grid(self.row, colCount).option = optionCounter
                optionCounter += 1
                availMoves.append(board.Grid(self.row, colCount))
                if board.Grid(self.row, colCount).pieceStatus:
                    pieceFound = True
            else:
                colCount = 0
                running = False
            if pieceFound:
                colCount = 0
                running = False

#####################################
# bishop code
        pieceFound = False
        running = True
        edgeFound = False

        # reset rowCount and colCount
        rowCount = self.row
        colCount = self.col

        # scan up
        if self.row > 0:
            if self.col > 0:
                # scan up and left
                while (rowCount - 1 > -1
                       or colCount - 1 > -1) and running and not edgeFound:
                    rowCount -= 1
                    colCount -= 1
                    if colCount == -1 or rowCount == -1:
                        edgeFound = True

                    elif (board.Grid(rowCount, colCount).piece.color !=
                          self.color):
                        board.Grid(rowCount, colCount).des = True
                        board.Grid(rowCount, colCount).option = optionCounter
                        optionCounter += 1
                        availMoves.append(board.Grid(rowCount, colCount))
                        if board.Grid(rowCount, colCount).pieceStatus:
                            pieceFound = True

                    else:
                        rowCount = 0
                        colCount = 0
                        running = False

                    if pieceFound:
                        rowCount = 0
                        colCount = 0
                        running = False

            # reset rowCount and colCount
            rowCount = self.row
            colCount = self.col
            edgeFound = False
            running = True
            pieceFound = False

            if self.col < 7:
                # scan up and right
                while (rowCount - 1 > -1
                       or colCount + 1 < 8) and running and not edgeFound:
                    rowCount -= 1
                    colCount += 1
                    if colCount == 7 or rowCount == 0:
                        edgeFound = True
                    if (board.Grid(rowCount, colCount).piece.color !=
                            self.color):
                        board.Grid(rowCount, colCount).des = True
                        board.Grid(rowCount, colCount).option = optionCounter
                        optionCounter += 1
                        availMoves.append(board.Grid(rowCount, colCount))
                        if board.Grid(rowCount, colCount).pieceStatus:
                            pieceFound = True

                    else:
                        rowCount = 0
                        colCount = 7
                        running = False

                    if pieceFound:
                        rowCount = 0
                        colCount = 7
                        running = False

        #scan down
        if self.row < 7:
            # reset rowCount and colCount
            rowCount = self.row
            colCount = self.col
            edgeFound = False
            running = True
            pieceFound = False

            # scan down and left
            if self.col > 0:
                while (rowCount + 1 < 8
                       or colCount - 1 > -1) and running and not edgeFound:
                    rowCount += 1
                    colCount -= 1
                    if colCount == -1 or rowCount == 8:
                        edgeFound = True
                    elif (board.Grid(rowCount, colCount).piece.color !=
                          self.color):
                        board.Grid(rowCount, colCount).des = True
                        board.Grid(rowCount, colCount).option = optionCounter
                        optionCounter += 1
                        availMoves.append(board.Grid(rowCount, colCount))
                        if board.Grid(rowCount, colCount).pieceStatus:
                            pieceFound = True

                    else:
                        rowCount = 7
                        colCount = 0
                        running = False

                    if pieceFound:
                        rowCount = 7
                        colCount = 0
                        running = False

            # reset rowCount and colCount
            rowCount = self.row
            colCount = self.col
            edgeFound = False
            running = True
            pieceFound = False

            # scan down and right
            if self.col < 7:
                while (rowCount + 1 < 8
                       or colCount + 1 < 8) and running and not edgeFound:
                    rowCount += 1
                    colCount += 1
                    if colCount == 8 or rowCount == 8:
                        edgeFound = True
                    elif (board.Grid(rowCount, colCount).piece.color !=
                          self.color):
                        board.Grid(rowCount, colCount).des = True
                        board.Grid(rowCount, colCount).option = optionCounter
                        optionCounter += 1
                        availMoves.append(board.Grid(rowCount, colCount))
                        if board.Grid(rowCount, colCount).pieceStatus:
                            pieceFound = True

                    else:
                        rowCount = 7
                        colCount = 7
                        running = False

                    if pieceFound:
                        rowCount = 7
                        colCount = 7
                        running = False

        return availMoves
Пример #12
0
import board

window = board.Grid(30, 20, 30, 2, 10, 10, 200)
window.loop()



Пример #13
0
    def scan(self):
        # Determine direction
        if self.color == "W":
            dn = -1
        else:
            dn = 1
        availMoves = []
        optionCounter = 1
        blocked = True
        doubleBlocked = True

        if ((self.row > 0 and self.color == "W")
                or (self.row < 7 and self.color == "b")):
            blocked = board.Grid((self.row + (1 * dn)), self.col).pieceStatus

        if ((self.row > 1 and self.color == "W")
                or (self.row < 6 and self.color == "b")):
            doubleBlocked = board.Grid((self.row + (2 * dn)),
                                       self.col).pieceStatus

        # Scan directly ahead
        if (not blocked):
            availMoves.append(board.Grid((self.row + (1 * dn)), self.col))
            board.Grid((self.row + (1 * dn)), self.col).des = True
            board.Grid((self.row + (1 * dn)), self.col).option = optionCounter
            optionCounter += 1

        # Scan two spaces ahead
        if (self.firstMove and not blocked and not doubleBlocked):
            availMoves.append(board.Grid((self.row + (2 * dn)), self.col))
            board.Grid((self.row + (2 * dn)), self.col).des = True
            board.Grid((self.row + (2 * dn)), self.col).option = optionCounter
            optionCounter += 1

        # Check for diagonal enemies
        # left
        if self.col > 0 and (self.row + (1 * dn)) >= 0 and (self.row +
                                                            (1 * dn)) <= 7:
            diagColor = board.Grid((self.row + (1 * dn)),
                                   (self.col - 1)).piece.color

            if (diagColor != self.color and diagColor != "none"):
                availMoves.append(
                    board.Grid((self.row + (1 * dn)), (self.col - 1)))
                board.Grid((self.row + (1 * dn)), (self.col - 1)).des = True
                board.Grid((self.row + (1 * dn)),
                           (self.col - 1)).option = optionCounter
                optionCounter += 1

        # right
        if self.col < 7 and (self.row + (1 * dn)) >= 0 and (self.row +
                                                            (1 * dn)) <= 7:
            diagColor = board.Grid((self.row + (1 * dn)),
                                   (self.col + 1)).piece.color

            if (diagColor != self.color and diagColor != "none"):
                availMoves.append(
                    board.Grid((self.row + (1 * dn)), (self.col + 1)))
                board.Grid((self.row + (1 * dn)), (self.col + 1)).des = True
                board.Grid((self.row + (1 * dn)),
                           (self.col + 1)).option = optionCounter
                optionCounter += 1

        return availMoves