Raspberry Pi 2 は、30 ポンド未満の価格を考えると、驚くほど高性能のデバイスです。これには、仮想世界で実行するコードを記述できる API とともに、Minecraft のバージョンがプリインストールされています。これは、習得が簡単な Python で行います。 Pi、Python、Minecraft の組み合わせは、プログラミングの可能性を探る絶好の機会を提供します。また、バーチャル ランドスケープ上に家が建てられるのを見るスリルは、子供たちだけのものではありません。
Android でテキスト メッセージを完全に削除する方法
Minecraft でのスクリプト作成
Minecraft はオープン サンドボックス ゲームであり、従うべき筋書きがありません。プレイヤーは自由にブロックを使用してあらゆる種類の構造を構築できるため、仮想レゴと呼ばれることもあります。 Raspberry Pi にバンドルされているバージョンには、教育的な役割に適した機能セットが制限されているため、たとえば、ゾンビに追われることを心配する必要はありません。この世界と対話するには、特別なセットアップは必要ありません。Raspbian OS の最近のビルドとプログラミング環境だけが必要です。私は Geany を選択します。これは、LXTerminal を開いて次のように入力することでインストールできます。
sudo apt-get install geany
プレイヤーの目の前に家を建てるためのスクリプトを作成することから始めましょう.また、さまざまな構成可能な設定を組み込んで、プレーヤーがさまざまな寸法や素材を試すことができるようにします。これにより、プログラムがモジュール化されるため、より洗練された井戸を作成するための基礎として使用できます。
コードを機能させるには、それを Geany にロードしてから Minecraft を起動し、新しい世界を作成します。 Tab キーを押して Minecraft ウィンドウからカーソルを離し、Geany の歯車アイコンをクリックして (または F5 キーを押して) スクリプトを起動します。家が魔法のように組み立てられるのが見えるはずです。そうでない場合は、振り返ってみてください - 後ろにいるかもしれません!実際のスクリプトを見ることができます ここに 。では、スクリプトはどのように機能しますか?まず、Minecraft へのリンクを開きます。
mcpi.minecraft を minecraft としてインポートし、時間 mc=minecraft.Minecraft.create()
Python では、コードがブロックに分割される方法であるため、インデントに注意を払うことが重要です。この場合、両方の行が左側の余白と同じ高さになっています。1 行目は Minecraft と Time ライブラリをインポートし、2 行目は全体で使用できる Minecraft オブジェクトを作成します。次の 25 行は、使用するブロックにいくつかの変数を設定して、ブロック ID (この場合は 5) ではなく、たとえばwood_planks として参照できるようにします。次に、これらのブロックのどれを壁、どのブロックを屋根などに使用するかを示します。たとえば、レンガの壁を丸石に交換することで、家の構造を簡単に完全に変えることができます。最後に、希望する住居の幅、長さ、高さを設定します。
ここで、Minecraft 関数 mc.player.getTilePos() を呼び出して、ランドスケープ内のプレーヤーを見つけます。戻ってきた値を使用して、住居の最初の角がどこにあるかを記述するために、左と下の 2 つの変数を作成します。 .
その後、スクリプトの構造は、手動で家を建てる Minecraft のプロセスと一致します。プレイヤーが山の中に家を建てることを選択した場合、リビング エリアが固い石にならないように、スペースを空けることから始めます。これを行うコード ブロック (Python の関数) は次のとおりです。
def clear_house(核):
核==真の場合:
ブラストゾーン=20
そうしないと:
ブラストゾーン=0
mc.setBlocks(left-blast_zone,player_
地面、下+爆風ゾーン、左+幅+爆風_
ゾーン、player_ground+height+blast_
zone+10,bottom-length-blast_zone,air_block)
clear_house を呼び出すときは、パラメーター Nuclear を渡します。値は True または False です。 True で呼び出してターゲット エリアの周囲のより大きなボリュームをクリアするか、False で呼び出してクリアランスを家の内部寸法に限定することができます。 Minecraft では、mc.setBlocks 関数を使用してブロックの立方体を作成します。これには、反対側の角の 3 次元の座標と、使用したいブロック タイプを渡します。この例では、スペースを空けるため、空気を使用します。
スペースを空けたら、いよいよ施工です。これらの各建設段階は、独自の機能で行われます。スクリプトの最後に、main() という関数が表示されます。この関数は、構築の各フェーズを順番に呼び出すことでプログラム フローを制御します。関数に適切な名前を付け、main() から呼び出すことで、プログラムが何をしているのかを簡単に理解できます。
デフメイン():
clear_house(False)
start_pos=[左、下、プレイヤー_
接地]
build_floor(start_pos)
コース=build_walls(start_pos)
add_door(door_position)
time.sleep(遅延*10)
build_roof(start_pos, もちろん)
main() で呼び出される次の関数は、床を構築します – これは mc を使用します。 setBlocks を再度使用して (芸術的効果のために) 基礎を切り出し、次に 1 ブロックの深さの床タイルの立方体を追加して、家に堅固な床を作成します。
Xbox One なしで PC で Xbox One ゲームをプレイする
壁の構築
build_walls 関数は、プログラムの中心です。家のシェルを作成する最も効率的な方法は、レンガの固い立方体をたたき下ろしてから、clear_house を使用して内部を切り出すことです。ただし、家がそれ自体で建設されているように見せたいので、ブロックを 1 つずつ個別に配置する必要があります。壁を構築するコードの簡略化されたバージョンを次に示します。
def build_course(start_pos, direction,
コース):
ブロック=1
current_horiz=start_pos[0]
current_vert=start_pos[1]
方向==上または
方向==下:
number_of_blocks=長さ
そうしないと:
number_of_blocks=幅
ながらブロック mc.setBlock(current_horiz,player_
グラウンド+コース、カレントバート、ウォールブロック)
方向==上の場合:
current_vert-=1
エリフ方向==下:
current_vert+=1
エリフ方向==右:
current_horiz+=1
そうしないと:
current_horiz-=1
blocks=blocks+1 # 次のブロックに移動
time.sleep(遅延)
開始位置を保存することから始めます - これは、前のブロックのコースから敷かれた最後のブロックの位置になります。次に、建物の長さに沿って移動するか、その幅に沿って移動するかに応じて、配置するブロックの数を指定します。
構築フェーズは、while ブロック内に含まれます。これは、すべてのブロックを配置するまで実行され続けます。 mc.setBlock は、示されている座標に 1 つのブロックを配置し、配置する方向に応じてそれらの座標の 1 つをインクリメントします。その効果は、コーナーを曲がる前に壁に沿ってブロックが置かれ、コースが完了するまで長方形で続きます。
Discordで自分を非表示にする方法
コードの最終バージョンはもう少し複雑で、各壁に窓を追加します。窓は、壁の長さの半分で中央に配置されるように動的にサイズ変更されます。また、ドアの位置も記録します。壁が構築されると追加されます。コースは、最終的な高さに達するまで、ブロックの各コースに対して build_course 関数を繰り返す build_walls 関数から制御されます。
海や空中に家を建ててみることもできます。これを行うには、スペースバーを 2 回押して飛行し、もう一度押して体を起こしてからスクリプトを実行します。 wall_block 変数とルーフブロック変数を変更して、金または実際には溶岩で壁または屋根を作成するとどうなるかを確認します。完全なリストを参照して、独自のブロックを追加できます ここに 、関連する変数をスクリプトに追加します。高さ変数が十分に大きな値に設定されている場合、より困難な変更には、構造に複数の階を追加することが含まれる場合があります。たとえば、砲塔を追加する方法を理解すれば、Minecraft の城を作ることができます。
これらの微調整は些細なことに聞こえるかもしれませんが、私は 20 年以上プロとしてプログラミングをしてきましたが、コードのスニペットが意図したとおりに機能するときは、今でも興奮しています。プログラミングをしたことがない場合は、ぜひ試してみてください。また、家に Minecraft のファンがいる場合は、コードを解き放ち、どこに行くのかを確認することをお勧めします。 Minecraft Pi のリソースへのリンクは、次の場所にあります。 kevpartner.co.uk/プログラミング 。