コマンド実行時のパラメータエラーの処理とifによる条件分岐の方法 マイクラ&Python

自分で決めたエラーメッセージを出す方法。マイクラ&python マインクラフト
マインクラフト
Pocket

マインクラフトのPythonプログラムで、もしコマンドを実行したときにエラーが発生したら、システムが自動的にメッセージを吐き出します。
こんな感じで。

[ERR] TraceBack (most recent call last):
[ERR]   File “road2.py”, line 20, in <module>
[ERR]     length_number = params[1]
[ERR] IndexError: list index out of range


でもシステムのメッセージは英語や呪文みたいに難しい内容なので、自分で決めたメッセージを吐き出したいですよね。
そんな時の基本的な方法を前回の記事で紹介しました。

今回はこの方法をちゃんと使えるように、道を自動的に建設するプログラムに組み込んでゆきましょう。

自分で決めたエラーメッセージを出す方法。マイクラ&python
以前紹介したPythonプログラムをベースに、改造をしてゆきます。
改造のベースとなるプログラムはこちらですので、あらかじめこちらのプログラムを理解しておくことをオススメします。

さっそく今回のPythonプログラムを見てみましょう。
ご自身の環境で動かしてみたい場合は、以下の場所に保存してください。
ファイルパス(Macの場合)
/Users/ユーザ名/Library/Application Support/minecraft/mcpipy/road3.py

今回はじめて出てくる命令として「if」というものがあります。
これは英語で「もしも」という意味の単語で、

  • もしも信号が青色だった場合は進む
  • もしも信号が赤色だった場合は止まる

といったように、条件によってプログラムの動きを変えるときに使用する命令です。

上記のPythonプログラムから簡単な例を見る場合は、以下の部分が良いでしょう。

このプログラムを日本語に翻訳すると、

もし「1の数字」と「block_number」に入っている値が同じ場合は、
チャットメッセージに「ブロックの種類は石です」と出力します。

もし「2の数字」と「block_number」に入っている値が同じ場合は、
チャットメッセージに「ブロックの種類は草土です」と出力します。

といったように、「block_number」の中に入っている値によってプログラムの動きを変えて、出力するメッセージを変更しているのです。
もう少し難しい使い方としては、

の部分ですね。
「not」は否定を意味していますので、プログラム「len(params)」の値が「4じゃない場合」に限り、エラー処理に移動するという内容です。
「len」というプログラムの意味を詳しく知りたい場合は、Google等で python len などのキーワードで検索すると、沢山の解説ページが見つかると思います。
「if」についても同じくGoogleで python if で検索すると使い方を親切に紹介したページが見つかると思いますので、Pythonプログラムで分からないことがあれば積極的にGoogleで調べてみましょう!

「if」を使ったプログラムは今後たくさん出てきますので、今の段階で理解しておくと良いでしょう。

そして今回もっとも注目すべきプログラムの部分は以下です。

このPythonプログラムでは、前回の記事で紹介した例外処理(エラー処理)がおこなわれていて、以下のような流れになっています。

  1. 今からプログラムの実行を試します
  2. もしパラメータの数が4個ではなかった場合
  3. エラーを発生させて、except に文字「このコマンドは3個のパラメータが必要です」を渡します
  4. もしエラーが発生した場合は
  5. エラー発生元から値を「e」という物で受け取って
  6. チャットメッセージで「e」の値を出力して
  7. プログラムを停止します

※もしパラメータの数が4個だった場合は、3番以降の例外処理は実行されず、最後までプログラムが実行されます。

パラメータの確認が正常終了した場合のメッセージ。マイクラ&python

例外処理とif文を上手に使うことで、エラー処理や動作の分岐がより便利におこなえるようになります。
繰り返しプログラミングの練習をすることで自然と身についてくると思いますので、今の段階では何となく覚えておくと良いでしょう。

次回はもう少し複雑な、でも親切な設計のエラー処理プログラムを紹介します。

Pocket

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