from settings import block_size, screen_width, directions class Node: def __init__(self, state, parent=None, action=None): self.state = state self.parent = parent self.action = action class BFS: def __init__(self): self.fringe = [] self.explored = [] def successor(self, state): pos_x, pos_y, rotation = state options = [] if rotation == directions[0]: states = [(pos_x, pos_y - block_size, directions[0]), (pos_x, pos_y, directions[270]), (pos_x, pos_y, directions[90])] actions = ['F', 'L', 'R'] elif rotation == directions[90]: states = [(pos_x + block_size, pos_y, directions[90]), (pos_x, pos_y, directions[0]), (pos_x, pos_y, directions[180])] actions = ['F', 'L', 'R'] elif rotation == directions[180]: states = [(pos_x, pos_y + block_size, directions[180]), (pos_x, pos_y, directions[90]), (pos_x, pos_y, directions[270])] actions = ['F', 'L', 'R'] elif rotation == directions[270]: states = [(pos_x - block_size, pos_y, directions[270]), (pos_x, pos_y, directions[0]), (pos_x, pos_y, directions[180])] actions = ['F', 'L', 'R'] return states, actions def search(self): pass