Автоматически щелкать мышью в случайном месте с помощью pynput (для игры в веб-браузере) - PullRequest
2 голосов
/ 06 мая 2020

Информация.

Привет :)
Я изучаю Python уже несколько недель, и я только начал с нескольких небольших проектов. Сейчас я создаю сценарий для автоматизации игры в веб-браузере. Скрипт отправляет несколько «экспедиций», которые дают мне больше ресурсов в игре. Скрипт уже работает, но хотелось бы его улучшить. Если у вас есть какие-либо советы, я хотел бы их услышать.

Вопрос.
Я использую pynput и mouse.position = () для точного местоположения щелчка. Есть ли способ сделать щелчок случайным внутри определенной области? Потому что нормальный человек не всегда щелкает в одном и том же месте.

как щелчок в случайном месте между этими позициями: mouse.position (2000, 500) mouse.position (3000, 1000)

Мой скрипт.

import pynput, time, random, sys
from pynput.keyboard import Key, Controller as KeyboardController
from pynput.mouse import Button, Controller as MouseController
timeDelay = random.randrange(2, 4)


def locateogame():
    #---------------------------------------------> Getting to Ogame.nl
    mouse = MouseController()
    keyboard = KeyboardController()
    mouse.position = (2392, 48)
    mouse.click(Button.left, 1)
    time.sleep(timeDelay)
    keyboard.type("Ogame.nl")
    keyboard.press(Key.enter)
    keyboard.release(Key.enter)
    #login to account and universe.
    time.sleep(timeDelay)
    mouse.position = (2343, 564)
    mouse.click(Button.left, 1)

def p1():
    #---------------------------------------------> Locate to planet 1
    mouse = MouseController()
    time.sleep(timeDelay)
    mouse.position = (3054, 298)
    mouse.click(Button.left, 1)

def p2():
   #---------------------------------------------> Locate to planet 2
    #Locate to 5:352:8
    mouse = MouseController()
    time.sleep(timeDelay)
    mouse.position = (3060, 382)
    mouse.click(Button.left, 1)

def p3():
    #---------------------------------------------> Locate to planet 3
    #Locate to 5:353:7 
    mouse = MouseController()
    time.sleep(timeDelay)
    mouse.position = (3074, 438)
    mouse.click(Button.left, 1)

def p4():
    #---------------------------------------------> Locate to planet 4
    #Locate to 5:353:8 
    mouse = MouseController()
    time.sleep(timeDelay)
    mouse.position = (3073, 481)
    mouse.click(Button.left, 1)

def p5():
    #---------------------------------------------> Locate to planet 5
    #Locate to 4:32:8 
    mouse = MouseController()
    time.sleep(timeDelay)
    mouse.position = (3099, 538)
    mouse.click(Button.left, 1)

def Sending():
#---------------------------------------------> This will do all the clicking to send my ships
    mouse = MouseController()
    keyboard = KeyboardController()
    #Select Fleet from menu
    time.sleep(timeDelay)
    mouse.position = (2254, 493)
    mouse.click(Button.left, 1)
    #select "Expeditie" Fleet
    time.sleep(timeDelay)
    mouse.position = (2670, 694)
    mouse.click(Button.left, 1)
    #Expedition
    time.sleep(timeDelay)
    mouse.position = (2598, 743)
    mouse.click(Button.left, 1)
    time.sleep(timeDelay)
    mouse.position = (2954, 678)
    mouse.click(Button.left, 1)
    #select slot 16
    time.sleep(timeDelay)
    mouse.position = (2796, 434)
    mouse.click(Button.left, 1)
    keyboard.type("16")
    keyboard.press(Key.enter)
    keyboard.release(Key.enter)
    #expeditie button
    time.sleep(timeDelay)
    mouse.position = (2408, 378)
    mouse.click(Button.left, 1)
    #send Fleet
    time.sleep(timeDelay)
    mouse.position = (2862, 711)
    mouse.click(Button.left, 1)


##---------------------------------------------> Start of the script.
locateogame()

fns = [p1, p2, p3, p4, p5]
from random import choice
choice(fns)()

Sending()

Спасибо за уделенное время и хорошего дня!

1 Ответ

3 голосов
/ 06 мая 2020

Вы можете использовать random.randint для выборки значения из диапазона. Просто сделайте это дважды, один раз для вашего значения X и еще раз для Y

>>> import random
>>> random.randint(2000, 3000)
2786
>>> random.randint(500, 1000)
838

Итак, в своем коде вы можете сделать

from random import randint
mouse.position = (randint(2000, 3000), randint(500, 1000))
...