Automatisieren Sie die Sushi-Herstellung mit Python

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←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

Automatisieren Sie die Sushi-Herstellung mit Python
Ich habe versucht, die Herstellung von Sushi mit Python zu automatisieren
Automatisieren Sie Python-Tests mit CircleCI
FizzBuzz in Python3
[Python] Automatisieren Sie Pelican Builds mit Travis CI
Scraping mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
Führen Sie prepDE.py mit python3 aus
1.1 Erste Schritte mit Python
Tweets mit Python sammeln
Binarisierung mit OpenCV / Python
3. 3. KI-Programmierung mit Python
Kernel-Methode mit Python
Scraping mit Python + PhantomJS
Fahren Sie WebDriver mit Python
[Python] Mit CGIHTTPServer umleiten
Sprachanalyse mit Python
Denken Sie an Yaml mit Python
Kinesis mit Python betreiben
Verwenden Sie DynamoDB mit Python
Zundko Getter mit Python
Behandle Excel mit Python
Ohmsches Gesetz mit Python
Führen Sie Blender mit Python aus
Python ab Windows 7
Automatische Übermittlung von AtCoder (Python)
Heatmap von Python + matplotlib
Asynchron mit Python verarbeiten
Python-Programmierung mit Atom
Python lernen mit ChemTHEATER 02
Verwenden Sie Python 3.8 mit Anaconda