Minecraftのサーバープレイ勢 本気の放置


Minecraftのサーバープレイ勢 本気の放置

PyAutoGuiとPyDirectInputの違いを見に来た人向け

キッカケ

これは本当に出来心です。マイクラで「かまど」とかを長時間動かしといておきたくても、サーバーではすぐにキックされてしまって、本来はこれでいいんですけど、どうしても少しの間だけ席を外さないといけなかったので、その瞬間を埋めるためだけに、今回のプログラムを作りました。

使用した環境

Python3.9.7

VSCode

Module

PyAutoGui
Pydirectinput(比較用)
time(標準モジュール)

実行するまで

もし同じことをする人がいた時のために一応

まずはインストール

pip install pyautogui

もしくは

pip install pydirectinput

実際に使用したコード

今回の実行の際に利用したコードは下記のものです。

import pyautogui
import time
while True:
    try:
        times=int(input("入力したい回数を指定してください。"))
    except ValueError as e:
        print(f"{e}")
        continue
    break

tmp=input(f"{times}回で約{round((times*120)/60,2)}分の放置が可能です。実行しますか?{y/n}")
if tmp=="y":
    
    for i in range(times):
        time.sleep(120)
        pyautogui.keyDown("w")
        time.sleep(1)
        pyautogui.keyUp("w")
        print(f"{i+1}回目")
else:
    print("プログラムを終了します")

多分これ見てる人にプログラムの解説はいらないので割愛します。

備考

いろいろ試してみたところ放置してるか放置してないかの判定は「1マスでも動いているか否か」というポイントであると思います。
(ほかにも視点移動やジャンプなど試しましたが、一番プログラムとして実装しやすいのはこれだった)

総評

実際に秒数などいろいろ調整しながらの実装でしたが、本来の用途は達成できていると考えます。
別にEXE化する必要もなしに、ターミナルからpython経由で起動させてればいいので今回の目的はこれで達成されたとします。

PyAutoGuiとPyDirectInputの違いを見に来た人向け

基本的に操作感、モジュールの利用方法は一緒だったと思います。私もネットでの記事が少なくわかりにくかったためリファレンスなどを読んでみましたがやっぱり同じような方法での利用となっていました。
当方の環境では、どちらかでないといけないということはなかったことを書き留めておきます。

参考にさせていただいた記事(Qiita内の記事です)

PyAutoGuiで繰り返し作業をPythonにやらせよう

暇つぶしにマインクラフトの自動マイニングツールの開発をしたという話