Моя конечная цель с этой программой, которую я делаю, - использовать алгоритм A Star, чтобы робот нашел свою цель в сетке. Я еще не на сцене A star, и я пытаюсь понять, как переместить робота, но я не уверен, как переместить робота из его текущего положения в его следующую позицию (север, юг, восток , запад).Перемещение «робота» в сетке x y - python
Примечание: Я не принимал во внимание границы сетки или стены при движении еще. Если у кого-то есть хорошая идея о том, как я могу это решить, не стесняйтесь делиться своими знаниями.
Кроме того, я не могу распечатать свою сетку, я не часто использую python, и я не совсем уверен, как распечатать сетку. Как распечатать сетку с определенными символами, представляющими робота, стены, ловушки или пути?
Заранее спасибо.
class robot:
def __init__ (self, name, grid, position):
self.name = name
self.position = position
self.grid = grid
def robot_position(position):
position = (x,y)
return robot.position
def robot_neighbours(self, position):
position = (x,y)
results = [(x+1, y), (x, y-1), (x-1, y), (x, y+1)]
return results
def move_north():
north = (x,y+1)
robot.robot_position = north
return robot.robot_position
class game_board:
def boundary(self, point): #defines the grids boundaries
point = (x,y)
return 0 <= x < self.width and 0 <=y < self.height
def node_neighbours(self, point): #defines the current nodes neighbours
point = (x,y)
results = [(x+1, y), (x, y-1), (x-1, y), (x, y+1)]
results = filter(self.grid_boundary, results) #filters out the boundary results
results = filter(self.can_pass_through, results) #filters out the coordinates that you can pass through from those you can't
return results
def can_pass_through(self, point):
return point not in self.walls
return point not in self.traps
#constructsthe2Dgrid
def __init__(self, width, height):
self.width = width
self.height = height
self.name = " . "
self.walls = []
self.traps = []
def build_grid(grid):
for x in range(grid.width):
for y in range (grid.height):
print(x, y)
return "grid created" + width + " " + height
Там есть несколько вопросов, с вашими классами и функциями, и это довольно трудно решить ваш вопрос, не также решения других проблем в вашем коде. Возможно, вам стоит подумать о том, чтобы разбить эту проблему на мельчайшие части, затем выполнить и проверить функциональность каждой части, прежде чем переходить к следующему. Это также поможет вам задать более узкие и точные вопросы, которые позволят людям помочь вам лучше. – sytech