-
Автор темы
- #1
Нужна помощь, попросил gpt написать код на питоне для игры schedule 1 в которой есть мини игра(но он не работает).
Суть мини игры для тех кто не вкурсе(стрелка бегает влево вправо, нужно кликнуть пробел в момент того как стрелка будет на зеленой зоне)
вот нерабочий код:
import pyautogui
import keyboard
import time
import numpy as np
class PerfectArrowClicker:
def init(self):
# Настройки (можно менять)
self.green_color = (64, 183, 56) # Цвет зеленой зоны
self.arrow_color = (240, 240, 240) # Мягкий белый цвет
self.scan_height = 100 # Высота области поиска стрелки
self.cooldown = 0.5 # Задержка между нажатиями
self.running = False
def get_green_zone_bottom(self):
"""Находит нижнюю границу зеленой зоны"""
try:
screenshot = np.array(pyautogui.screenshot())
diff = np.abs(screenshot - self.green_color)
green_mask = (diff[:,:,0] < 25) & (diff[:,:,1] < 25) & (diff[:,:,2] < 25)
return np.max(np.where(green_mask)[0]) if np.any(green_mask) else None
except:
return None
def check_arrow(self, green_bottom):
"""Проверяет наличие стрелки"""
try:
screen_width, screen_height = pyautogui.size()
# Правильно рассчитываем область сканирования
left = 0
top = min(green_bottom, screen_height - self.scan_height - 1)
width = screen_width
height = self.scan_height
# Делаем скриншот нужной области
screenshot = np.array(pyautogui.screenshot(
region=(left, top, width, height)
))
# Ищем белые пиксели
white_pixels = np.all(screenshot >= self.arrow_color, axis=-1)
return np.any(white_pixels)
except:
return False
def run(self):
print("=== ИДЕАЛЬНЫЙ АВТОКЛИКЕР ===")
print("F1 - Старт | F2 - Стоп | ESC - Выход")
while True:
if keyboard.is_pressed('esc'):
print("Выход из программы...")
break
if keyboard.is_pressed('F1'):
self.running = True
print("Работаю...")
time.sleep(0.5)
if keyboard.is_pressed('F2'):
self.running = False
print("Остановлен...")
time.sleep(0.5)
if not self.running:
time.sleep(0.1)
continue
green_bottom = self.get_green_zone_bottom()
if green_bottom and self.check_arrow(green_bottom):
pyautogui.press('space')
print("Нажал пробел!")
time.sleep(self.cooldown)
time.sleep(0.05)
if name == "main":
try:
clicker = PerfectArrowClicker()
clicker.run()
except Exception as e:
print(f"Ошибка: {e}")
finally:
input("Нажмите Enter для выхода...")
if name == "main":
print("==========================================")
print("= Авто-клик при появлении стрелки в зоне =")
print("==========================================")
tracker = ArrowTracker()
tracker.set_green_zone()
tracker.track_and_click()
input("\nНажмите Enter чтобы выйти...")
ОЧЕНЬ НУЖНО ПАМАГИТЕ)


Суть мини игры для тех кто не вкурсе(стрелка бегает влево вправо, нужно кликнуть пробел в момент того как стрелка будет на зеленой зоне)
вот нерабочий код:
import pyautogui
import keyboard
import time
import numpy as np
class PerfectArrowClicker:
def init(self):
# Настройки (можно менять)
self.green_color = (64, 183, 56) # Цвет зеленой зоны
self.arrow_color = (240, 240, 240) # Мягкий белый цвет
self.scan_height = 100 # Высота области поиска стрелки
self.cooldown = 0.5 # Задержка между нажатиями
self.running = False
def get_green_zone_bottom(self):
"""Находит нижнюю границу зеленой зоны"""
try:
screenshot = np.array(pyautogui.screenshot())
diff = np.abs(screenshot - self.green_color)
green_mask = (diff[:,:,0] < 25) & (diff[:,:,1] < 25) & (diff[:,:,2] < 25)
return np.max(np.where(green_mask)[0]) if np.any(green_mask) else None
except:
return None
def check_arrow(self, green_bottom):
"""Проверяет наличие стрелки"""
try:
screen_width, screen_height = pyautogui.size()
# Правильно рассчитываем область сканирования
left = 0
top = min(green_bottom, screen_height - self.scan_height - 1)
width = screen_width
height = self.scan_height
# Делаем скриншот нужной области
screenshot = np.array(pyautogui.screenshot(
region=(left, top, width, height)
))
# Ищем белые пиксели
white_pixels = np.all(screenshot >= self.arrow_color, axis=-1)
return np.any(white_pixels)
except:
return False
def run(self):
print("=== ИДЕАЛЬНЫЙ АВТОКЛИКЕР ===")
print("F1 - Старт | F2 - Стоп | ESC - Выход")
while True:
if keyboard.is_pressed('esc'):
print("Выход из программы...")
break
if keyboard.is_pressed('F1'):
self.running = True
print("Работаю...")
time.sleep(0.5)
if keyboard.is_pressed('F2'):
self.running = False
print("Остановлен...")
time.sleep(0.5)
if not self.running:
time.sleep(0.1)
continue
green_bottom = self.get_green_zone_bottom()
if green_bottom and self.check_arrow(green_bottom):
pyautogui.press('space')
print("Нажал пробел!")
time.sleep(self.cooldown)
time.sleep(0.05)
if name == "main":
try:
clicker = PerfectArrowClicker()
clicker.run()
except Exception as e:
print(f"Ошибка: {e}")
finally:
input("Нажмите Enter для выхода...")
if name == "main":
print("==========================================")
print("= Авто-клик при появлении стрелки в зоне =")
print("==========================================")
tracker = ArrowTracker()
tracker.set_green_zone()
tracker.track_and_click()
input("\nНажмите Enter чтобы выйти...")
ОЧЕНЬ НУЖНО ПАМАГИТЕ)


Последнее редактирование: