@B1oomEe

Как сделать счётчик нажатий?

Я делаю программу, которая сама проходит игру Piano Tiles с использованием pyAutoGui, и для удобства я решил создать счётчик нажатых клавиш в игре, ибо сам счёт в игре не равен кол-ву нажатых клавиш. Пыхчу уже около 40 минут и не могу понять как это сделать, всегда получается значение больше либо меньше нужного. Вот код
def click(x,y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)
    global k
    k+=1 # Эта функция отвечает за клик по клавише и логичным будет то, что за каждый клик будет прибавляться 
#единица к значению k (кроме первых трёх, которые я автоматизировал), и получится кол-во нажатых клавиш, но 
#значение получается больше нужного(
def start(one,two,three):
	click(one, 555)
	click(two, 500)
	click(three, 250)

def main(hah):
	if gg.pixel(715, 350)[0] == 0:
		click(715, hah)
		
	if gg.pixel(875, 350)[0] == 0:
		click(875, hah)

	if gg.pixel(1025, 350)[0] == 0:
		click(1025, hah)

	if gg.pixel(1185, 350)[0] == 0:
		click(1185, hah)





start(s2,s4,s1) # Первые 3 клавиши нажимаются автоматически при запуске кода





while keyboard.is_pressed('q') == False:
	main(550)

print(k)
  • Вопрос задан
  • 598 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AlexPyth
Разработчик ПО
Если не ошибаюсь, каждая последующая клавиша в игре Piano Tiles имеет отличное расположение по горизонтали от предыдущей. Вы можете реализовать подсчёт нажатых клавиш в функции main, где сравнивать предыдущую координату пиксела по горизонтали и координату, при которой одно из 4 условий выполнились. И, если они отличаются, то к переменной k прибавляется 1.

P.S. Это будет работать некорректно в случае с двумя клавишами, одновременно расположенными на одной линии. Уверен, что у вас получится решить данную проблему. Удачи.

k = 0
old_click_cdn = 0
new_click_cdn = 0


def main(hah):
    global k
    global new_click_cdn
    global old_click_cdn

    if gg.pixel(715, 350)[0] == 0:
        new_click_cdn = 715
        click(715, hah)

    if gg.pixel(875, 350)[0] == 0:
        new_click_cdn = 875
        click(875, hah)

    if gg.pixel(1025, 350)[0] == 0:
        new_click_cdn = 1025
        click(1025, hah)

    if gg.pixel(1185, 350)[0] == 0:
        new_click_cdn = 1185
        click(1185, hah)

    if new_click_cdn != old_click_cdn:
        k += 1
        old_click_cdn = new_click_cdn
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы