Ejemplo n.º 1
0
def playerCanMoveTo(destination: tuple, player: Player, level: Level,
                    numMoves: int):
    """
    Check if the destination given can be moved to by a given player.
    (True if destination does not have a player and is traversable)
    :param destination: tuple
    :param player: Player
    :param level: Level
    :param numMoves: int
    """
    # NOTE this gets all locations in the board
    destBoardNumber = whichBoardInLevel(level, destination)
    playerBoardNumber = whichBoardInLevel(level, player.location)
    possibleMoves = playerPossibleCardinalMoves(player.location, numMoves,
                                                level)
    if destination not in possibleMoves:
        return False

    board = level.boards[destBoardNumber]

    if isTileOnBoard(destination, board):
        if board.tiles[destination[0]][
            destination[1]].tileType is not TileEnum.WALL \
                and not destHasPlayer(destination, board):
            return True
    return False
Ejemplo n.º 2
0
def validMoveForHarness(destination: tuple, level: Level):
    boardNum = whichBoardInLevel(level, destination)
    if boardNum == -1:
        return False
    if destHasPlayer(destination, level.boards[boardNum]):
        return False
    if isTileOnBoard(destination, level.boards[boardNum]):
        tile = level.boards[boardNum].tiles[destination[0]][destination[1]]
        return tile.tileType is not TileEnum.WALL
    return False
Ejemplo n.º 3
0
def enemyCanMoveTo(destination: tuple, enemy: Enemy, level: Level):
    """
    Check if the destination given can be moved to by a given enemy
    :param destination: tuple
    :param enemy: Enemy
    :param level: Level
    """
    # TODO: not needed yet
    destBoardNumber = whichBoardInLevel(level, destination)
    enemyBoardNumber = whichBoardInLevel(level, enemy.location)
    # TODO: will need to change to enemyPossibleCardinalMoves when specs for
    #  enemy movement come in, for now using player cardinal movement.
    possibleMoves = playerPossibleCardinalMoves(enemy.location, 2, level)

    if destination not in possibleMoves:
        return False

    board = level.boards[destBoardNumber]
    if isTileOnBoard(destination, board):
        if board.tiles[destination[0]][
                destination[1]].tileType is not TileEnum.WALL:
            return True
    return False