上次提到PyUserInput库可以模拟鼠标键盘点击。今天老费就来练一波游戏脚本制作。这款游戏以爆肝着称,何不写个简单的脚本来解放双手。我们的目标是能够在该点击的时候点击一个按钮,从而达到自动完成任务的目的。关于如何确定点击位置,可以采用以下两种方法。手动确定相应按钮的位置;通过采集按钮的图片素材,与当前截图对比,可以定位按钮的位置。第一种方法有明显的缺陷——需要过多的人工操作,而第二种方法相对智能化。下面详细介绍一下第二种方法。截图为了实时获取当前的游戏状态,截图是很有必要的。这里使用了PIL库中的ImageGrab。通过模拟鼠标获取整个屏幕的大小,进行全屏截图。defscreen_shot(self):X,Y=self.m.screen_size()img=ImageGrab.grab((0,0,X,Y)img.save('now.png')通过OpenCV库比较图片比较,比较与当前实时截图的按钮素材,如果相似度大于指定阈值,则判断该素材存在于当前屏幕,并返回该素材在当前屏幕的位置。defget_location(self,template_pic):img=cv2.imread('now.png')template=cv2.imread(template_pic)x=template.shape[1]y=template.shape[0]res=cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED)loc=np.where(res>=self.threshold)iflen(loc[0])!=0:self.flag2=Trueloc_x=loc[1][0]loc_y=loc[0][0]scale_x=(loc_x,(loc_x+x))scale_y=(loc_y,(loc_y+y))返回scale_x,scale_y返回坐标范围,目的是点击按钮时随机选择按钮区域点击。模拟点击在指定范围内进行随机选择点击,更接近真实操作。defrandom_click_1(self,scale_x,scale_y):x=random.randint(scale_x[0],scale_x[1])y=random.randint(scale_y[0],scale_y[1])self.m.move(x,y)self.m.click(x,y,1,1)程序逻辑根据需要完成的任务,依靠上述获取指定按钮位置并随机点击的技术方法,我们可以轻松编写对应逻辑的代码。PS:本文仅供技术交流,请勿用于非法用途!!
