学习笔记:python游戏脚本1.0版本,实现自动点击、识图、识别价格、弹窗提示低于预期价格可以购买

本人0.0001基础小白,欢迎大佬指点。

目标:游戏里面的商品是由别的玩家售卖,价格是波动的,想要买到一个好价格需要不断查看其他玩家的商店,并识别商店内是否有所需要的商品,有商品就点击查看价格,识别价格和心里预期价格进行比较,低于价格预期弹出窗口提醒购买。

思路:

1.用pyautogui来进行鼠标的移动和点击,以及图片的识别,为防止游戏进行脚本检测用random来偏移鼠标点击位置,但要确保点击位置准确,不能超过作用范围

2.用pyautogui来获取固定区域内是否相应的商品的图片

2..用pyautogui来获取区域截图,用opencv处理价格区域的截图,获取int类型的价格

4.用win32api进行窗口的弹出

代码引用了csdn上一些大佬的代码  但是我写这个代码断断续续,前面的引用大部分都找不到了,大佬见谅。如有侵权立即删除。

另外代码如果在pycharm里运行  会出现一直循环  知道找到商品否则关不掉。

后面等自己水平提高会更新

代码如下:

# import the necessary packages
from imutils.perspective import four_point_transform
from imutils import contours
import imutils
import cv2
import pyautogui
import pytesseract
import random
import win32api, win32con
from PIL import Image
import goto
from goto import with_goto
from goto import goto, label
# define the dictionary of digit segments so we can identify
# each digit on the thermostat




@with_goto
def fun2(u,v):
	#u,v需要点击的图片的中心点
	de3 = random.random()
	de4 = random.random()
	de1 = u + de3
	de2 = v + de4
	pyautogui.moveTo(de1, de2, duration=0.25)# 移动到偏移后的位置
	a = random.random()
	b = 1 + a
	pyautogui.click(duration=b)
# ---------------------------------------------------图片比对-------------------------------------------------------------
#确定目标商品的中心点坐标
l = pyautogui.locateCenterOnScreen(r'目标商品图片', region=(1507, 361, 348, 313), confidence=0.9)
while l is None:
	fun2(1769, 651)
	l = pyautogui.locateCenterOnScreen(r'目标商品图片', region=(1507, 361, 348, 313), confidence=0.9)

else:
	center1, center2 = l
	center1 = float(center1)
	center2 = float(center2)
	fun2(center1, center2)
	# --------------------------------------------------价格区域截图-----------------------------------------------------------
	im1 = pyautogui.screenshot(r'价格截图的位置和名字',region=(1577, 742, 85, 14))

	# ----------------------------------------------------价格识别------------------------------------------------------------
	image = cv2.imread(r'价格截图')
	image = imutils.resize(image, height=500)
	gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
	thresh = cv2.threshold(gray, 0, 255,
						   cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
	kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (1, 5))
	thresh = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
	cv2.namedWindow("Demo3", cv2.WINDOW_NORMAL)
	cv2.resizeWindow("Demo3", 405, 68)
	text = pytesseract.image_to_string(thresh)
	n1 = text.replace(',', '')
	n2 = int(n1)
	if n2 <= 14000000:
		win32api.MessageBox(0, '有货,速来', '价格比较窗口', win32con.MB_OK)
	else:
		goto.begin

你可能感兴趣的:(学习,游戏)