【実は超簡単‼】寿司打でチート(無限)をする方法を解説‼

python
スポンサーリンク

初めに

皆さんは寿司打というタイピングゲームをやったことがありますか。

タイピングを練習したことがある方は、多かれ少なかれ寿司打をやってみたことがあると思います。

そんな寿司打をやっていると、やっぱり誰しもが「無限に食べてみたい‼」という願望を抱くわけです。

というわけで、今回は、私が作った「寿司打で皿を無限に食べることができるプログラム」を紹介したいと思います‼

この記事の最後のほうに、「プログラムに関する説明」をしているので、プログラムの仕組みに興味がある方は是非どうぞ!

(ある程度pythonに知識がないと難しいかも。)

作ったプログラムで寿司打をやってみた

実際、どんな感じになるの?と思っている方もいらっしゃると思うので、動画を見せておきたいと思います‼

私が作ったプログラムを動かすと、下のようになります。(画像認識AIを使って文字を読み取って、それを入力させるようにプログラミングしています。)

秒数がどんどん増えていって、最後にはカンスト(カウントがストップすること。)していますね。

歌詞タイピングでやってみた‼

↓面白いのでぜひ読んでください。

それでは、次は、寿司打チートのプログラムの作り方動画を作ったので、それを紹介していきたいと思います‼

作り方を動画にしてみた

記事の一番下のところを見てもらえれば分かりますが、あまりにも「作るのが難しすぎる」とのコメントをいただきすぎたので、動画を作ることにしました~‼

ぜひ、記事読んでわからないところがあったときなどに活用してください‼

それでは、前置きが長くなってしまいましたが、寿司打でチートをするプログラムの作り方を見ていきましょう‼

Step1:Pythonをインストールする

私が作ったプログラムの言語はpythonなので、まずはpythonをインストールしましょう‼

↓pythonのインストール方法はこちら‼‼

pythonのインストールは成功しましたか。

つぎは、プログラムを動かす上での準備をしていきたいと思います‼

Step2:プログラムを動かす上での準備

次は、見出しのところにもあるとおり、私が作ったプログラムを動かすうえでの準備をしていきたいと思います‼

ライブラリのインストール

pythonにはライブラリという、ブラウザでいうところの「拡張機能」みたいなものが存在します。

私が作ったプログラムも、ライブラリをいくつか使っているので、まずは、そのライブラリをインストールします。

コマンドプロンプトを開く

ライブラリをインストールするために、「コマンドプロンプト」というものを起動しないといけません。

コマンドプロンプトを開く基準を簡単に説明するので、それに従ってコマンドプロンプトを起動させてみてください

↓検索ボックスをクリック

画像に alt 属性が指定されていません。ファイル名: image-5-1024x683.png

↓コマンドプロンプトと入力します。

画像に alt 属性が指定されていません。ファイル名: スクリーンショット-9-1024x683.png

そして、コマンドプロンプトを起動してください。

画像に alt 属性が指定されていません。ファイル名: スクリーンショット-9_LI-1024x683.jpg

こんな感じに表示されると思います。(名前は知識の箱とは限りません。)

画像に alt 属性が指定されていません。ファイル名: スクリーンショット-10-1024x683.png

これでコマンドプロンプトの起動は完了です。

次は、必要なライブラリ(ブラウザでいう拡張機能的なもの)をインストールしていきます‼

必要なライブラリをインストールする

必要なライブラリをインストールしていきます。

先ほど開いたコマンドプロンプトに下のように「pip install pyautogui」と入力してenterを押してください。

インストールに成功したら、「Successfully Installed」と表示されます。

同じようにして、「pip install pillow」、 「pip install pyocr」と入力して、enterを押してそれらのライブラリをインストールしてください。

ここで、さっきみたいに「Successfully Installed」と出ればいいんですが、時々エラーが出てくることもあります。

そんな時は、ぜひ下の記事を参考にしてください。多分エラーは解消されると思います。

これで、必要なライブラリのインストールは完了です‼

画面上の場所を取得

私が寿司打で作ったプログラムは、「特定の場所でスクリーンショットを取って、それを文字に起こして入力する」というものなので、その「場所」を指定する必要があります。

なので、まずは、メモ帳を開いて下のコードをコピペしてください。

import pyautogui
try:
    while True:
        x,y = pyautogui.position()
        position = 'X:'+str(x)+'  '+ 'Y: '+str(y)
        print(position)
        pyautogui.sleep(1)
except KeyboardInterrupt:
    print('\n終了')

↓こんな感じ

そして、ctrlと、shiftと、sを同時に押してください。(ctrl+shift+s)

すると、「名前を付けて保存」が出てくると思うので、下のように「test.py」と入力して保存してください。

つぎに、先ほど保存したフォルダーの場所に行ってください。

そして、下のようにパスをコピーします。

そして、先ほどと同様にコマンドプロンプトを開き、下のように「cd “さっきコピーしたやつ”」と入力してenterを押してください。

そして、下のように「python test.py」と入力して、enterを押してください。すると、下のように「X,Y」というのが出てくると思います。

これは、現在のカーソルの位置を表していて、これを使って、場所を数値化することができます。

次は、その場所を特定する方法を解説していきます‼

画像認識する場所の指定

まず、下のリンクを開いてください‼

開くと下のように表示されると思うので、「寿司打をPlay」か、「静かにPlay」を押して、スタートの画面に行ってください。

そして、いったん寿司打をスタートします。

それと同時に先ほどのコマンドプロンプトも開いてください。

上のような状態を作れれば、あとはカーソルを動かすだけで、場所がわかります。

下の赤枠で囲ったところの場所を取得したいので、左上と右下の座標を取得してください。

この場合では、(705,649)から(1169,684)です。(これを絶対に覚えておいてください。)

これで画面上の場所を取得する方法についての説明は完了です‼

文字の読み取りに必要なアプリをインストール

画像を抽出できても、文字を読み取れないと全く意味がないので、文字を読み取るためのtesseractというアプリみたいなやつをインストールします。

Tesseract は、さまざまなオペレーティングシステム上で動作する光学式文字認識エンジン。名称のTesseractとは四次元超立方体の意である。Apache Licenseの下でリリースされたフリーソフトウェアである。文字認識を行うライブラリと、それを用いたコマンドラインインターフェイスを持つ。

引用元:Tesseract (ソフトウェア) – Wikipedia

上にもあるようにtesseractはgoogleが開発したものなので、ほかの文字読み取るやつよりも断然性能が高いです。

これのインストール方法について解説します。

まず、下のtesseractのダウンロードページに行ってください。

すると、下のように、上のページの、自分のバージョンに合うほうをダウンロードしてください。(少し下にスクロールしたら下画面が出てきます。)

そして、ダウンロードしたファイルを実行して下さい。

「この不明な発行元からのアプリがデバイスに変更を加えることを許可しますか」と出てきたら「はい」通していただいて大丈夫です。

そして、先ほどの画面で「はい」を押したら、下のような画面が出てくると思います。

「Next」を押してください。

「I agree」を押します。

↑どっちでもいいです。「複数ユーザー持っている方は持っているユーザー全員にインストールするか今使っているユーザーだけにインストールするか」ということを聞かれているだけなので、大体の人は関係ないと思います。

ここがポイントです。

まず、下の図の赤色で丸のところを押してください。

そして、出てくるチェックボックスのうち、下のものにチェックを入れてください。

↓addictional script data(download)にチェックを入れる。

↓addictional language data(download)にチェックを入れる。

そして、チェックを入れたら、Nextを押してください。

Next,installと押していきます。

installを押したら、下のようにインストールが開始されます。

終わったら「Next」をクリックしてください。

これで、インストールは完了です。

次は、実際にプログラムを実行してみましょう‼‼

Step3:プログラムを実行してみよう

まず、下の私が作ったプログラムをメモ帳にコピペしてください。

import os
from PIL import Image
import pyocr
import pyautogui
#インストールしたTesseract-OCRのパスを環境変数「PATH」へ追記する。
#path='C:\\Users\\“User名”\\AppData\\Local\\Programs\\Tesseract-OCR'
#os.environ['PATH'] = os.environ['PATH'] + path
pyocr.tesseract.TESSERACT_CMD = r'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'
#pyocrへ利用するOCRエンジンをTesseractに指定する。
tools = pyocr.get_available_tools()
tool = tools[0]

pyautogui.sleep(10)

#1000にしているけどある程度大きかったらOK
for i in range(1000): 
    c='picture'+str(i)+'.jpg'
    #↓(705,649)から(1169,684)の場合を例にしています。
    photo = pyautogui.screenshot(region = (705,649,464,35))#先ほど取得した位置を入力(左上のX、左上のY、Xの幅、Yの幅)
    photo.save(c)

    img = Image.open(c)

    d='complete_picture'+str(i)+'.jpg'

    img=img.convert('RGB')
    size=img.size
    img2=Image.new('RGB',size)
     
    border=110
     
    for x in range(size[0]):
        for y in range(size[1]):
            r,g,b=img.getpixel((x,y))
            if r < border or g < border or b < border:
                r = 0
                g = 10
                b = 0
            img2.putpixel((x,y),(r,g,b))

    img2.save(d)

    im = Image.open(d)

    def add_margin(pil_img, top, right, bottom, left, color):
        width, height = pil_img.size
        new_width = width + right + left
        new_height = height + top + bottom
        result = Image.new(pil_img.mode, (new_width, new_height), color)
        result.paste(pil_img, (left, top))
        return result

    new_resize='new_resize'+str(i)+'.jpg'

    im_new = add_margin(im, 35, 35, 50, 50, (0, 0, 0))
    im_new.save(new_resize, quality=95)

    img3= Image.open(new_resize)

    builder = pyocr.builders.TextBuilder(tesseract_layout=3)
    text = tool.image_to_string(img3,lang="eng",builder=builder)
    pyautogui.typewrite(text)
    os.remove(c)


↓メモ帳にコピペ

そして、先ほどと同様の要領で、「寿司打チート.py」という名前で保存します。

そして、先ほどと同様に実行するだけです。

実行したら、速攻でスタートしてください。(10秒以内)

あとはこれで待つだけです。

後は勝手に、下の動画のように自動で全部打ってくれます。

これで寿司打チート方法については完了です‼

Techacademyで副業したら最低でも月10万は稼げる‼

皆さんは「副業してみたいな」と思ったことありませんか?

最近はコロナや世界情勢の悪化で失業率も年々上がっており,「安定して稼げる副業」が今の時代結構求められています。

でも、副業で月10万稼ぐだけでも相当難しいです。

アフィリエイトやYoutubeは月10万円どころか収益化すら難しいと言われており、投資や販売などは、お金は動きやすいですが、リスクも結構高く、本当に安定して稼ごうと思ったらかなりの勉強やセンスが必要になります。

そんな時にオススメしたいのが、Techacademyで始める副業プログラミングです‼

実際、私もプログラミングの副業に興味があって、月4000円と安かったので3か月Techacademyの初めての副業コースを受講してみました。

最初は「そんなうまい話あるわけない」と思っていたんですが、受講してみると、わからないことがあったらエンジニアの方が直接優しく教えてくださったり受講終わった後でも簡単で高額な案件を紹介してくれたりと、サポートは非常に充実していました‼

今となれば、受講後でもTechacademy自分に合った最適な案件を教えてくれるため、Techacademyのおかげで本当に空いた時間に2,3日で2万円ぐらいの案件を終わらせられて,効率的に稼げてます‼

副業で月10万ぐらいでも稼げたら、今よりもっといい食事ができたり、ほしいと思ったものが気軽に買えるようになったり、貯金の心配が減ったりと、いいこと尽くしです‼

ぜひ皆さんもTechacademyの初めての副業コースで副業プログラミングしてみましょう‼

\無料体験からでも始められる‼/

完全オンライン完結,今日からスタート‼

もしうまくできなかったら?

多分これでうまくいくはずなのですが、もしうまくできなかったら、原因として考えられるのは「取得する範囲を間違えている」ということです。

test.pyと同じディレクトリ―を開くと、「new_resize~.jpg」というファイルを開いてください。

ちゃんとできていたら、下のようになります。

でも、うまく取得できていなかったら、下のようになっていることが多いです。

あと、取得する範囲はできるだけ広いほうがいいです。ただ、広すぎると余分なところまで含んでしまうので、そこら辺は気を付けましょう。

多分、これでうまくいくと思います。

※私のプログラムは完璧に制度が100%(多分90%~95%ぐらいだと思います。)というわけではないので、多少間違えても多めに見てください。

興味がある方向け:プログラムの解説

一応興味がある方のために、プログラムの要所を解説していきます。

まず、test.pyについて解説します。

import pyautogui
try:
    while True:
        x,y = pyautogui.position()
        position = 'X:'+str(x)+'  '+ 'Y: '+str(y)
        print(position)
        pyautogui.sleep(1)
except KeyboardInterrupt:
    print('\n終了')

これは、pyautoguiというライブラリを使って場所を取得しています。

pyautoguuiの関数については、下の記事で詳しく解説しているので、ぜひ興味のある方は下の記事を読んでみてください。

次は、寿司打でチートをするときのプログラムです。

import os
from PIL import Image
import pyocr
import pyautogui
#インストールしたTesseract-OCRのパスを環境変数「PATH」へ追記する。
#path='C:\\Users\\"User名"\\AppData\\Local\\Programs\\Tesseract-OCR'
#os.environ['PATH'] = os.environ['PATH'] + path
pyocr.tesseract.TESSERACT_CMD = r'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'
#pyocrへ利用するOCRエンジンをTesseractに指定する。
tools = pyocr.get_available_tools()
tool = tools[0]

pyautogui.sleep(10)

#1000にしているけどある程度大きかったらOK
for i in range(1000): 
    c='picture'+str(i)+'.jpg'
    photo = pyautogui.screenshot(region = (705,649,464,35))#先ほど取得した位置を入力(左上のX、左上のY、Xの幅、Yの幅)
    photo.save(c)

    img = Image.open(c)

    d='complete_picture'+str(i)+'.jpg'

    img=img.convert('RGB')
    size=img.size
    img2=Image.new('RGB',size)
     
    border=110
     
    for x in range(size[0]):
        for y in range(size[1]):
            r,g,b=img.getpixel((x,y))
            if r < border or g < border or b < border:
                r = 0
                g = 10
                b = 0
            img2.putpixel((x,y),(r,g,b))

    img2.save(d)

    im = Image.open(d)

    def add_margin(pil_img, top, right, bottom, left, color):
        width, height = pil_img.size
        new_width = width + right + left
        new_height = height + top + bottom
        result = Image.new(pil_img.mode, (new_width, new_height), color)
        result.paste(pil_img, (left, top))
        return result

    new_resize='new_resize'+str(i)+'.jpg'

    im_new = add_margin(im, 35, 35, 50, 50, (0, 0, 0))
    im_new.save(new_resize, quality=95)

    img3= Image.open(new_resize)

    builder = pyocr.builders.TextBuilder(tesseract_layout=3)
    text = tool.image_to_string(img3,lang="eng",builder=builder)
    pyautogui.typewrite(text)
    os.remove(c)


まず、pyautoguiで、指定した場所のスクリーンショットを取り、その写真を白黒写真にしています。

そして、その写真の周りに空白を付けます。←これが画像認識の精度を上げる工夫!

上のようにして加工した写真から、tesseractで文字を読み取り、それをpyautoguiを使って入力します。

こんな風にして寿司打でチートをするプログラムを作っています。

おわりに

いかがでしたか。こんな感じで画像認識を使うだけで、“いろんなこと”に応用できます。(これは悪い例。世の中のチートは結構これを使っていることが多いと思います。)

ふざけたプログラムですが、画像の認識精度を上げるための仕組みがいろいろ組み込まれているので、ぜひ見ていただきたいです。

ほかにも面白い記事がたくさんありますので、そちらの方も見ていただければ光栄です。

それでは次の記事で‼

プロフィール

この記事を書いた人

このブログの情報が少しでも役に立てれば嬉しいです。