Hallo. Plötzlich alle Sushi schlagen Machst du? Die meisten Leute, die das Tippen geübt haben, sollten dieses Spiel gespielt haben. Sushi Hitting ist ein Browsergame. Also dachte ich, dass es einfach zu automatisieren wäre, wenn ich HTML mit Python hätte, also entschied ich mich, es zu machen.
Ich habe versucht, den HTML-Code zu erhalten. Tatsächlich verwendet die Sushi-Herstellung eine Technologie namens OpenGL. Es scheint, dass die Zeichen als Bild angezeigt werden. Daher handelt es sich um eine Richtlinienänderung. Lassen Sie uns das Bild erkennen.
Drücken Sie zuerst die Starttaste und die empfohlene Taste.
import pyautogui
import time
x,y=pyautogui.locateCenterOnScreen("susida.png ")
print(x)
print(y)
pyautogui.click(x, y+100)
print("Ich drückte den Startknopf.")
time.sleep(1)
pyautogui.click(x, y+100)
print("Ich habe die Empfehlung gedrückt.")
time.sleep(1)
pyautogui.typewrite(" ")
print("Start.")
time.sleep(2)
Wenn Sie es in absoluten Koordinaten angeben, ändert es sich abhängig von der Fenstergröße usw. Ich habe mich entschieden, die relativen Koordinaten von susida.png zu verwenden. ←susida.png Klicken Sie dann mit pyautogui auf diese Koordinate. Installation von Pyautogui
pip install pyautogui
ist.
Als nächstes folgt der Bilderkennungsteil.
import pyocr
import pyocr.builders
from PIL import Image
import sys
import cv2
i=1
result=0
tools=pyocr.get_available_tools()
if len(tools) == 0:
print("Das OCR-Tool wurde nicht gefunden.")
sys.exit(1)
tool=tools[0]
while(i<201):
sc=pyautogui.screenshot(region=(x-110, y+85, 210, 25))
sc.save("original.png ")
original=cv2.imread("original.png ",0)
threshold=100
ret, img_thresh = cv2.threshold(original, threshold, 255, cv2.THRESH_BINARY)
cv2.imwrite("gray.png ", img_thresh)
hanten = cv2.imread("gray.png ")
hanten2=cv2.bitwise_not(hanten)
cv2.imwrite("sushida_sc.png ", hanten2)
img_org=Image.open("sushida_sc.png ")
builder = pyocr.builders.TextBuilder()
tmp=result
result=tool.image_to_string(img_org, lang="eng", builder=builder)
if(tmp != result):
print(i,"Gericht:",result)
pyautogui.typewrite(result)
i=i+1
time.sleep(0.3)
Pyocr wird zur Bilderkennung verwendet. Die Einführungsmethode ↓ finden Sie hier https://gammasoft.jp/blog/ocr-by-python/ Zunächst drücke ich normalerweise die römischen Schriftzeichen zusammen. Dies macht den Hintergrund jedoch transparent und verringert die Erkennungsgenauigkeit. Es wird also binärisiert. Invertieren Sie es dann, um den Text schwarz zu machen. Wenn Sie das eingeben, was Sie mit pyautogui erkennen, ist die Automatisierung der Sushi-Herstellung abgeschlossen. Der Grund für das Anhalten bei 200 ist, dass Sie eine Fehlermeldung erhalten, wenn Sie zu viel Sushi essen. Der vollständige Text ist unten.
import pyautogui
import time
import pyocr
import pyocr.builders
from PIL import Image
import sys
import cv2
i=1
result=0
tools=pyocr.get_available_tools()
if len(tools) == 0:
print("Das OCR-Tool wurde nicht gefunden.")
sys.exit(1)
tool=tools[0]
x,y=pyautogui.locateCenterOnScreen("susida.png ")
print(x)
print(y)
pyautogui.click(x, y+100)
print("Ich drückte den Startknopf.")
time.sleep(1)
pyautogui.click(x, y+100)
print("Ich habe die Empfehlung gedrückt.")
time.sleep(1)
pyautogui.typewrite(" ")
print("Start.")
time.sleep(2)
while(i<201):
sc=pyautogui.screenshot(region=(x-110, y+85, 210, 25))
sc.save("original.png ")
original=cv2.imread("original.png ",0)
threshold=100
ret, img_thresh = cv2.threshold(original, threshold, 255, cv2.THRESH_BINARY)
cv2.imwrite("gray.png ", img_thresh)
hanten = cv2.imread("gray.png ")
hanten2=cv2.bitwise_not(hanten)
cv2.imwrite("sushida_sc.png ", hanten2)
img_org=Image.open("sushida_sc.png ")
builder = pyocr.builders.TextBuilder()
tmp=result
result=tool.image_to_string(img_org, lang="eng", builder=builder)
if(tmp != result):
print(i,"Gericht:",result)
pyautogui.typewrite(result)
i=i+1
time.sleep(0.3)
YouTube:https://www.youtube.com/watch?v=kZ0MKTQXgj0
Recommended Posts