刚开始学Python。 最近闲来无事,做了一个大航海时代ol专用的练划船的按键器,和大家分享一下。我的配置是windows7 64位,Python3.6版本。在开始之前需要做的准备
1.安装puwin32和pyhook库:
pywin32库比较简单: pip install pywin32
pyhook比较麻烦,需要先下载,这是下载地址,选择自己对应Python对应的版本下载就好,然后打开cmd,转到pyhook安装包所在的目录,pip安装即可
2.安装pyuserinput库:
还是在前边的连接下载pyuserinput,pip安装即可
3.最后安装pyinstaller:
pip install pyinstaller
接下来开始写程序
首先用pyautogui抓取需要点击的点坐标和工具栏翻页键,将其保存到“大航海.txt”文件中。用pyautogui是因为Python3.6对可以记录鼠标点击坐标的pythoncom库支持不好,不能取得其他窗口的点击坐标(好像可以配置,但是太麻烦了~~)
import pyautogui as pag from time import sleep def findloc(filename,pointnum=18): X=[] Y=[] for i in range(pointnum+2): if i <pointnum: print("开始采集点击点之第 "+str(i+1)+' 个点:') else: print("开始采集翻页键之第 " + str(i - pointnum+1) + " 个点(先上后下,先右后左)") sleep(5) x, y = pag.position() X.append(x) Y.append(y) with open(filename,'w') as f_o: for x in X: f_o.write(str(x)+' ') f_o.write('\n') for x in Y: f_o.write(str(x) + ' ') f_o.write('\n') return pointnum if __name__ == '__main__': findloc('大航海.txt')
接下来读取txt文件(为什么要这样呢?因为不想每次都要重新抓取啊!):
from findloc_dahanghai import findloc as fl def load_node(filename): p = input("需要设置点击点个数么?默认为18个(y/任意键): ") if p == "y": pointnum = int(input("输入点击点个数: ")) else: pointnum = 18 fl(filename,pointnum) return "采集点击点成功!" if __name__ == '__main__': load_node("pp.txt")
from input_point import load_node as LN def loadloc(filename): x = [] try: open(filename) ms=input("已有数据,需要重新录入么?(y/任意键): ") if ms=='y': LN(filename) for line in open(filename): z=line.split() for zz in z: x.append(int(zz)) X=x[0:int(len(x)/2)-2] FX=x[int(len(x)/2)-2:int(len(x)/2)] Y=x[int(len(x)/2):len(x)-2] FY=x[len(x)-2:len(x)] except FileNotFoundError: print("还没有数据,请录入数据并重启程序") print(LN(filename)) for line in open(filename): z=line.split() for zz in z: x.append(int(zz)) X=x[0:int(len(x)/2)-2] FX=x[int(len(x)/2)-2:int(len(x)/2)] Y=x[int(len(x)/2):len(x)-2] FY=x[len(x)-2:len(x)] return X,Y,FX,FY if __name__ == '__main__': X,Y,FX,FY=loadloc("大航海test.txt") print(X) print(Y) print(FX) print(FY)
最后调用调用抓取到的坐标,调用pyuserinput进行鼠标和键盘操作:
from pymouse import PyMouse from pykeyboard import PyKeyboard from loadnode_1 import loadloc from time import sleep m=PyMouse() k=PyKeyboard() x,y,fx,fy=loadloc("大航海.txt") j=1 t=3 pausetime=int(input("请输入间隔时间t,默认为3s,总时间T=(t+16)s.t= ")) while True: m.click(x[0], y[0], button=2, n=1) print("完成重新定位") for i in range(len(x)): sleep(pausetime) m.click(x[i],y[i],button=1,n=2) print("第 "+str(j)+" 次循环之第 "+str(i+1)+" 次点击") msg = ["划船", "救援", "灭火", "清洁", "补漏", "医治", "修理", "平叛", "钓鱼", "测量"] k.tap_key(k.function_keys[10]) sleep(2) for jj in range(8): k.tap_key(k.function_keys[jj+1]) print("完成 "+msg[jj]+" 检查") sleep(1) m.click(fx[0],fy[0],button=1,n=1) sleep(2) k.tap_key(k.function_keys[1]) print("完成 "+msg[8]+" 检查") sleep(1) k.tap_key(k.function_keys[2]) print("完成 "+msg[9]+" 检查") sleep(1) m.click(fx[1], fy[1], button=1, n=1) sleep(2) k.tap_key(k.function_keys[10]) k.tap_key(k.function_keys[10]) sleep(2) m.click(fx[0], fy[0], button=1, n=1) sleep(1) k.tap_key(k.function_keys[3]) print("完成补充") sleep(1) m.click(fx[1], fy[1], button=1, n=1) sleep(1) k.tap_key(k.function_keys[10]) j=j+1 print(j)
最最后一步,调用pyinstaller将dahanghai.py打包成exe文件,这样就可以在不同的电脑上运行了!
命令如下:
pyinstaller -F dahanghai.py
最后的运行结果如下:
就是这样了~~