Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the all-in-one-seo-pack domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/users/1/cheap.jp-yasuda/web/yasuda.cc/www/wp/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the crayon-syntax-highlighter domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/users/1/cheap.jp-yasuda/web/yasuda.cc/www/wp/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-popular-posts domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/users/1/cheap.jp-yasuda/web/yasuda.cc/www/wp/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the jetpack domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/users/1/cheap.jp-yasuda/web/yasuda.cc/www/wp/wp-includes/functions.php on line 6114

Notice: 関数 _load_textdomain_just_in_time が誤って呼び出されました。cocoon ドメインの翻訳の読み込みが早すぎました。これは通常、プラグインまたはテーマの一部のコードが早すぎるタイミングで実行されていることを示しています。翻訳は init アクション以降で読み込む必要があります。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 6.7.0 で追加されました) in /home/users/1/cheap.jp-yasuda/web/yasuda.cc/www/wp/wp-includes/functions.php on line 6114
マインクラフトをプログラミング言語のPythonで操作する記事まとめ | ふつうの人のふつうの沖縄

マインクラフトをプログラミング言語のPythonで操作する記事まとめ

マイクラで私が使用しているプレーヤのスキン。西原町のゆるキャラさわりんではありません。 マインクラフト
マインクラフト
Pocket

マインクラフトをPythonで操作する

最近はプログラミング言語のPythonでマイクラを操作する遊びにハマっています。
プレーヤを自動で動かしたり、自動でブロックを積んで建築したりと色々楽しんでいるのですが、これがプログラマとしての本業に生かされていないのが悩みどころ…。

メンターの1人として参加しているコーダー道場西原でもいつかはマイクラのPythonプログラムをやってみたいなと考えていますが、はたして子供たちはPythonに興味を持ってくれるだろうか…。

2019年12月からマイクラ + Python の学習をはじめてから1ヶ月以内にブログ記事を10本書く目標が達成できたので、今までのまとめをしてみます。

最も基本となるチャットメッセージの出力と位置情報の取得

マイクラで自動建築をおこなう場合、ワールド内のどの座標に対してブロックを設置するかが肝心なのですが、建築の一番最初の作業として、プレーヤが今いる座標を取得することろからはじまります。また座標の取得プログラムを少し応用することで、プレーヤを任意の場所にテレポートさせることも可能なので、その方法も紹介しています。
そしてプログラムの進行状況はチャットエリアに表示させたいので、チャットメッセージの出力方法についても触れいています。

建築の基本となるブロックの設置方法

マインクラフトでは様々な種類のブロックが用意されていますが、どの種類のブロックを、どの座標に設置するか。また1個ずつ設置するのか、または複数個を一気に設置するのかなどの方法を紹介しています。簡単な建築ができるようになりますよ。
溶岩や水などのブロックも好きな場所に設置できちゃいます。

でこぼこの場所を平らに整地する方法

マインクラフトの世界は現実世界と同じで山や海、洞窟などがあり、建築のために平らな空き地を作る必要があります。
しかし手作業で山や地面を削るとなると大変な作業になりますので、自作のコマンドを1回実行するだけで空き地が作られる方法を紹介しています。

繰り返し命令の for を使った自動建築の方法

繰り返し処理の for を使った建築の方法を紹介しています。
階段や道路などの建造物を自動生成する場合は、ブロックを1個ずつ設置するプログラムを何度も書くより、繰り返し処理を使ったほうが断然楽になりますからね。

コマンド実行時にパラメータを渡す方法【基本】

プログラムは基本的に決められた命令しか実行できませんが、実行時にパラメータを与え、プログラムでパラメータを受け取ることで、複雑性のあるプログラムを実行することができます。
この記事では、パラメータで指定した長さの道路を自動建築するPythonプログラムを紹介しています。

コマンド実行時にパラメータを渡す方法【応用】

コマンドでプログラムを実行する際、2個以上のパラメータを与えたい場合だってありますよね。そんな場合にそなえ、コマンドでのパラメータの指定方法と、プログラムでのパラメータの受け取り方を紹介しています。
道路の自動建築のとき、道路の長さ、道路の幅、ブロックの種類がコマンド実行時に指定できるようになりますよ。

エラー発生時に、自分で決めた命令を実行させる方法【基本】

マイクラのPythonプログラムは、Pythonの言語仕様に沿った記述をしないとエラーが発生し、システムが自動で吐き出すエラーメッセージがチャットエリアに出力されます。
もしエラーが発生したとき、システムメッセージではなく自分が決めたメッセージを出す方法と、プログラムを途中で強制終了する方法を紹介しています。

エラー発生時に、自分で決めた命令を実行させる方法【応用1】

コマンド実行時にパラメータの入力ミスや入力漏れでエラーが発生した際、何が原因でエラーが発生したのかを検証し、不備の理由をチャットメッセージで出力する方法を紹介しています。
このプログラムは実行時に3個のパラメータが必要なのに、コマンドを実行したときにパラメータが多かったり少なかったりした時に任意のエラーメッセージを出力します。

エラー発生時に、自分で決めた命令を実行させる方法【応用2】

コマンド実行時に3個のパラメータをそれぞれ数字で指定する必要があるのに、数字ではなかった場合、またはパラメータの数が3個ではなかった場合にエラーメッセージを出力するプログラムです。
パラメータのデータ型検証には簡単な自作関数を使っていますので、その自作関数の作り方と使い方を解説しています。

処理を一時停止しながらコマ送りのように実行する方法

自動建築のプログラムを実行すると一瞬で建造物が出来上がります。しかしコマ送りで建築を進めるとその過程をじっくり見ることができますので、プログラムの1行1行を意識しながら進捗状況を確認することができます。
好きな秒数だけプログラムの処理を一時停止しふたたび処理が再開されるプログラムを解説しています。

なぜ教材っぽく書いているの?

人に何かを教えるためには、そのモノを自身がしっかり理解していないとできません。
私はこれまで PHP や MySQL などを100名ちかくの人に教えてきましたが、生徒からの質問にうまく答えられず冷や汗をかいた事は何度もあります。
頭では何となく分かっていても、とっさに言葉で表現できない事があるんだなーと痛感しました。

今回まとめた記事においても、誰かにプログラムを教えるっぽい感じで記事を書くことで私自身のPythonへの理解を深めてゆくことを目的としています。
あわよくばプログラミング教育の学習教材として活用できればとも考えています(笑)

実行環境のつくり方

ご利用のPCにマイクラ環境を整える方法についてはまだ紹介していませんので、ざっくりと以下をご参考ください。
環境づくりの方法だけをまとめると、

  1. パソコンを用意(Windows, Macなど)
  2. Minecraft Java Edition をインストール
  3. Python3 の実行環境を整える (Anaconda等)
  4. Minecraft Forge 1.12.2 をインストール
  5. Raspberry Jam Mod をインストール

の5つの作業をおこなうと、マイクラをPythonで操作できるようになります。
いつかちゃんと記事にまとめないといけませんね。

おまけ

普段はフリーラスのプログラマとして活動しています。
PHP と JavaScript でフロントエンドとバックエンドの開発をしているのですが、まだ Python の実務経験がないのです(涙)
だれか Python 案件ください!DBできます!安すぎない単価でお願いします!

Pocket

タイトルとURLをコピーしました