本来嘛,说好了要写Selenium自动化搜电影的笔记的,然后正好今天上课无聊玩阴阳师开了个SSR,发现还有600体!准备怒刷之,但是又肝不动了。打算尝试用Python写个脚本来代替我自动点击(PC端,安卓模拟器)

大家放心我没写出来

写好在测试的时候,发现一到安卓模拟器就丢失焦点(也可能是点不了),对win32编程完全不熟悉,研究了2,3个小时没解决。又跟一个网易游戏的聚聚聊了会,他用C++写的用得和我一样的方法完成了。。。。。

(如果有必要我明天换C++写一下。。。)但是测试了其他游戏,如腾讯游戏大厅,炉石传说,都可以按照设定的逻辑正常点击。

我在写完上面一段话的时候突然想起来,我是不是应该把.py文件用管理员模式运行一下试试。。。。。唉 然后就成功自动刷了几次御魂。。。

把开发工具和几个常用的方法贴出来。

安卓模拟器:Bluestacks

Python版本:2.7

使用的包:

importtimeimportwin32api,win32gui,win32confrom ctypes import *

在pywin32下,我们可以调用windos编程的一些函数。比如说调用MessageBox弹个窗啥的。当然我们今天主要调用的是与鼠标操作相关的函数,用python语言实现鼠操作的模拟。

1.鼠标的点击defclickLeftCur():

def clickLeftCur():

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN|win32con.MOUSEEVENTF_LEFTUP, 0, 0)

第一个参数表示 按下鼠标左键后放开鼠标左键,模拟了一次左键单击,

而后面两个参数0表示关于上一次鼠标事件后的偏移量,我们暂时不用。

2.鼠标的移动

defmoveCurPos(x,y):

windll.user32.SetCursorPos(x, y)

顾名思义,移动鼠标。x,y表示以你当前屏幕左上角为0,0原点的坐标系的坐标单位为一像素。

3.获取鼠标当前坐标

defgetCurPos():return win32gui.GetCursorPos()

获取鼠标当前位置的坐标信息。

好,有了上诉三个函数之后,我们就可以干一下奇怪的事情了。比如把鼠标从当前位置往右移动100个像素之后点击一下鼠标。

#获取鼠标当前位置

xy=getCurPos()#向右移动100个像素

moveCurPos(xy[0]+100, xy[1])#单击鼠标左键

clickLeftCur()

OK,到这里我们已经熟悉了简单的鼠标操作。

那我们怎么把它应用到阴阳师里面呢!!!!

比如刷觉醒:

1.我们应该在探索页面中,点击左下角的觉醒材料

2.然后选择你要刷的麒麟

3.选择层数,点击挑战

4.点击准备

5.点击任意位置获得红蛋,点击任意位置开启,再次点击任意位置回到 3

6.开始下一次 刷刷刷

这里有几个要注意的地方,我在程序里一一指出来。

既然我们要点击的区域很多,那我们就得记录很多的坐标,所以我用了一个函数来检测当前句柄和鼠标的位置。

defgetPos():whileTrue:

time.sleep(0.2)

getCurPos()

pos=getCurPos()

s=getWinHandle(pos)print s ,pos

这个函数会一直输出你鼠标所在的位置信息和鼠标焦点所在的窗口句柄,通过记录这些数据,我们可以告诉程序接下里需要移动和点击的轨迹。

准备完成之后,我们就开始刷刷刷!

#跳转到指定句柄的窗口

win32gui.SetForegroundWindow(4720694)

time.sleep(1)

这里就要用到我们刚才使用的getPos()函数获得的信息了,每次的窗口句柄都是不同的。首先我们先将焦点转到到阴阳师游戏窗口。

#移动到左下角 觉醒材料 点击

moveCurPos(420,845)

clickLeftCur()

time.sleep(2)

因为在庭院中的移动会影响探索灯笼的位置,所以假设我们已经在探索页面。点击左下角的觉醒材料页面,等待2秒来响应。

#点击风麒麟

moveCurPos(976,467)

clickLeftCur()

time.sleep(2)

风麒麟最好点,我们先点风麒麟,其他的麒麟根据固定的位置应有不同的点击方式

#移动到挑战 点击

moveCurPos(1417,716)

clickLeftCur()

time.sleep(10)

由于阴阳师会记录你上一次挑战的层数,所以我这里就不选层了。由于这里要点击动画,我选择等待10秒。

#点击准备

moveCurPos(1665, 714)

clickLeftCur()

time.sleep(2)

点击准备后开始战斗。

#等待战斗结束

time.sleep(45)

这里是最不好估计的,我觉得你应该多尝试几次固定层数的时间,然后取平均值,并适当的延长一段时间。我这里为了测试方便,选择的是四层。

#任意点击屏幕3次

clickLeftCur()

time.sleep(2)

clickLeftCur()

time.sleep(2)

clickLeftCur()

time.sleep(3)

结束后单击三次任意位置,就能开启宝箱并退出当前战斗。

前面的坐标啊,句柄啊,都是我临时获得的,我只要稍微移动一下窗口就不可用了。所以,我们学习的是方法啊!!!!今天就弄了几个小时,主要是被管理员权限坑惨了!!!!!啊啊啊!!!

想一劳永逸的话也很简单,每次都固定窗口的大小(比如全屏幕),或者通过获取窗口的句柄,来或者窗口的长宽,而每个控件都是固定位置在窗口中的,这样我们只要通过控件所在位置的长宽比,就可以一次性解决这些问题。

另外刷探索副本的话由于宝箱掉落的位置不确定,所以比较难使用这个方法实现,这个方法比较适用于 觉醒材料,御魂,结界突破。并且在使用的过程中,是不能动电脑的。。。。我也想后台刷啊!改天有空了查查其他资料去!

求关注公众号 :eatPython

python怎么模拟鼠标移动点击_Python模拟鼠标点击——如何正确的肝阴阳师相关推荐

  1. python编程手机模拟点击_python模拟点击玩游戏的实例讲解

    小编发现很多小伙伴都喜欢玩一些游戏,而手游因为玩的场景限制不多,所以受众的人更多.游戏里有很多重复的任务需要我们完成,虽然过程非常无聊,但是为了任务奖励还是有很多小伙伴不厌其烦的去做.那么,有没有什么 ...

  2. python模拟网页点击_python模拟点击

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python怎么模拟点击网页按钮前提环境:python3 和 visual st ...

  3. 用python写一个简单的网页游戏_python模拟点击玩游戏的实例讲解

    小编发现很多小伙伴都喜欢玩一些游戏,而手游因为玩的场景限制不多,所以受众的人更多.游戏里有很多重复的任务需要我们完成,虽然过程非常无聊,但是为了任务奖励还是有很多小伙伴不厌其烦的去做.那么,有没有什么 ...

  4. python selenium鼠标点击_python selenium鼠标键盘操作(ActionChains)

    用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件--ActionChains sele ...

  5. python控制鼠标移动并点击_python模拟鼠标点击和键盘输入的操作

    所有代码都是网上百度出来的,通过个人实践找到适合自己的. 采用的python 库是pymouse.pykeyboard 安装时直接pip安装的,pip install PyUserInput 安装不成 ...

  6. python控制鼠标点击_python模拟点击中如何操作鼠标位置?

    在进行正式的实战模拟点击之前,我们已经学过了鼠标的简单常用操作.那么大家会运用到python代码中吗?对于python小白来说还是一件困难的事情,毕竟写代码方面不是很擅长.这里小编整理了一些关于鼠标的 ...

  7. python模拟屏幕点击_python模拟鼠标点击教程

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  pywin32 pip install  pyHook?1.5.1?cp37?cp37 ...

  8. python 安卓模拟点击_python模拟点击在ios中实现的实例讲解

    我们都知道因为操作系统的不同,很多游戏区分为安卓和苹果两个版本.那么之前学会python模拟点击的小伙伴开始担心,如果手机是ios版本那还能使用吗?这个问题小编进行了测试,小伙伴们完全不用忧虑ios版 ...

  9. python实现安卓点击_python模拟点击在ios中实现的实例讲解

    我们都知道因为操作系统的不同,很多游戏区分为安卓和苹果两个版本.那么之前学会python模拟点击的小伙伴开始担心,如果手机是ios版本那还能使用吗?这个问题小编进行了测试,小伙伴们完全不用忧虑ios版 ...

最新文章

  1. 程序化广告(4):考核指标
  2. 【已解决】FileNotFoundError: [Errno 2] No such file or directory:_Python系列学习笔记
  3. pandas的loc, iloc, ix的操作
  4. 基于STM32和W5500的Modbus TCP通讯
  5. shell脚本语之运算符
  6. 30余种加密编码类型的密文特征分析
  7. VB 使用SendMessage枚举文件与目录
  8. 药师帮完成1.33亿美元D轮融资,投资方为老虎环球基金、H Capital和DCM...
  9. python模块-time,datatime
  10. 【移动开发】startForeground()让服务保持前台级别
  11. 基于Python的Climate Indices库计算SPEI(标准化降水蒸散发指数)01—Climate Indices库的下载和安装
  12. 怎样查找计算机的ip mac地址,如何通过mac地址查ip,教您Mac怎么查看ip地址
  13. 中英文颜色RGB数值对照表(python cv2)
  14. SQL语法笔记和常用技巧收集
  15. FFmpeg格式转换
  16. 深入HotSpot虚拟机源码探究synchronized底层实现原理【万字总结synchronized】
  17. 物联网毕业设计 单片机火灾报警器设计与实现
  18. php自带的basename函数尽然不支持中文
  19. 经贸英语中专用名词与常用词如何翻译?
  20. APP和网站提示有敏感词怎么办?别慌,一看就会!

热门文章

  1. open小将java下载_OPEN YOUR DREAM_OPEN小将_高音质在线试听_OPEN YOUR DREAM歌词|歌曲下载_酷狗音乐...
  2. 如何在ESP8266中使用深度睡眠模式降低功耗
  3. sql面试重点之minus 2021-11-05
  4. 基本图形:直线(Line)
  5. mysql中vlookup函数_数据库合并函数vlookup介绍
  6. 过去一周最吸引眼球的10大科技产品或技术
  7. java学习第17天,p183-p190(12/21)
  8. 从零开始学习Java设计模式 | 创建型模式篇:原型模式
  9. Falsehoods Programmers Believe About Names
  10. java8u221_jdk8u221下载|jdk-8u221-windows-x64 官方免费版 下载_当下软件园_软件下载