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)
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)