前回、重力が効いたようなジャンプの表現について記事にしました。
制作途中に「空中でスペースキーを押すと、そこからジャンプする」というバグ(プログラム上のミス)が発生しましたが、その時に
「これをうまく利用すれば『多段ジャンプ』ができるな。」と感じたので、今回実際に作ってみます。
1.無制限の多段ジャンプ(前回のバグ)
前回のプログラムを流用して、まずは、空中で何回でもジャンプできるようにします。
多段ジャンプを防いでいるプログラムは、下の条件です。

この条件のうち、「黒色に触れた」を削除すれば、無制限多段ジャンプができるようになります。

2.問題発生、再び。
ここで再び問題を発見。
スペースキーを押し続けると、ジャンプどころか、お空へ飛び立っていってしまいます。これではジャンプではなく、発射。
これを防ぐには、「スペースキーを押した状態」と「スペースキーを離した状態」を判別できる仕組みを作ればいいのでは?と考えました。
3.スペースキーを押しているか、離しているかの判別プログラム
a.変数「スペースキー」を作る。
スペースキーを押したときに「1」
スペースキーを離したときに「0」
となるような変数を作り、それを判別の仕組みに組み込みます。

b.変数「スペースキー」の初期値を0にする。
初めはスペースキーを押していない状態から始まりますので、「旗」を押したら、初期値は「0」にします。

c.スペースキーを押すプログラムのところで「スペースキー」を「1」にする。
今回はジャンプの時にスペースキーを押すので、ジャンプのプログラムの後ろに変数「スペースキーを1にする」を組み入れます。

d.スペースキーを離したかどうかの判定をするプログラムを入れる。
Scratchのブロックには「〇〇キーを離した時」というブロックはありません。
なので、否定のブロック「〇〇ではない」を使って、
『「スペースキーを押した」ではない』というブロックを作ります。そして、それを条件式に組み入れます。

4.「スペースキー押してるかどうか」判定のプログラムを、ジャンプのプログラムに組み込む
下のようになる。

で、試してみた結果がこちら↓
押し続けていても、落下していることが確認できる。
5.終わりに(後編へ続く)
この1回で多段ジャンプの記事は終える予定だったのに、思いのほか手間取ったので、今回はここまで。次回は、多段ジャンプの回数を制限するプログラムを作ります。これができれば、「ラムラーナ」のような「2段ジャンプまでしかできないエルミーザ教授」や、スマブラの「カ○ビー」のような7段ジャンプも可能になる…はず。

さのプログラミング教室は、「はぐくもう!つなげるちから」が合言葉の教室です。
同じ時間のクラスには、5人程度のお子さんが入室しますが、一人一人の興味・進度に合わせた課題を提供しますので、自分のペースで学ぶことができます。学習過程があり、同じスタート地点からスタートしますが、理解度やがんばりに応じて、どんどん次のステップへ進むことができます。
レッスンを無料で体験できます。
LINE公式に入り、「無料体験申込」を
タップしてお申し込みください。
