Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 38

Доработка скрипта

06.02.2025, 03:11. Показов 1627. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте нужна помощь экспертов.
нужно доработать скрипт.
для наглядности добавляю схему работы скрипта и код который нужно доработать или переписать заново. не знаю как удобнее.
суть скрипта в следующем . нужно найти координаты точки 1 по цвету пикселя в левом поле (это я сделал)
потом определить вектор направления до точки 2 в градусах в левом поле (это я тоже сделал) , а вот дальше застрял.
картинка состоит из 2 отдельных полей на которых есть точка 1. на левом поле точка 1 двигается и меняет свои координаты на правом поле она статична и имеет постоянные координаты.
после того как скрипт определит координаты точки 1 и направление до точки 2 в левом поле (например 90 градусов) нужно сделать клик в правом поле в том же направлении (например 90 градусов) от статичных координат точки 1 прибавляя к ним 100 пикселей . Угол отсчитывается от горизонтальной оси (вправо - 0 градусов, против часовой стрелки).
например координаты точки 1 в правом поле (950,500) вектор направления 90 градусов (определили в левом поле ранее) то клик должен производится по координатам (950,600) , 180 градусов (850,500) , 270 градусов (950,400) , 360 градусов (1050,500)
в качестве примера я привел круглые цифры градусов ,но скрипт должен высчитывать любые значения градусов.
после первого клика (клик делается в правом поле) в правом поле ничего не меняется а вот в левом точка 1 перемещается в направлении определенного вектора (на схеме 1,1),после этого скрипт начинает все сначала отслеживает координаты точки 1 ,которая переместилась на новое место (на схеме 1,1), снова определяет вектор направления и делает клик в правом поле.
и так делает до тех пор пока точка 1 в левом поле не переместиться на место точки 2 (координаты точки 2 все это время будут статичны и меняться не будут). точка 1 не обязательно должна переместиться в точные координаты точки 2 погрешность +/- 2.
после этого точно так же нужно переместить точку 2 в координаты точки 3 и потом точку 3 в точку 4 и т.д. количество таких точек может быть разное.
еще одно условие выполнения если при перемещении точки 5 проверок подряд ее координаты не меняются (точка не смещается в сторону следующей точки) скрипт нажимает клавишу 5 (пример) на клавиатуре.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import pyautogui 
from PIL import Image 
import math 
 
target_color = (34, 177, 76)  # Цвет пикселя персонажа на миникарте 
control_point_x = 953  # Координата X контрольной точки 2 (в координатах экрана!) 
control_point_y = 368  # Координата Y контрольной точки 2 (в координатах экрана!) 
 
# Определяем регион поиска (x, y, width, height) 
region_x = 800  # координата X верхнего левого угла 
region_y = 250  # координата Y верхнего левого угла 
region_width = 160  # ширина области 
region_height = 110  # высота области 
 
 
def calculate_angle(x1, y1, x2, y2): 
    """ 
    Рассчитывает угол в градусах от точки (x1, y1) до точки (x2, y2). 
    Угол отсчитывается от горизонтальной оси (вправо - 0 градусов, против часовой стрелки). 
    """ 
    delta_x = x2 - x1 
    delta_y = y2 - y1 
 
    angle_rad = math.atan2(delta_y, delta_x)  # atan2 возвращает угол в радианах 
    angle_deg = math.degrees(angle_rad)  # Преобразуем в градусы 
 
    return angle_deg 
 
 
# Делаем скриншот указанной области 
screenshot = pyautogui.screenshot(region=(region_x, region_y, region_width, region_height)) 
screenshot = screenshot.convert('RGB') 
 
# Получаем размеры скриншота 
width, height = screenshot.size 
 
# Ищем пиксель с нужным цветом 
pixel_found = False  # Флаг, чтобы отслеживать, был ли найден пиксель 
 
for x in range(width): 
    for y in range(height): 
        if screenshot.getpixel((x, y)) == target_color: 
            # Приводим координаты найденного пикселя к координатам экрана 
            screen_x = region_x + x 
            screen_y = region_y + y 
            print(f'Пиксель найден на координатах: ({screen_x}, {screen_y})') 
 
            # Рассчитываем угол от пикселя персонажа до контрольной точки 
            angle = calculate_angle(screen_x, screen_y, control_point_x, control_point_y)
            print(f'Угол до контрольной точки: {angle} градусов')
            
            #тут клики по правому полю
            
            pixel_found = True  # Устанавливаем флаг, что пиксель был найден 
            break  # Выход из двух циклов, если найден пиксель 
    if pixel_found: 
        break  # Выход из внешнего цикла, если пиксель был найден 
 
if not pixel_found: 
    print("Пиксель с заданным цветом не найден в указанной области.")
Миниатюры
Доработка скрипта  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.02.2025, 03:11
Ответы с готовыми решениями:

Написать скрипт на языке Python
1. Написать скрипт на Python, который определяет открыт ли заданный порт на заданном ip адресе(ip адрес и порт вводятся с клавиатуры). ...

Возможно ли, чтобы python скрипт выполнялся на хостинге?
Приветствую форум! Стоит задача: сделать скрипт для соц. сети. Мне нужно, чтобы он работал круглосуточно, а не пока включен ПК. ВДС дорогой...

Бот в телеграмме(общение с ним), скрипт Python
Пытаюсь написать скрипт отправки сообщения с почты в телеграм бота! Но в момент отправки сообщения где то в коде ошибка, а именно говорит...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.02.2025, 03:11
Помогаю со студенческими работами здесь

Как в Python заставить скрипт пропускать хосты не доступные по сети?
Всем привет. Есть задача обойти куча cisco-хостов и прописать в них комманды. Как это сделать я уже знаю, но что делать если n-ый хост не...

Скрипт для копирования файлов по SFTP
В общем нужен скрипт,для копирования звукозаписей с linuxs сервера по SFTP Данные для копирования берутся из файла 1(имена файлов), куда...

Не могу найти скрипт/команду
Привет Киберфорум, у меня есть группа в телеграм и для этой группы делаю бота. Я раньше делал ботов в телеграм но с помощью конструкторов,...

Скрипт репоста
Нужен скрипт репоста, На python? читает rss репостит в указанные социальные сети

Скрипт для авто-рыбалки в WOW
Посмотрел видео как написать скрипт для авто-рыбалки в WOW. При погружении поплавка под воду не реагирует.Буду признателен если кто-то...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru