プログラム実行時に複数の値を与える方法 マインクラフト&Python

マインクラフトのPythonプログラムで、3個のパラメータを指定した結果 マインクラフト
マインクラフト
Pocket

前回の記事では、道を建設するプログラムを実行する際に数字を与えて、道の長さを指定する方法を紹介しました。
プログラムに与える値のことを「パラメータ」と呼びましたよね。
今回はプログラムに対して複数のパラメータを与えて実行する方法を紹介します。

プログラムに複数の値を与える方法

前回は1個のパラメータを与える際に、実行するファイル名の後ろに数字を付与していました。
この方法を応用し、今回は3個の値を与えてコマンドを実行してみましょう。

/py road2 10 3 80

このコマンドの意味は、

  • プログラムファイル road2.py に対して、
  • 1個めのパラメータに「10」を与え、
  • 2個めのパラメータに「3」を与え、
  • 3個めのパラメータに「80」を与える

という意味を持ちます。
この3個のパラメータをPythonプログラムで受け取る場合は、以下のようなプログラムが必要になってきます。

プログラムで値を受け取る方法

前回の記事でも説明しましたが、コマンド実行時に与えられたパラメータをプログラムで受け取るには、以下の手続きが必要になります。

  1. パラメータを受け取る準備をする
  2. パラメータを受け取る
  3. 受け取ったパラメータを開いて整理する

パラメータを受け取る準備

パラメータを受け取るコード

受け取ったパラメータを開いて整理するコード

という事になりますね。
今回は3個のパラメータをコマンド実行時に与えていますので、
params[1]
params[2]
params[3]
の、3個の値がそれぞれ受け取られていることが分かります。

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

そして上記プログラムを実行するコマンドは、先にも紹介したこちらです。

/py road2 10 3 80

実行した結果、

マインクラフトのPythonプログラムで、3個のパラメータを指定した結果

  • 10ブロックぶんの道が
  • 3ブロックぶんの幅で
  • 80番のブロックで建設される

という内容になっています。
パラメータの数値を好きなものに変えて、どのように結果が変わってくるか試してみましょう!

エラーを確認する

もし3個のパラメータを指定せずに実行すると、コマンド実行時にPythonエラーが表示されます。
わざとエラーが発生するように動かしてみるのもプログラム設計には必要な事ですので、それぞれのコマンドを実行してエラー内容を確認してみましょう。

エラーが発生するコマンド

/py road2
/py road2 10
/py road2 10 3
/py road2 10 3 hello

など。
チャットエリアに[ERR]と表示され、Pythonプログラム上でどのような不都合が発生したのかがメッセージ出力されます。

マイクラ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

このエラーメッセージの意味を何となく日本語に翻訳してみると、

[エラー] 最後に実行したエラー部分を見てみよう:
[エラー]   ファイル “road2.py” の 20行め
[エラー]     length_number = params[1] とプログラムされている部分
[エラー] エラーの種類は「IndexError」で、上のコードで使っているparams[1] という値は範囲外で見つかりません

大体こんな内容です。
プログラム実行時にパラメータの1個めが指定されていないので「params[1]」が範囲外で見つかりませんよーという内容です。
このエラーメッセージをGoogle等で検索すると解決方法が見つかる場合があるので、今後もしエラーで困った場合は検索エンジンの活用も検討してください。

Pocket

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