用python写一个带界面的剑灵取色卡刀工具


一.背景介绍

之前一段时间在学习python,有以前的C++基础理解起python来还是没有太大的压力的,看了下语法后打算写一
简单的程序练练手,同时也熟悉下python的语法,同时呢我也在玩剑灵这款游戏,里面有些技能操作会按的手痛...,
以就借着这个机会写一个简单的卡刀软件,借鉴了网上的各种取色宏的思路,通过对比技能所在区域的屏幕像素进行模
拟鼠标键盘的操作来完成卡刀的过程,下面就简单介绍下整个流程;

二.思路分析

首先,选择的语言是python,那么就先去看看python的语法,需要知道python的基本内容,原先有其他语言基础
可以去看看 菜鸟教程 ,教程比较基础,详细,但是是文字类的,不是视频,原先没有语言基础的可以去搜一搜 python
的视频教程,方便理解学习。
然后,确定软件需要的功能:简单的UI,图像获取功能,图像对比功能,模拟鼠标键盘事件功能;有了这几个功
后基本就能完成我们这个小工具了。
第三步,这些功能可以选择自己实现或者找python已有的库来完成,既然是初学者嘛,自己用python写这些功
还是有一定的难度的,所以能已经有的库,就用别人的,么有的就自己实现。

三.知识准备

UI:这里我使用的是python自带的库,Tkinter,文档在这:Tkinter文档,当然还有其他的可以选择例如PyQt,
wxPython等,可以自行 选择
图像的获取:主要是获取屏幕上指定区域的像素构成的图片,相当于是一个简单的截图功能,这里选择的是
Pillow这个python图像处理的库,需要进行安装,文档在这:pillow文档,网上搜一搜也是一大堆的教程,
安装命令: pip install pillow
图像的对比:这里我采用的是这篇文章中的做法
鼠标键盘的模拟:使用的是PyUserInput,文档在这:PyUserInput文档,使用起来非常简单,另外说到了鼠标键
盘的模拟,自然要谈一谈鼠标键盘事件的捕捉,可以使用PyHook这个库,文档在这:PyHook文档,使用很简单。
程序打包:使用pyinstaller,文档在这:pyinstaller文档,记得打包时加上--uac命令以便获取管理员权限
这个程序我是我使用了剑灵的UI文件来获取相关技能的图标位置,所以还用到了XML解析相关的库,这里推荐这
篇博客:点击打开链接
其中有些库官方没有64位版本的,可以到这里看看:python库,但需要注意的是,这里的库是非官方版本,不提供任
何保证,仅用于学习使用。

四.问题总结

考虑到这个工具中并不涉及太多的算法,主要是通过阅读以上文档或者网上相关的教程来组织自己的软件的结构
,这里就不贴代码了,完整的代码放在文末,主要是需要对python的语法各种数据结构慢慢理解,运用,这里就介绍
下我写代码的过程中遇到的一些问题:
1.因为卡刀过程需要不断匹配对应图像是否相等,所以需要一个死循环,但是这样就会导致程序失去相应,
后面我使用多线程的方式解决了这个问题,将图像判断的死循环放到另一个线程中处理,这样就不会导致程序失去响
应,多线程的介绍可以参考:点击打开链接
2.程序需要在其他程序内部也能模拟键盘鼠标事件,但是我一开始一直做不到这一点,就是在桌面上能正常
模拟,但是在剑灵程序内部却模拟不了,后面偶然在知乎看到一篇文章提到windows下需要管理员权限,所以我打包程
序的时候添加了获取管理员权限的命令,最后程序就能在剑灵内部也能模拟事件了
3.键盘事件模拟的时候,"V"和“v”是不一样的,少了一个shift按键的动作,这个地方一开始没有注意,
导致程序运行后出现了一些很奇怪的现象,需要按一下shift才能去除,所以这点需要注意
4.还有一些遗留问题,虽然程序可以正常运行,也可以正常匹配图像,并且模拟鼠标键盘事件,但是不够
灵敏,所以作为卡刀程序还是不行的....,不过作为学习python还是可以的,另外我猜测是因为图像匹配算法不够好
,导致运算时间太长,也许可以通过增加线程解决这个问题,不过暂时先在这挖个坑,之后来填把
使用的是python 2.7.13 x64位进行编写
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值