Esempio n. 1
0
def validDirection(
    pos, grid
):  # Génère la liste des directions randomisées de tir viables d'une position sur une grille.
    """
    Retourne au hasard une liste des directions possible pour la position pos sur la grille grid.
    
    Arguments:
    - pos (tuple) : tuple de position (ligne, colonne)
    - grid (list) : grille
    
    Retour:
    (list) directions possible mélagées ("EAST" ou "WEST" ou "SOUTH" ou "NORTH")
    
    Exemple:
    >>> grid
    [[[None, None], [None, None]], [[None, None], [None, None]]]
    >>> validDirection((0, 0), grid)
    ["SOUTH","EAST"]
    """
    directions = []
    if pos[1] < len(grid) - 1 and grid[pos[0]][pos[1] + 1][1] == None:
        directions.append("EAST")
    if pos[1] > 0 and grid[pos[0]][pos[1] - 1][1] == None:
        directions.append("WEST")
    if pos[0] < len(grid) - 1 and grid[pos[0] + 1][pos[1]][1] == None:
        directions.append("SOUTH")
    if pos[0] > 0 and grid[pos[0] - 1][pos[1]][1] == None:
        directions.append("NORTH")
    return b.returnShuffled(directions)
Esempio n. 2
0
def findDamaged(grid):
    """
    Retourne, si possible, la position d'une case touchée où il y a possibilité de tirer à coté sinon renvoie une case aléatoire.
    
    Arguments:
    - grid (list) : grille
    
    Retour:
    (tuple) position d'une case touchée ou si impossible, une case aléatoire
    
    Exemple:
    >>> grid
    [[[["destroyer", (0,0), "EAST", 2, 1], "T"], [["destroyer", (0,0), "EAST", 2, 1], None]], [[None, None], [None, None]]]
    >>> findDamaged(grid)
    (0,0)
    """
    coordList = []
    for i in range(len(grid)):
        for j in range(len(grid[i])):
            if (
                grid[i][j][1] == "T" and grid[i][j][0][4] != 0 and validDirection((i, j), grid) != []
            ):  # Si la case a été touchée, que la vie est != 0 et qu'il y a un tir possible en adjacent
                coordList.append((i, j))
    return b.returnShuffled(coordList)[0] if (coordList != []) else nearGenCoord(grid)