Как я могу решить лабиринт, используя стек или очередь?
Я использую робота писанины для навигации по самодельному лабиринту (который я улучшу, как только у меня заработает функциональность, та, что у меня есть в видео, предназначена только для тестирования).
Сначала я пытался заставить робота двигаться влево и вправо исключительно на датчиках getObstacle. У меня были проблемы с этим.. Он не поворачивался ни налево, ни направо, как мне хотелось. Так что я думаю об использовании стека или очереди.
Я хотел бы просто сказать роботу
if(getObstacle(1) <=6000): # once sensor reaches 6000, it will stop doing the command
forward(1,0) # will move forward as long as getObstacle(1) is less than 6000
Затем, как только он обнаружит первое препятствие, поверните налево и идите вперед
Затем, как только он обнаружит другое препятствие, поверните направо.
По сути, я хочу наметить левый и правый повороты лабиринта и сказать писателю, когда нужно повернуть заранее.
Поэтому, когда он впервые чувствует стену = поверните налево... затем идите вперед
Когда он во второй раз почувствует стену = поверните направо... затем идите вперед.
Как я могу реализовать этот код в стеке или очереди?
Код, который у меня сейчас есть, основан исключительно на датчиках и ненадежен.
Вот пример того, с чем я работаю:
def main():
setIRPower(135)
while True:
left = getObstacle(0)
center = getObstacle(1)
right = getObstacle(2)
# 2 feet per 1 second at 1 speed
if (center <= 6000):
forward(0.5, 0.3)
elif (center >= 6000 and right > left): #if right sensor detects value higher than left
turnLeft(1, .55) #left turn
else:
turnRight(1, .55) #otherwise, turn right
Я работаю с различными вариантами кода выше. Я просто хотел бы реализовать повороты в очереди или стеке, и я не уверен, как это сделать.
Спасибо