精华内容
下载资源
问答
  • Python实现自动挂机脚本(基础篇)

    万次阅读 多人点赞 2017-08-25 23:55:50
    不知不觉肝阴阳师也快一年了,对这游戏真是又爱又恨,最近刚刚发布了PC版,突然很想尝试着写个脚本挂机,...简单的鼠标操作游戏挂机脚本,无非就是自动移动鼠标自动点击,进行重复操作,所以,第一步就是如何控制鼠标

    博客原文【不好吃の蛋蛋】
    完整代码

    不知不觉肝阴阳师也快一年了,对这游戏真是又爱又恨,最近刚刚发布了PC版,突然很想尝试着写个脚本挂机,话不多说进入正题。

    简单的鼠标操作

    游戏挂机脚本,无非就是自动移动鼠标,自动点击,进行重复操作,所以,第一步就是如何控制鼠标

    import win32api
    import time
    def move_click(x, y, t=0):  # 移动鼠标并点击左键
        win32api.SetCursorPos((x, y))  # 设置鼠标位置(x, y)
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN |
                             win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)  # 点击鼠标左键
        if t == 0:
            time.sleep(random.random()*2+1)  # sleep一下
        else:
            time.sleep(t)
        return 0
    
    # 测试
    move_click(30, 30)

    当然,再后续操作中你可能需要获取屏幕分辨率,我只打算让脚本能在自己电脑上跑就满足了,所以没有实现适配不同分辨率

    def resolution():  # 获取屏幕分辨率
        return win32api.GetSystemMetrics(0), win32api.GetSystemMetrics(1)

    值得注意的是,一定要在管理员权限下的cmd中运行,否则点击无效

    这个时候,你已经可以写个while循环,不停地点击屏幕上不同的几个点了,最基础的挂机脚本就实现了

    使用PIL识别图像

    我们肯定不满足于机械式的连续点击,万一被封号呢…
    所以需要识别图像,再进行点击
    首先,就需要定位到阴阳师的窗口

    import win32gui
    def get_window_info():  # 获取阴阳师窗口信息
        wdname = u'阴阳师-网易游戏'
        handle = win32gui.FindWindow(0, wdname)  # 获取窗口句柄
        if handle == 0:
            # text.insert('end', '小轩提示:请打开PC端阴阳师\n')
            # text.see('end')  # 自动显示底部
            return None
        else:
            return win32gui.GetWindowRect(handle)

    get_window_info()函数返回阴阳师窗口信息(x1, y1, x2, y2),(x1, y1)是窗口左上角的坐标,(x2, y2)是窗口右下角的坐标,代码中的text可以暂时忽略,这在后续GUI界面中用于输出提示信息。
    下面使用PIL获取游戏截图

    def get_posx(x, window_size):  # 返回x相对坐标
        return (window_size[2] - window_size[0]) * x / 870
    
    
    def get_posy(y, window_size):  # 返回y相对坐标
        return (window_size[3] - window_size[1]) * y / 520
    
    topx, topy = window_size[0], window_size[1]
    img_ready = ImageGrab.grab((topx + get_posx(500, window_size), topy + get_posy(480, window_size),
                                topx + get_posx(540, window_size), topy + get_posy(500, window_size)))
    # 查看图片
    im_ready.show()

    考虑到窗口大小不同,位置会有所偏移,这里使用屏幕上点的相对位置
    获取到关键位置的截图之后,计算图片的hash值

    def get_hash(img):
        img = img.resize((16, 16), Image.ANTIALIAS).convert('L')  # 抗锯齿 灰度
        avg = sum(list(img.getdata())) / 256  # 计算像素平均值
        s = ''.join(map(lambda i: '0' if i < avg else '1', img.getdata()))  # 每个像素进行比对,大于avg为1,反之为0
        return ''.join(map(lambda j: '%x' % int(s[j:j+4], 2), range(0, 256, 4)))

    将关键位置截图的hash值保存下来,下次脚本运行时,将截图hash值与原始hash值进行比对,判断是否相似。
    这里使用汉明距离进行计算,比较hash值中相同位置上不同元素的个数

    def hamming(hash1, hash2, n=20):
        b = False
        assert len(hash1) == len(hash2)
        if sum(ch1 != ch2 for ch1, ch2 in zip(hash1, hash2)) < n:
            b = True
        return b

    准备工作做完了,下面就可以开心刷御灵了

    def yu_ling(window_size):
        global is_start
        topx, topy = window_size[0], window_size[1]
        state = []
    
        while is_start:
            # print 'start'
            # text.insert('end', 'start')
            time.sleep(0.5)
            img_ready = ImageGrab.grab((topx + get_posx(750, window_size), topy + get_posy(465, window_size),
                                        topx + get_posx(840, window_size), topy + get_posy(500, window_size)))
            if hamming(get_hash(img_ready), ready_hash, 10):
                state.append(0)
                move_click(topx + get_posx(740, window_size), topy + get_posy(380, window_size))
                text.insert('end', strftime('%H:%M:%S', localtime()) + ' 点击准备\n')
                text.see('end')  # 自动显示底部
                time.sleep(15)
                continue
    
            img_success = ImageGrab.grab((topx + get_posx(400, window_size), topy + get_posy(320, window_size),
                                          topx + get_posx(470, window_size), topy + get_posy(400, window_size)))
            if hamming(get_hash(img_success), success_hash):
                time.sleep(2)
                state.append(1)
                text.insert('end', strftime('%H:%M:%S', localtime()) + ' 成功%d次\n' % state.count(1))
                text.see('end')  # 自动显示底部
                move_click(topx + get_posx(730, window_size), topy + get_posy(380, window_size))
                continue
    
            img_fail = ImageGrab.grab((topx + get_posx(560, window_size), topy + get_posy(340, window_size),
                                       topx + get_posx(610, window_size), topy + get_posy(390, window_size)))
            if hamming(get_hash(img_fail), fail_hash):
                time.sleep(2)
                state.append(2)
                text.insert('end', strftime('%H:%M:%S', localtime()) + ' 失败%d次\n' % state.count(2))
                text.see('end')  # 自动显示底部
                move_click(topx + get_posx(720, window_size), topy + get_posy(380, window_size))
                continue
    
            img_attack = ImageGrab.grab((topx + get_posx(615, window_size), topy + get_posy(350, window_size),
                                         topx + get_posx(675, window_size), topy + get_posy(375, window_size)))
            if hamming(get_hash(img_attack), yu_attack_hash):
                move_click(topx + get_posx(670, window_size), topy + get_posy(365, window_size))
                text.insert('end', strftime('%H:%M:%S', localtime()) + ' 点击进攻\n')
                text.see('end')  # 自动显示底部
                state.append(3)
                if state[-6:] == [3]*6:
                    text.insert('end', strftime('%H:%M:%S', localtime()) + ' 痴汉券可能不够了\n')
                    text.see('end')  # 自动显示底部
                    click()
                    break
                continue

    至此,我们已经可以通过管理员cmd运行脚本了
    Python实现自动挂机脚本(GUI & 打包)我们还可以为脚本设计GUI界面并打包成.exe文件

    展开全文
  • 使用Python + win32api实现简单自动鼠标点击使用tkinter设计GUI...基础模拟点击简单的鼠标操作游戏挂机脚本,无非就是自动移动鼠标自动点击,进行重复操作,所以,第一步就是如何控制鼠标1234567891011121314impor...

    使用Python + win32api实现简单自动鼠标点击

    使用tkinter设计GUI界面并用pyinstaller打包

    不知不觉肝阴阳师也快一年了,对这游戏真是又爱又恨,最近刚刚发布了PC版,突然很想尝试着写个脚本挂机,话不多说进入正题。

    12_gui.jpg

    基础模拟点击

    简单的鼠标操作

    游戏挂机脚本,无非就是自动移动鼠标,自动点击,进行重复操作,所以,第一步就是如何控制鼠标

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14import win32api

    import time

    def move_click(x, y, t=0): # 移动鼠标并点击左键

    win32api.SetCursorPos((x, y)) # 设置鼠标位置(x, y)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN |

    win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0) # 点击鼠标左键

    if t == 0:

    time.sleep(random.random()*2+1) # sleep一下

    else:

    time.sleep(t)

    return 0

    # 测试

    move_click(30, 30)

    当然,再后续操作中你可能需要获取屏幕分辨率,我只打算让脚本能在自己电脑上跑就满足了,所以没有实现适配不同分辨率

    1

    2def resolution(): # 获取屏幕分辨率

    return win32api.GetSystemMetrics(0), win32api.GetSystemMetrics(1)

    值得注意的是,一定要在管理员权限下的cmd中运行,否则点击无效

    这个时候,你已经可以写个while循环,不停地点击屏幕上不同的几个点了,最基础的挂机脚本就实现了

    使用PIL识别图像

    我们肯定不满足于机械式的连续点击,万一被封号呢…

    所以需要识别图像,再进行点击

    首先,就需要定位到阴阳师的窗口

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10import win32gui

    def get_window_info(): # 获取阴阳师窗口信息

    wdname = u'阴阳师-网易游戏'

    handle = win32gui.FindWindow(0, wdname) # 获取窗口句柄

    if handle == 0:

    # text.insert('end', '小轩提示:请打开PC端阴阳师 ')

    # text.see('end') # 自动显示底部

    return None

    else:

    return win32gui.GetWindowRect(handle)

    get_window_info()函数返回阴阳师窗口信息(x1, y1, x2, y2),(x1, y1)是窗口左上角的坐标,(x2, y2)是窗口右下角的坐标,代码中的text可以暂时忽略,这在后续GUI界面中用于输出提示信息。

    下面使用PIL获取游戏截图

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12def get_posx(x, window_size): # 返回x相对坐标

    return (window_size[2] - window_size[0]) * x / 870

    def get_posy(y, window_size): # 返回y相对坐标

    return (window_size[3] - window_size[1]) * y / 520

    topx, topy = window_size[0], window_size[1]

    img_ready = ImageGrab.grab((topx + get_posx(500, window_size), topy + get_posy(480, window_size),

    topx + get_posx(540, window_size), topy + get_posy(500, window_size)))

    # 查看图片

    im_ready.show()

    考虑到窗口大小不同,位置会有所偏移,这里使用屏幕上点的相对位置

    获取到关键位置的截图之后,计算图片的hash值

    1

    2

    3

    4

    5def get_hash(img):

    img = img.resize((16, 16), Image.ANTIALIAS).convert('L') # 抗锯齿 灰度

    avg = sum(list(img.getdata())) / 256 # 计算像素平均值

    s = ''.join(map(lambda i: '0' if i < avg else '1', img.getdata())) # 每个像素进行比对,大于avg为1,反之为0

    return ''.join(map(lambda j: '%x' % int(s[j:j+4], 2), range(0, 256, 4)))

    将关键位置截图的hash值保存下来,下次脚本运行时,将截图hash值与原始hash值进行比对,判断是否相似。

    这里使用汉明距离进行计算,比较hash值中相同位置上不同元素的个数

    1

    2

    3

    4

    5

    6def hamming(hash1, hash2, n=20):

    b = False

    assert len(hash1) == len(hash2)

    if sum(ch1 != ch2 for ch1, ch2 in zip(hash1, hash2)) < n:

    b = True

    return b

    准备工作做完了,下面就可以开心刷御灵了

    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

    52def yu_ling(window_size):

    global is_start

    topx, topy = window_size[0], window_size[1]

    state = []

    while is_start:

    # print 'start'

    # text.insert('end', 'start')

    time.sleep(0.5)

    img_ready = ImageGrab.grab((topx + get_posx(750, window_size), topy + get_posy(465, window_size),

    topx + get_posx(840, window_size), topy + get_posy(500, window_size)))

    if hamming(get_hash(img_ready), ready_hash, 10):

    state.append(0)

    move_click(topx + get_posx(740, window_size), topy + get_posy(380, window_size))

    text.insert('end', strftime('%H:%M:%S', localtime()) + ' 点击准备 ')

    text.see('end') # 自动显示底部

    time.sleep(15)

    continue

    img_success = ImageGrab.grab((topx + get_posx(400, window_size), topy + get_posy(320, window_size),

    topx + get_posx(470, window_size), topy + get_posy(400, window_size)))

    if hamming(get_hash(img_success), success_hash):

    time.sleep(2)

    state.append(1)

    text.insert('end', strftime('%H:%M:%S', localtime()) + ' 成功%d次 ' % state.count(1))

    text.see('end') # 自动显示底部

    move_click(topx + get_posx(730, window_size), topy + get_posy(380, window_size))

    continue

    img_fail = ImageGrab.grab((topx + get_posx(560, window_size), topy + get_posy(340, window_size),

    topx + get_posx(610, window_size), topy + get_posy(390, window_size)))

    if hamming(get_hash(img_fail), fail_hash):

    time.sleep(2)

    state.append(2)

    text.insert('end', strftime('%H:%M:%S', localtime()) + ' 失败%d次 ' % state.count(2))

    text.see('end') # 自动显示底部

    move_click(topx + get_posx(720, window_size), topy + get_posy(380, window_size))

    continue

    img_attack = ImageGrab.grab((topx + get_posx(615, window_size), topy + get_posy(350, window_size),

    topx + get_posx(675, window_size), topy + get_posy(375, window_size)))

    if hamming(get_hash(img_attack), yu_attack_hash):

    move_click(topx + get_posx(670, window_size), topy + get_posy(365, window_size))

    text.insert('end', strftime('%H:%M:%S', localtime()) + ' 点击进攻 ')

    text.see('end') # 自动显示底部

    state.append(3)

    if state[-6:] == [3]*6:

    text.insert('end', strftime('%H:%M:%S', localtime()) + ' 痴汉券可能不够了 ')

    text.see('end') # 自动显示底部

    click()

    break

    continue

    至此,我们已经可以通过管理员cmd运行脚本了。

    但这样的脚本运行起来比较麻烦,也没有好看的界面。接下来,我们将使用tkinter设计GUI界面,并用pyinstaller打包成.exe文件

    GUI

    tkinter

    tkinter是Python内置的GUI设计界面,对小白来说容易上手,你也可以尝试用pyqt或者wx

    关于tkinter可以看一下莫烦教程

    首先创建一个窗口,并设置必要信息

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16import tkinter as tk

    from icon import img

    window = tk.Tk() # 创建一个窗口

    window.title('奴良小轩v0.1')

    window.geometry('240x480+120+30') # 窗口的位置以及大小

    # 设置图标

    with open('tmp.ico', 'wb+') as fp:

    fp.write(base64.b64decode(img))

    window.iconbitmap('tmp.ico')

    os.remove('tmp.ico')

    # 设置图标

    label = tk.Label(window, font=('微软雅黑', 12),

    text='请将PC端阴阳师调节与小宝等高') # 显示一段文本

    label.pack()

    设置图标

    默认情况下,窗口图标是红色的TK,想修改则使用.iconbitmap(path)方法,但是,在实际使用踩坑了。因为后面我会使用pyinstaller打包,因为找不到path路径运行程序会报错,找了好久才找到这个错误。

    解决方案是先将图标读取并写入ico.py文件,调用.iconbitmap(path)时读取ico.py,代码如下:

    1

    2

    3

    4

    5

    6

    7

    8import base64

    open_icon = open('yaodao.ico', 'rb')

    b64str = base64.b64encode(open_icon.read())

    open_icon.close()

    write_data = "img = '%s'" % b64str

    f = open('icon.py', 'w+')

    f.write(write_data)

    f.close()

    功能选择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# Radiobutton #

    fun_var = tk.IntVar()

    fun_text = ''

    def print_selection():

    global fun_text

    if fun_var.get() == 1:

    fun_text = '寮突破'

    elif fun_var.get() == 2:

    fun_text = '御灵、业原火'

    elif fun_var.get() == 3:

    fun_text = '魂十队员(未完成)'

    elif fun_var.get() == 4:

    fun_text = '魂十队长(未完成)'

    elif fun_var.get() == 5:

    fun_text = '狗粮队员(未完成)'

    label.config(text='功能选择: ' + fun_text)

    rb1 = tk.Radiobutton(window, text='寮突破', font=('微软雅黑', 10),

    variable=fun_var, value=1, command=print_selection)

    rb1.place(x=15, y=30)

    rb2 = tk.Radiobutton(window, text='御灵、业原火', font=('微软雅黑', 10),

    variable=fun_var, value=2, command=print_selection)

    rb2.place(x=15, y=60)

    rb3 = tk.Radiobutton(window, text='魂十队员', font=('微软雅黑', 10),

    variable=fun_var, value=3, command=print_selection)

    rb3.place(x=15, y=90)

    rb4 = tk.Radiobutton(window, text='魂十队长', font=('微软雅黑', 10),

    variable=fun_var, value=4, command=print_selection)

    rb4.place(x=15, y=120)

    rb5 = tk.Radiobutton(window, text='狗粮队员', font=('微软雅黑', 10),

    variable=fun_var, value=5, command=print_selection)

    rb5.place(x=15, y=150)

    # Radiobutton #

    开始按钮start_mission()中定义了每一个功能所要执行的函数,注意的是,独立功能需要放在一个线程中执行,不然界面会被阻塞卡死

    全局变量is_start用来控制功能的执行与停止

    click()函数用来改变按钮显示以及锁定功能选择

    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

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70# button start#

    rb_list = [rb1, rb2, rb3, rb4, rb5]

    button_var = tk.StringVar()

    button_var.set('开始')

    is_click = False

    def start_mission():

    global is_start

    if fun_var.get() == 1:

    text.insert('end', strftime('%H:%M:%S', localtime()) + ' 开始执行寮突破 ')

    text.see('end') # 自动显示底部

    window_size = get_window_info()

    if window_size: # 打开了阴阳师

    window.geometry('240x480+%d+%d' % (window_size[0]-240, window_size[1]))

    is_start = True

    thread1 = threading.Thread(target=liao_tupo, args=(window_size,))

    thread1.start()

    elif fun_var.get() == 2:

    text.insert('end', strftime('%H:%M:%S', localtime()) + ' 开始执行御灵、业原火 ')

    text.see('end') # 自动显示底部

    window_size = get_window_info()

    if window_size: # 打开了阴阳师

    window.geometry('240x480+%d+%d' % (window_size[0] - 240, window_size[1]))

    is_start = True

    thread2 = threading.Thread(target=yu_ling, args=(window_size,))

    thread2.start()

    elif fun_var.get() == 3:

    text.insert('end', strftime('%H:%M:%S', localtime()) + ' 魂十队员功能未开发 ')

    text.see('end') # 自动显示底部

    elif fun_var.get() == 4:

    text.insert('end', strftime('%H:%M:%S', localtime()) + ' 魂十队长功能未开发 ')

    text.see('end') # 自动显示底部

    elif fun_var.get() == 5:

    text.insert('end', strftime('%H:%M:%S', localtime()) + ' 狗粮队员功能未开发 ')

    text.see('end') # 自动显示底部

    def stop_mission():

    global is_start

    is_start = False

    text.insert('end', strftime('%H:%M:%S', localtime()) + ' 停止执行 ')

    text.see('end') # 自动显示底部

    def click():

    global is_click

    if not is_click:

    is_click = True

    button_var.set('停止')

    label.config(text=fun_text + ' 已经开始')

    for rb in rb_list: # 将选项锁定

    rb.config(state='disabled')

    button_adjust.config(state='disabled')

    start_mission()

    else:

    is_click = False

    button_var.set('开始')

    label.config(text=fun_text + ' 已经停止')

    for rb in rb_list:

    rb.config(state='active')

    button_adjust.config(state='active')

    stop_mission()

    button = tk.Button(window, textvariable=button_var, width=10,

    height=1, command=click)

    button.place(x=140, y=60)

    # button start#

    文本显示1

    2

    3

    4import ScrolledText

    text = ScrolledText.ScrolledText(window, width=29, height=17) # 滚动输出文本框

    # text = tk.Text(window, width=29, height=17) # 输出文本框

    text.place(x=15, y=180)

    注意的一点是,再每次输出文本的时候希望自动显示低端,这时需要在insert之后执行text.see('end')

    Pyinstaller打包1pyinstaller -F -w -i ./yaodao.ico ./tk_gui.py

    -F表示输出单文件exe

    -w表示不显示命令行

    -i设置图标

    更多参数设置详见这里

    至此全部搞定,打开exe时记得右键管理员权限打开

    Have Fun!

    下一篇,简单碎片登记系统(鸽了)

    12_yys_suipian.png

    展开全文
  • 脚本可以指定时间点击指定区域,在windows下实现,利用Python3。
  • 引用了tkinter和pyautogui两个库,思路是,==根据用户输入的坐标和时间间隔t,鼠标会移动到坐标点,进行一次点击操作,每隔t秒一次。==代码在下面 就是在pyautogui.moveTo(h,z,duration=1)这个函数位置出现了问题,...

    引用了tkinter和pyautogui两个库,思路是,==根据用户输入的坐标和时间间隔t,鼠标会移动到坐标点,进行一次点击操作,每隔t秒一次。==代码在下面
    就是在pyautogui.moveTo(h,z,duration=1)这个函数位置出现了问题,本来以为x和y都需要是整数型,然后用int定义了横坐标,纵坐标和时间,三个变量都是用entry.get()得到的,后来出现了这个
    在这里插入图片描述
    应该怎么修改

    from tkinter import *
    import tkinter as tk
    root=tk.Tk()
    root.title('请输入坐标')
    root.geometry('350x250')#建设TK框架
    
    x_value=tk.Label(root,text='横坐标:',bg='grey',width=8,height=2)
    y_value=tk.Label(root,text='纵坐标:',bg='grey',width=8,height=2)
    timeset=tk.Label(root,text='设定时间',bg='red',width=8,height=2)#设置标签大小
    
    x_value.grid(padx=30,pady=20)
    y_value.grid(row=1,padx=30,pady=0)
    timeset.grid(row=2,padx=30,pady=20)#设置标签位置
    
    entry1=Entry(root,width=8)
    entry1.grid(row=0,column=2,padx=20)
    entry2=Entry(root,width=8)
    entry2.grid(row=1,column=2)
    entry3=Entry(root,width=8)
    entry3.grid(row=2,column=2)#设置输入框大小以及位置
    
    h=int(entry1.get())
    z=int(entry2.get())
    s=int(entry3.get())
             
    import pyautogui
    import time
    def DJ():
        while 1:
                time.sleep(s)
                pyautogui.moveTo(h,z,duration=1)
                pyautogui.click(clicks=1,button='left',interval=0.01)#定义函数点击坐标点一次
                
    yeslabel=tk.Button(width=6,height=3,text='确定',command=DJ)
    yeslabel.grid(row=1,column=5,padx=20)#绑定按钮和函数
    
    
    
    
    
    
    展开全文
  • 右键点击“以管理员身份运行”,打开后进入安装的python3.7目录,进入后输入“pip install pyautogui” 我的电脑已经安装了pyautogui,所以才会显示这些语句。 安装完成后打开pycharm。 脚本内容 首先导入pyautogui...

    pyautogui安装教程

    在C盘搜索cmd.exe
    在这里插入图片描述
    右键点击“以管理员身份运行”,打开后进入安装的python3.7目录,进入后输入“pip install pyautogui”
    在这里插入图片描述
    我的电脑已经安装了pyautogui,所以才会显示这些语句。
    安装完成后打开pycharm。

    脚本内容

    首先导入pyautogui包

    import pyautogui
    

    然后获取摩尔庄园内鼠标点击毛毛树的坐标,这里有两种方法。

    1. 微信截图获取鼠标坐标
      键盘按住 alt+A 然后鼠标移到毛毛树上即可查看坐标
    2. pyautogui.position()
      获取鼠标坐标
    import pyautogui
    import time
    
    time.sleep(3)
    x, y =pyautogui.position()
    print(x,y)
    

    在这里插入图片描述

    逐一获得毛毛树的坐标,浇水按钮的坐标和施肥按钮的坐标,然后开始编写代码。

    import pyautogui
    import time
    
    for i in range(100):
        time.sleep(3)
        pyautogui.moveTo(696,410)
        pyautogui.click()
        pyautogui.moveTo(604, 515)
        pyautogui.click()
        time.sleep(3)
        pyautogui.moveTo(696, 410)
        pyautogui.click()
        pyautogui.moveTo(703, 512)
        pyautogui.click()
        pyautogui.moveTo(626, 463)
        pyautogui.click()
    

    这样就完成了鼠标自动点击的脚本。

    展开全文
  • python 自动点击鼠标左键和键盘

    千次阅读 2020-04-05 20:25:04
    领导玩游戏,晚上需要挂机,让写一个脚本,自动鼠标和键盘 完成功能需要两个线程,一个线程点鼠标,一个线程按键盘.代码如下: # 鼠标动作: # 坐标1:205.528 左键 # SLEEP 6秒 # 坐标2:900.185 左键 # SLEEP 6秒 ...
  • 我刚学Python,用已掌握的知识已经用"autopy"的功能写了一个鼠标自动点击排队的脚本,但是我想让这个脚本不用在窗口最前端显示也能运行,就是最小化了也能继续在后台继续工作,可是不了解Python的强大功能,下面是...
  • 1、问题描述: 最近百度总爱做一些破坏用户信任度的事——文库金币变券、网盘限速,吓得我赶紧想办法...因此:有必要写一个脚本自动下载这些音乐了!!! 2、解决问题 自动下载歌曲有两种方法: JS法 模拟...
  • 2020暑期XX银行实习-一个自动脚本 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这...
  • 用pySimpleGUI写一个自动点击脚本

    千次阅读 2019-11-07 16:11:41
    用pySimpleGUI写一个自动点击脚本写在前面运行思路编写说明pySimpleGUI界面设计坐标点选中开始、暂停运行鼠标点击自动关机运行效果参考 写在前面 发现在玩游戏或者使用电脑期间,有时候会存在重复性比较高的操作,...
  • Python鼠标模拟

    2019-06-21 10:10:00
    有时候我们需要使用python执行一些脚本,可能需要让程序自动按键或自动点击鼠标,下面的代码实现了对键盘的模拟按键, 需要安装pypiwin32,当然也可以直接用ctypes来实现。 输入:pip install pypiwin32 安装...
  • 那么,windows 10 操作系统如何定时自动执行 python 脚本? 我的设备是 windows 10操作系统,自带的“计划任务”可以满足我的需求,具体操作步骤,整理如下。 步骤1:打开 “计算机管理” 界面 点击电脑左下角的...
  • 打算尝试用Python写个脚本来代替我自动点击(PC端,安卓模拟器) 大家放心我没写出来 写好在测试的时候,发现一到安卓模拟器就丢失焦点(也可能是点不了),对win32编程完全不熟悉,研究了2,3个小时没解决。又...
  • 为了网络安全课程的实训作业检查,写了这个程序,有学到一些知识,也...pyautogui(鼠标键盘的自动化操作) pillow(处理图像) numpy(numpy的二维数组,用于存储整张连连看图片的数据信息) 在cmd 有一个额外的 设计
  • 文本框先点击 后输入城市名称 再选择输入的城市 """ # 导入Selenium的Webdiver包 from selenium import webdriver #导入鼠标事件的包 from selenium.webdriver.common.action_chains import ActionChains #导入时间 ...
  • Python斗鱼直播间自动发弹幕脚本

    万次阅读 2019-01-05 21:07:17
    工具:Python,Chrome浏览器 ... 查找元素可以通过chrome浏览器鼠标指向该元素,然后右键点击检查,Copy,Copy Xpath等方法拷贝元素的值 # coding = utf-8 from selenium import webdriver import time dr = web...
  • [python]windows下模拟鼠标键盘输入一、几个用到的函数二、代码win_mouse_key.py三、应用实例:在cmd窗口用python脚本将一段文本复制到另一个地方cmdpythonfrom win_mouse_key import*脚本代码: 一、几个用到的函数 ...
  • 我用Python在做一个自动按键脚本小程序,使用Sendmessage和Postmessage向指定程序发送指令, 本来都进行的挺顺利的,但是遇到一个问题始终无法解决。 问题是这样的:窗口程序有一个复选框,我需要向该程序窗口发送一...
  • 我们搭建好jira服务后,通过浏览器是可以访问Jira-web的,我们通过鼠标点击和键盘的 敲打是可以手动为jira添加一定量的用户,现在我们需要脚本来驱动浏览器自动为我们 添加已经按照某种格式添加好的大量用户,这...
  • 使用场景:再执行完成自动化后,需要给boss发一个im软件的消息(cs架构),需要打开im软件,然后找到boss,点击头像进入聊天页面,然后复制一下文本并发送!假设不用翻页哈 脚本思路:每次执行点击之前都会先截一下...
  • 当我们有多个zip压缩包需要解压的时候,或者说每天都会有几个新的压缩包需要解压,而每次鼠标点击右键,电脑总会检查安全性,导致反应半天。此时就有了使用脚本来帮助我们自动解压的需求。 详情链接: python自动化...
  • 最近在写自动封禁的脚本,遇到一个元素只有悬停才能显示功能菜单的问题 我需要鼠标悬停到【响应处置】等待元素出现后再选择【一键响应】功能 下面是解决该问题的代码段 from selenium.webdriver.common.action_...
  • 本文实例讲述了Python PyAutoGUI模块控制鼠标和键盘实现自动化任务。分享给大家供大家参考,具体如下:PyAutoGUI是用Python写的一个模块,使用它可以控制鼠标和键盘。利用它可以实现自动化任务,再也不用担心有重复...
  • 需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽 解决:selenium提供了一个类来处理这类事件 selenium.webdriver.common.action_chains.ActionChains(driver) 脚本: from selenium....

空空如也

空空如也

1 2 3 4
收藏数 75
精华内容 30
热门标签
关键字:

python鼠标自动点击脚本

python 订阅