この記事ではマインクラフトとコードコネクションを用いて、プログラミングによって条件分岐する方法を紹介します。マインクラフトでプログラミングができるようになる環境構築については過去記事を参考にしてください。
コードコネクションを開き、新しいプロジェクトを作ります。適当に名前を付けましょう。私はfizz_buzz
という名前にしました。
FizzBuzz問題
有名なプログラミングの問題でFizzBuzz問題というものがあります。この問題のもとになっているのは、1から順番に数字を言っていき、3の倍数のときはFizz、5の倍数のときはBuzz、15の倍数のときはFizzBuzzと言うゲームです。
条件分岐の例としてこのFizzBuzz問題を解きたいと思います。まず、ループを使って以下のようrun
コマンドを入力したときに、30までの数字を表示するようにします。
左の論理タブから条件判断を持ってきましょう。
この先の操作は複雑なので、先に完成形のブロックを見せます。
【論理】-【比べる】にある0=0
、【計算】にある0を1で割ったあまり
、【変数】にあるa
を持ってきます。a
と0を1で割ったあまり
を組み合わせ、aを3で割ったあまり
を作成します。それを0=0
の左辺に入れて、aを3で割ったあまり=0
とします。さらにそれをもし〇〇なら
のところにはめ込みます。中にメッセージFizzを送信する
ブロックを入れると、aが3の倍数のときにFizzと表示するようになります。
さらに、もし〇〇なら
の左下にある+ボタンを押し、でなければ
を表示させます。こちらにメッセージaを送信する
ブロックを入れておけば、3の倍数でないときにはその数字を表示します。
再生ボタンを押し、マインクラフトに戻り、run
コマンドを打ち込んで一度試してみましょう。3の倍数がFizzになっていることを確認してください。
続いて、またもし〇〇なら
の左下にある+ボタンを押し、でなければもし〇〇なら
を表示させます。aを3で割ったあまり=0
を複製して(右クリックから複製を選択)、aを5で割ったあまり=0
という条件を作ります。それをでなければもし〇〇なら
にはめ込みます。メッセージBuzzを送信する
というブロックを作って、その下に入れておきます。これで、5の倍数のときにはBuzzを表示するようになります。
ここまででプログラムは以下の画像のようになっています。
疲れてきましたが、15の倍数についても作ります。
ここで一度考えてみましょう。
15の倍数は3の倍数であり、5の倍数でもあります。条件として一番きついものになります。もし〇〇
やでなければもし〇〇
は上の条件から順番に判断していき、条件に合っている処理を行います。このような時、先に判定する条件を条件がきついものにしてやらなければなりません。
a=15
となっているときを考えてみましょう。条件は以下の順番とします。
- 3で割ったあまりかどうか判定
- 5で割ったあまりかどうか判定
- 15で割ったあまりかどうか判定
15は3で割ったあまりなので、1の条件に引っ掛かり、処理を行います(Fizzという)。これではいけないので、条件を以下の順番にします。
- 15で割ったあまりかどうか判定
- 3で割ったあまりかどうか判定
- 5で割ったあまりかどうか判定
これならば、a=15
が来たときは1の条件にはまり、例えばa=6
が来たときは2の条件に引っ掛かるのでよさそうです。
以上を受けて、実装を以下のように変更してみましょう。コードブロックはそのままドラッグアンドドロップで動かしたり、複製したりできます。
きちんとFizzBuzzになっています。
最高速を保って移動できる線路を作る
上記の例が複雑すぎましたが、これを使って最高速を維持できる線路を作ってみましょう。最高速を維持するには、28マスに一度加速レールを踏めばよいそうです。初速を付けるために最初だけ二つ加速レールを置き、後は28で割り切れるところに加速レールを置きます。それ以外のところにはレールを置きます。
レールを置くために、下(y座標-1のところ)に丸石をおきます。加速レールのところには加速レールがアクティブになるように、レッドストーンブロックを配置します。完成図およびプログラムは以下のようになります。