Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481

Поиск пути. Перемещение по координатам игрока

13.06.2023, 09:18. Показов 606. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу написать бота который бы управлял персонажам в игре, хаотично(либо по маршруту) бегая по локации. Вот думаю с чего начать, я же правильно понимаю, что это "поиск пути" называется?

Какой алгоритм вижу сейчас:
Python
1
2
3
4
5
# Переменные:
player_coord = [100, 100]  # Текущие координаты игрока, получаю условно каждую секунду
box_coord = [20, 20, 200, 200]  # Область, где персонаж может находится, в формате (x1, y1, x2, y2)
click_coord = [10, 10]  # Координаты клика мышки относительно игрока
old_player_coord = [0, 0]  # Старые координаты игрока
Так же на пути персонажа могут появляться объекты которые нельзя пройти насквозь.
Основной цикл:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
while True:
    # ----- Проверка на выход за рамки box_coord -----
 
    player_coord = [randint(10, 250), randint(10, 250)]  # Задаём случайны
    # Получаем координаты игрока, проверяем находятся ли они в заданных координатах
    if player_coord[0] in range(box_coord[0], box_coord[2]) and player_coord[1] in range(box_coord[1], box_coord[3]):
        print(f"Персонаж находится в заданных координатах, кликаем {click_coord}")
 
    else:
        # Если координаты по X превышают норму, то отправляем клик мышки в обратную сторону
        if player_coord[0] > box_coord[2]:
            click_coord[0] = -10
        else:
            click_coord[0] = 10
        # Тоже самое делается для Y
        if player_coord[1] > box_coord[3]:
            click_coord[1] = -10
        else:
            click_coord[1] = 10
 
        print(f"Персонаж не находится в заданных координатах, кликаем {click_coord}")
 
    # ----- Проверка на застревание в препятствиях -----
    if old_player_coord == player_coord:
        print(f"Персонаж застрял")
 
    old_player_coord = player_coord  # перезаписываем координаты
    click(click_coord)  # Выполняем нажатие кнопки мышки
    time.sleep(1)
Буду рад ссылкам на похожие проблемы, сейчас пытаюсь сам сделать, ничего похожего не нашёл (но видимо плохо искал как говорится))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.06.2023, 09:18
Ответы с готовыми решениями:

Перемещение игрока в runner
подскажите пожалуйста как можно реализовать движение влево и право по оси Z при нажатие на экран,грубо говоря на левую и правую сторону...

Заморозить перемещение игрока
Всем привет! Возник вопрос, как заморозить перемещение игрока по конкретной оси. Допустим заморозить перемещение игрока по оси -x(чтобы...

Перемещение игрока по оси х
Всем привет! Не могу реализовать плавное смещение игрока по оси х на минус одну единицу. Как это сделать? Добавлено через 1 час 17...

1
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
13.06.2023, 09:40
Цитата Сообщение от RSAX Посмотреть сообщение
думаю с чего начать
поиск в глубину, поиск в ширину, алгоритм Дейкстры, алгоритм Флойда.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.06.2023, 09:40
Помогаю со студенческими работами здесь

Перемещение игрока во время анимации
Здравствуйте, есть такой вопрос, как мне можно сделать так, что бы во время проигрывания определенной анимации персонаж не мог сдвигаться с...

Перемещение 2D игрока без учета массы
Здравствуйте! Подскажите пожалуйста, как исправить управление чтобы масса не учитывалась при перемещение? . void Update() ...

Перемещение игрока в сетевой игре пс использованием джойстика
Есть два скрипта:джойстик и скрипт игрока, который получает от джойстика вектор. Но суть в том, что джойстик работает только у последнего...

Игра, подобная Roguelike - перемещение игрока по карте
В общем, пишу ASCII игрушку, семейства Rogue-like, для того что бы закрепить знание Pascal'я. Как происходит передвижение: Рисуется...

Перемещение игрока в объекту который он кинул вперед
Получается есть игрок, у которого есть какой-то предмет (нож, меч), он при нажатии на кнопку бросает этот предмет на n условных единиц...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru