コマンド実行時のパラメータが正しいかを確認する方法 マイクラ&Python

パラメータの入力検証と任意のメッセージでエラーを出力。マインクラフト&python マインクラフト
マインクラフト
Pocket

Pythonプログラムをマインクラフトのチャット入力エリアから実行する際に、もしパラメータの入力不足が発生した場合にチャットメッセージで親切なエラーメッセージを表示するプログラムを解説します。
エラー処理やif文による動きの切り分けについては前回の記事で紹介していますので、まだ見ていない方はこちらからご覧ください。

パラメータの1つ1つが正しいかを確認

今回のプログラムは、前回同様に3個のパラメータを指定してコマンドを実行します。
そして、3個それぞれのパラメータに指定モレがないか、そしてちゃんと数字で指定されているかを検査し、もしエラーがあった場合は何個めのパラメータに問題があるのかをチャットメッセージでお知らせするPythonプログラムを作ってゆきます。

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

わざと正しく動かないパラメータを指定して実行した結果、このようなチャットメッセージが出力されるようになりました。

/py road4 hello 3 1

パラメータの入力検証と任意のメッセージでエラーを出力。マインクラフト&python

def を使い、事前に機能を用意する

今回のプログラムで注目してほしい点は、まず最初に「機能」を用意しているということ。
機能とは、ある決められた処理や計算をひとまとまりにして置いておき、いつでも好きなタイミングでその「機能」を何回も呼び出して使うことができるものです。

今回用意する機能は、「ある値が数字データなのか、それ以外なのか」を検査するもので、パラメータに指定された値が正しいものかを判断するために利用します。

上のコードを日本語に翻訳してみると、

  1. 「is_integer」という名前の機能を準備します
  2. チャットメッセージで “is_integer機能で、値「(この機能に渡された値)」の検査をします” と出力します。
  3. ここから試します
  4. 与えられた値を int という命令を使って整数(数字データ)に変換してみます
  5. もし問題なく変換できたら整数(数字データ)なので、機能の呼び出し元に True(成功しました!!)と結果を返します
  6. もし整数への変換が失敗したらエラーが発生するので、機能の呼び出し元に False(ダメでした…)と結果を返します
  7. 機能を終了します

といった内容になり、機能 is_integer に何かしらの値を1個与えることでその値が数字であるかを検査し、その結果を呼び出し元に返します。
今までのPythonプログラムでは、プログラムが上から下へ順番に実行されるものでしたが、「def」というプログラムからはじまる機能を使うことで、実行される場所が突然違う場所に移動するようになったので驚きますよね。

事前に用意した def の機能を呼び出し、結果を得る

そして呼び出し元では以下のコードが書かれていて、if文を使って is_integer の結果がどうだったかを確認し、動作分けをおこなっています。

もし機能「is_integer」の結果が「False(ダメでした…)」だった場合にだけif文の中に入り、そこでエラーを発生させていますよね。
エラーを発生させるときに、どのようなエラー内容なのかをカッコ内に書いている点にも注目する必要があります。

のプログラムが実行されると、エラー処理「except」の部分に括弧内の文章が渡されてチャットメッセージ出力されています。

その他のPythonプログラムの解説については、以前の記事をたどって参考にしてみてくださいね。

その他の関数の例

def で事前に用意しておく機能のことを、プログラマは「関数」と呼んでいます。
今までのプログラムで出てきた以下のPythonプログラムも、事前に準備された機能を呼び出している「関数」です。

マインクラフト用に用意されている、チャットメッセージを出力する関数
mc.postToChat()

マインクラフト用に用意されている、プレーヤの位置を取得する関数
mc.player.getPos()

Pythonプログラムで最初から用意されている、値を数字(整数)データに変換する関数
int()

Pythonプログラムで最初から用意されている、値を文字データに変換する関数
str()

sys という名前の道具箱の中に入っている exit() という名前の機能で、プログラムを終了する関数
sys.exit()

など。
Python ではじめから用意されている機能もあれば、
from mine import *
import sys
などのプログラムで、外部に用意してある道具箱を手元に呼び寄せ、道具箱の中に入っている機能を手軽に使うという方法もあります。

この道具箱は、ほかにも
import datetime
import time
import random
などがあるので、今後の記事で使い方を少しずつ紹介してゆきます。

Pocket

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