首页 > 解决方案 > 每次减少一个数字(健康),执行一个代码

问题描述

所以基本上我正在编写一个 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()

标签: python

解决方案


第一步,在您的代码中,您应该有一个名为 health 的变量,这使代码更具可读性。

要确定您的健康状况何时下降,每次循环时,您只需将当前健康状况与上次读数进行比较,因此可以添加一个变量 new_health 来与健康状况进行比较。

health = 100

while True:
    new_health = read_health()
    if new_health < health:
        # execute code
    health = new_health

推荐阅读