用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位進行編寫
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章