create every day - 福野泰介の一日一創

英語とプログラミング教育、壊して理解するBASICプログラム - 鯖江市へ教員向け教科書寄贈

2017/10/04 23:55:00
#KidsIT #IchigoJam #sabae 

いよいよ最後の敵(Enemy)が現れた、こちらのレーザー砲はあと1発分のエネルギーを残すのみ。
君は地球を守れるか!?・・・という、シリアスなシーンを再現した、シューティングゲームです。

まずは意味わからなくてOK!
次の7行のIchigoJam BASICのプログラムを、ゲームで遊ぶためにがんばって入力して、RUN!

10 E=RND(22):Y=12 20 CLS:LC31,E:?"E":LC0,Y:?">"; 30 Y=Y-BTN(UP)+BTN(DOWN) 40 IF BTN(SPACE) GOTO 60 50 WAIT 2:GOTO 20 60 FOR I=1TO30:?"-";:NEXT 70 IF Y=E ?"*SUCCEEDED!" ELSE ?"-FAILED..."

登場、14英単語の解説
RND: RANDOM(ランダム、でたらめ)の略
CLS: CLEAR SCREEN(クリアスクリーン、画面をきれいに)の略
LC: LOCATE(ロケート、位置を決める)の略
BTN: BUTTON(ボタン)の略
IF: イフ、もし
GOTO: ゴー・トゥー、〜へ行け
UP: アップ、カーソル上キーのキーコード
DOWN: ダウン、カーソル下キーのキーコード
SPACE: スペース、スペースキーのコード
WAIT: ウェイト、待て
FOR: フォー、〜へ向けて(FOR I=1 TO 30、NEXTまでを変数Iを30までくりかえす *プリントFOR/NEXT
NEXT: ネクスト、次
SUCCEEDED: 成功した(SUCCEED+ED過去形)
FAILED: 失敗した(FAIL+ED過去形)

すばやく敵(E)を正確に破壊しよう!

効果音を付けた豪華版への改造法(下記、60と70行を編集しよう!)

60 FOR I=1TO30:?"-";:BEEPI:NEXT 70 IF Y=E ?"*SUCCEEDED!":FOR I=1TO90:BEEP40+RND(20):NEXT ELSE ?"-FAILED..."

追加登場英単語
BEEP: ビープ、ピーと鳴らす

一旦、SAVEで保存して、プログラムを壊していきましょう。

60 70 LIST 10 E=RND(22):Y=12 20 CLS:LC31,E:?"E":LC0,Y:?">"; 30 Y=Y-BTN(UP)+BTN(DOWN) 40 IF BTN(SPACE) GOTO 60 50 WAIT 2:GOTO 20

60エンター、70エンターで、エンディングの60行と70行を消してプログラムを見ます。
この状態で RUN すると・・・?

>Line error in 40 40 IF BTN(SPACE) GOTO 60

エラーで止まりました、GOTO 60 としているのに 60行がもう無いからですね。
では、エラーがでる40行も消しちゃいましょう。

40 LIST 10 E=RND(22):Y=12 20 CLS:LC31,E:?"E":LC0,Y:?">"; 30 Y=Y-BTN(UP)+BTN(DOWN) 50 WAIT 2:GOTO 20

スペースを押しても無反応になりました。
30行、Y=Y-BTN(UP)+BTN(DOWN) の謎に迫ってみましょう。
変数Yは、10行で12にしていて、20行で自機(>)を表示する縦の座標として使っていますね

1 ?BTN(UP),BTN(DOWN):GOTO1 RUN 0 0 0 0 1 0 1 0

実行すると 0 0 が表示され、上を押すと左の数、下を押すと右の数が1になります。
つまり、上だけを押している時の Y=Y-BTN(UP)+BTN(DOWN) は、Y=Y-1+0 であり、LET Y,Y-1+0 と同じ意味で変数YをY-1+0をいれる、つまり、Yを1減らし、自機を1つ上げることになります。

1 30 Y=Y+1 RUN

1行を消して、試しに30行を足す1だけにしてみて RUN してみましょう!

Yが解読できたので、Yに関するプログラムなどを消して、10行と20行だけにしましょう。

10 E=RND(22) 20 CLS:LC31,E:?"E"

Eは敵の縦の座標、ランダムに決めて、横の座標31、つまり右端に敵を表示しています。
RUNするたびに場所が変わります。
縦は24コあるはずですが、なぜ、RND(22)なのでしょう?
いろいろ試して謎に迫ってみてください。

学校は、学び方を学ぶ場所

PCN鯖江から鯖江市に20冊寄贈した書籍「小学校教員のためのプログラミングで考える教育の実践入門」(Kindle版
市長、教育長、著書の吉村さんとのプログラミング教育ディスカッション。

いろんな教科を題材に、いろんな学び方があって、自分でいろいろ学べるのだと気づくこと。
どんなことでも自分で学べる方法さえ身につけばそれでOK!

コンピューターはすばやく、かつ、決して諦めることなく、怒ることなく、正確にYESかNOかを答えてくれるある種、完璧な先生です。 人間の先生は、人間の先生でしかできないことに集中できる環境づくりをお手伝いしていきます。

算数と英語が弱いという鯖江市、プログラミングで算数と英語が好きになってもらいましょう!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image