Вы добавляете имена файлов в массив fileList, но во втором цикле for вы перебираете имена файлов вместо fileList. импорт ОС
os.chdir('/Users/Me/Api/downloaded')
fileList = []
keywordList = []
for filenames in os.walk('/Users/Me/Api/downloaded'):
fileList.append(filenames)
for file in fileList:
with open(file, encoding='utf-8', mode='r') as currentFile:
keywordList.append(currentFile['keyword'])
Расширяя сказанное Гийомом об избежании препятствий, метод, который будет работать хорошо для вас антигравитационное движение . Вы относитесь к местным препятствиям как к точечным источникам антигравитации,
вы можете комбинировать два алгоритма управления:
seek : вы прикладываете усилие поворота в направлении, которое является разностью между текущей скоростью и желаемой скоростью по направлению к цели
Предотвращение препятствий : вы предвидите будущее транспортного средства, используя прямоугольник, длина которого представляет собой постоянное время, умноженное на текущую скорость транспортного средства. Любое препятствие, которое пересекает это поле, представляет собой потенциальную угрозу столкновения. Ближайшая такая угроза выбирается для предотвращения. Чтобы избежать препятствия, прикладывается боковое усилие поворота напротив центра препятствия. Кроме того, прилагается тормозная (замедляющая) сила. Эти силы меняются в зависимости от срочности (расстояние от кончика ящика до точки потенциального столкновения). Рулевое управление изменяется линейно, торможение - квадратично.
Некоторое время назад я опубликовал алгоритм поиска пути на C #
Вы можете попробовать использовать его в качестве отправной точки, т.е. вы можете изменить функцию, которая проверяет в следующую ячейку, чтобы проверить, допустимо ли проверять препятствия, и вы можете кормить ее небольшими интервалами вместо начальной и конечной точек, вроде как несколько маршрутов мини-поиска.
(Текст на испанском языке, но вы можете скачать приложение по ссылке вверху)
Каждый раз, когда ваше существо, путешествуя в векторном направлении v
, сталкивается со стеной, направление которой представлено вектором w
, направление, которое вам нужно "слайд" задается вектором, который является проекцией v
на w
. Это можно найти с помощью
v . w
--------- w
|w|*|w|
, где .
- векторное скалярное произведение , а | w |
- величина вектора w
(= sqrt (w. w)
). Если w
является единичным вектором, это становится просто
(v . w) w
. Использование полученного вектора в качестве скорости вашего существа будет означать, что ваше существо перемещается быстро, когда оно просто «задевает» стену, и медленно, когда оно почти ударяется о стену. мертвые на. (Именно так большинство шутеров от первого лица управляют столкновениями для игрока-человека.)
Если вместо этого вы хотите, чтобы ваше существо всегда двигалось на полной скорости, вам понадобится только знак v. w
- вы всегда будете двигаться либо в направлении стены ( w
), либо в противоположном направлении ( -w
).
Проблема, которую вы будете have - это когда ваше существо врезается в стену. В этом случае ваш спроецированный вектор будет (0, 0), и вам понадобится другая техника, чтобы решить, в какую сторону ( w
или -w
) идти. Обычный подход здесь - A *, хотя в этом может быть необходимость, если ваша среда обладает достаточной структурой.
w
), либо в противоположном направлении ( -w
).
Проблема, которую вы будете have - это когда ваше существо врезается в стену. В этом случае ваш спроецированный вектор будет (0, 0), и вам понадобится другая техника, чтобы решить, в какую сторону ( w
или -w
) идти. Обычный подход здесь - A *, хотя в этом может быть необходимость, если ваша среда обладает достаточной структурой.
w
), либо в противоположном направлении ( -w
).
Проблема, которую вы будете have - это когда ваше существо врезается в стену. В этом случае ваш спроецированный вектор будет (0, 0), и вам понадобится другая техника, чтобы решить, в какую сторону ( w
или -w
) идти. Обычный подход здесь - A *, хотя в этом может быть необходимость, если ваша среда обладает достаточной структурой.
w
или -w
) идти. Обычный подход здесь - A *, хотя в этом может быть необходимость, если ваша среда обладает достаточной структурой. и вам нужна другая техника, чтобы решить, по какому пути ( w
или -w
) идти. Обычный подход здесь - A *, хотя в этом может быть необходимость, если ваша среда обладает достаточной структурой.