\quad 本来希望通过图像截图+图像识别+鼠标行为控制来制作一款类似连连看小游戏的辅助软件,但是因为主要使用的是PyAutoGUI库,在图像识别方面速度过慢,因而只能作罢,但将辅助代码记载于下:
import pyautogui #识别窗口,窗口置顶
import time
size=pyautogui.size()#获取屏幕大小
print(size)
mouse_pos=pyautogui.position()#获取鼠标位置
print(mouse_pos)
#控制鼠标移动 绝对移动
pyautogui.moveTo(10,10,1)#把鼠标移动到0,0位置 时间为1s
'''
Attention:移动到四个角会触发错误pyautogui.FailSafeException
'''
#控制鼠标移动 相对移动
pyautogui.moveRel(100,100,0.5)
#鼠标单击
pyautogui.click()
以上代码是pyaotugui库中的一些较为基本的操作。
之后通过pyaotugui中另一个函数
help_pos=pyautogui.locateOnScreen('main.png')
这个函数在这里替代了OpenCV库的作用,可以识别已经保存的图片在截图画面中的位置,返回是一个矩形的对象。
如果找不到或者存在多个目标的话就会返回None哦!
这个小游戏是一个找最大最小数的游戏
就是需要在给出的数字中去点击最大值或最小值,
所以hh,我们需要去判断下是最大还是最小滴问题:
(截图成品)
然后一个框架就是这样子滴:
import pyautogui #识别窗口,窗口置顶
import time
#time.sleep(5)
print('开始运行')
while True:
bs=pyautogui.locateOnScreen('最小数.png')
if bs==None:
balabala1
else:
balabala2
之后就是要往里面填充亿点细节啦!
其实我是发现了一个bug,2×2方格子的时候最小值都是1,最大值都是16。3×3的时候最小值是1,最大值是81。
但是但是但是但是但是!!!!!!
因为这糟心的背景图片,我一个1的截图不得不去截4份(别问,问就是没学过OpenCV不会用)。55555
不过,通过充分足量的截图,还是达成了我滴目的,自动化玩游戏!
就是这个不用OpenCV的速度实在是。。。。。。。
(低速版本千里马)
import pyautogui #识别窗口,窗口置顶
import time
#time.sleep(5)
print('开始运行')
while True:
bs=pyautogui.locateOnScreen('最小数.png')
if bs==None:
try:
help_pos=pyautogui.locateOnScreen(str(161)+'.png')
center = pyautogui.center(help_pos)
print(center)
pyautogui.moveTo(center)
pyautogui.click() # 单击
continue
except :
pass
try:
help_pos = pyautogui.locateOnScreen(str(162) + '.png')
center = pyautogui.center(help_pos)
print(center)
pyautogui.moveTo(center)
pyautogui.click() # 单击
continue
except:
pass
try:
help_pos = pyautogui.locateOnScreen(str(163) + '.png')
center = pyautogui.center(help_pos)
print(center)
pyautogui.moveTo(center)
pyautogui.click() # 单击
continue
except:
pass
try:
help_pos = pyautogui.locateOnScreen(str(164) + '.png')
center = pyautogui.center(help_pos)
pyautogui.moveTo(center)
pyautogui.click() # 单击
continue
except:
pass
else:
try:
help_pos=pyautogui.locateOnScreen(str(1)+'.png')
center = pyautogui.center(help_pos)
print(center)
pyautogui.moveTo(center)
pyautogui.click() # 单击
continue
except :
pass
try:
help_pos = pyautogui.locateOnScreen(str(2) + '.png')
center = pyautogui.center(help_pos)
print(center)
pyautogui.moveTo(center)
pyautogui.click() # 单击
continue
except:
pass
try:
help_pos = pyautogui.locateOnScreen(str(3) + '.png')
center = pyautogui.center(help_pos)
print(center)
pyautogui.moveTo(center)
pyautogui.click() # 单击
continue
except:
pass
try:
help_pos = pyautogui.locateOnScreen(str(4) + '.png')
center = pyautogui.center(help_pos)
print(center)
pyautogui.moveTo(center)
pyautogui.click() # 单击
continue
except:
pass
\quad
糟心透顶了也没拿个高分的名词,下次用AI来试水。
\quad
不过,这查的东西不能白看,一个邪恶 小恶作剧的想法瞬间诞生,既然我能控制鼠标了,那么,呵呵呵呵呵呵哈哈哈啊哈哈啊哈哈啊哈哈!!!!!!
\quad
我愿称之为牛气飞天!
import pyautogui
import random
import keyboard
key=0
def hhh():
global key
key=1
while True:
try:
keyboard.add_hotkey('q+p',hhh)#安全出口
a=random.randint(10,1910)
b=random.randint(10,1070)
pyautogui.moveTo(a,b)
if key==1:
print('逃出成功!牛年快乐!')
break
except:
pass
这个小恶作剧的功能:让你的鼠标到处乱飞,想关都关不掉。(除非走我流的后门p+q双剑齐下)
但是在制作过程中还是遇到一丢丢困难,键盘事件识别与判断,通过这个,我查到了一个蛮不错的库:keyboard。
import keyboard
import time
def hhh():
print('成功退出!')
keyboard.add_hotkey('q+u+i+t',hhh)
time.sleep(10)
这里为简略就先将一个函数add_hotkey:
\quad
两个参数,第一个是热键按键(就是你的qq每次打开时说的:您的热键被占用,说白了就是快捷键。)第二个是接受到这个热键时调用的函数。
\quad
通过这个其实可以达到游戏手柄的效果哦,aabb ←←→→ hhh。
\quad
通过响应其实是为了我自己留后门。(只有自己知道的后门hh)
其实除了热键设置以外,这个库还能用于键盘事件监听,鼠标事件监听等等,还是非常有用的。(侦探狂喜)
如果你的鼠标已经如同牛气一样漫天飞舞,pq同按可退出哦。
这时候,问题来了,一个.py程序是否能转换成一个在电脑上可执行的.exe文件呢?当然可以了,为此我今日专门复习了一下下。
1.首先,您装好了python。
2.齐次,您去装配一下pyinstaller。
>pip install pyinstaller
3.生成.exe文件
(1)自定义图标版本:
先cd到你的.py文件所在目录
>cd path
之后嘛,先生成一个.spec文件(为啥这样做,俺也不太清楚?)
pyi-makespec -F name.py
最后,保证你的图标文件.ico和.py文件在一个目录下。
.jpg和.png格式文件转.ico文件可转以下链接哦:
ico文件制作器
pyinstaller -F -w -i name.ico name.py
(2)默认图标版本:
只需要最后一步改成
pyinstaller -F -w name.py
收工!
看看我的成品:牛符咒!牛气冲天!