2023-04-22 21:31:19 +02:00
|
|
|
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):
|
2023-04-22 21:43:28 +02:00
|
|
|
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
|
2023-04-22 21:31:19 +02:00
|
|
|
|
|
|
|
def search(self):
|
|
|
|
pass
|