python - 每次减少一个数字(健康),执行一个代码
问题描述
所以基本上我正在编写一个 python 脚本来读取游戏中的健康状况。我使用以下库。
import numpy as np
import pytesseract
import cv2
from PIL import ImageGrab
我已经成功地在实时屏幕中读取了一个健康号,并在 python 中将其更改为 int。但是,当我在游戏中的生命值下降或每次生命值下降时,我仍然无法想出如何执行代码的想法。
conf = r'--oem 3 --psm 6 outputbase digits'
pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'
def screenToData():
while (True):
screen = np.array(ImageGrab.grab(bbox=(350, 150, 550, 300)))
cv2.imshow("window", cv2.cvtColor(screen, cv2.COLOR_BGR2RGB))
data = pytesseract.image_to_data(cv2.cvtColor(screen, cv2.COLOR_BGR2GRAY), lang='eng', config=conf)
# print(data)
if cv2.waitKey(25) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
for x, box in enumerate(data.splitlines()):
if x != 0:
box = box.split()
# print(box)
if len(box) == 12:
if int(box[11]) == 100:
print("Full health")
elif int(box[11]) <= 100:
print("Nope")
screenToData()
解决方案
第一步,在您的代码中,您应该有一个名为 health 的变量,这使代码更具可读性。
要确定您的健康状况何时下降,每次循环时,您只需将当前健康状况与上次读数进行比较,因此可以添加一个变量 new_health 来与健康状况进行比较。
health = 100
while True:
new_health = read_health()
if new_health < health:
# execute code
health = new_health
推荐阅读
- java - “java.sql.SQLException:用户'root'@'localhost'的访问被拒绝(使用密码:YES)”
- c++ - “x += x & (-x)”是什么意思?
- spring - swagger2 和 SpringMVC 的问题 - 花费大量时间来运行应用程序
- postgresql - 如何使用来自另一个表的附加查询从一个表中提取数据?
- office-store - 需要更改 Word 加载项(但从我的角度来看,一切似乎都很好)
- javascript - 有没有办法在 JSON 数组中搜索可以包含特定值的多个值的字段?
- c - 限制运行的线程
- powershell - Mail和EmailAddress有什么区别
- install4j - 由 install4J 创建、公证和安装的捆绑 OpenJDK 的 OS X 应用程序无法启动
- arduino - 微秒长度的正弦脉冲/波