「流れ星」のアニメーションをIchigoJamBASICでつくろう

前回、小学校プログラミング教育の目標とした「IchigoJamBASICのコーディングの知識と技能の習得」に向かわせる動機は、アニメーションづくりであるとして2つのプログラム(滝/線香花火)を紹介しました。今回はその目標に向かう、もう一つの、そしてとっておきのアニメーションプログラムを紹介します。

3つ目のアニメーションプログラム

「学び」の動機は「おもしろい!」「やってみたい!」「どうして?」というような興味・関心、疑問を抱くことにあって、Society5.0の社会の形成者となる子どもたちには好奇心と探究心こそが一番求められる力だと考えています。

前回紹介した2つのアニメーションプログラムを体験した子どもたちに上記のプログラムを見せます。するとすぐに、「あっ、UFOだ!」と声が上がります。

「本当だ。UFOだね」と反応に応えて、IchigoJamBASICではUFOのようなキャラクターが表示できることを伝えます。Alt(またはoption)キーを押しながらAから順番にB、C...とキーを押してみればおもしろいキャラクター(UFOはAlt + H)が表示されます。

「このUFO、どこに現れるのかな?」と尋ねて、「線香花火」のプログラムで使ったLOCATEコマンドを思い出させて、UFOの出現場所を考えさせます。

「LOCATE X , 12」だから、Y座標(縦位置)は真ん中あたりですが、X座標(横位置)がXとなっていることから、Xの値が変わることを確認します。

ここで「線香花火」のプログラムで学んだ「変数」(変数は数字や文字を入れることができる箱であって、その箱にXという名前をつけたプログラム)という考え方について、あらためて子どもたちに理解を促します。

「じゃ、その変数(Xという箱)に入る数字はなんだろう?」と尋ねれば、「0」という声がすぐに聞こえてきます。行番号20のプログラムが、X=0となっているからです。「1」という声も聞こえてきます。行番号60のプログラムが、X=X+1だからです。

「Xが0であればUFOは座標(0 , 12)に、Xが1であればUFOは座標(1 , 12)に表示されることを確認して、上記プログラムをRUN実行します。

「えっ!?」

UFOがY座標(12)上を、左端から右端に点滅しながら動いていきます。このアニメーションをみたときの子どもたちの反応は、かわいらしくて愛しくてたまりません。

なぜUFOがY座標(12)上を左端から右端まで動くのでしょうか。それは行番号60の「X=X+1」と行番号70の「GOTO30」のプログラムに秘密があります。

行番号20で X=0 と変数を定義してそこに0を代入しましたから、当初このプログラムは X=0 で実行されますが、行番号60で X=X+1 となっていることから、ここで当初0であった変数Xは、1( 0 + 1 )となります。

そしてこのプログラムは行番号70で行番号30へ戻りますから、それ以下のプログラムを繰り返して再び行番号60に戻って来れば、変数Xは2( 1 + 1 )となります。それを何度も何度も繰り返しますからXの値が、1、2、3、4、5、6、7...と増えていくのです。でもYの値は12に固定されていますから、結果UFOが右(だけ)に動いていくのです。

ところがX座標は31までしか表示できませんので、X=31となったところ、つまりは右端でUFOは動かなくなってしまうのです。

RUN実行した後、子どもたちの反応をみながら上記プログラムを説明します。そして「やってごらん!」と促せば、子どもたちは を開き、それぞれにアニメーションプログラムの作成に取りかかります。

「UFO、変えてもいいですか?」願望を表現する

前回、「思ったこと」「考えたこと」「やってみたいこと」などの表現したいことを、情報の動きとして考え、それをプログラムする思考、技術、そして態度こそがこれからの新しい社会であるSociety5.0を生きる子どもたちが培うべき必須の資質・能力であり、コンピューターサイエンスの「学び」そのものである、とお伝えしました。

このアニメーションプログラムを作成すれば、子どもたちから次々と表現したい願望などが寄せられます。単純に、

  • UFO、変えてもいいですか?

という許可の願い出もあれば、

  • もっと速くUFOを動かしたいんだけれど......
  • 右端に行ったら、また元に戻って動かしたいのだけれど......

という願望や

  • 斜めに動かせますか?
  • UFO、何機も出せますか?

というような質問がたくさん寄せられます。

筆者は、このような願望や質問がたくさん出てくることこそ、新学習指導要領が最も重要な資質・能力の柱として掲げる「学びに向かう力」の具体だと考えます。

キャラクターを変えたければ、「好きに変えていいんだよ」と伝え、UFOを速く動かしたければ、行番号40と60のWAITコマンドを修正してみることを示唆します。

斜めに動かすには、変数Xに加えて変数Yを定義(「25 Y=0」)して、「75 Y=Y+1」を挿入してみること、そして行番号30と50を「LOCATE X , Y 」とすることも合わせて伝えます。

「右端についたら、また左端からUFOを動かす」には、条件文のプログラムを挿入します。前出のプログラムで言えば、「77 IF X>31 X=0」です。この条件文は、「もし変数Xの値が31より大きくなったら、Xの値を0にする」というプログラムです。これを挿入すれば、UFOは右端に着いたらまた左端に戻って右に動きます。

子どもたちの願望が、条件文を学ぶ切実な動機となるのです。このとき、教室はいわゆるスクール形式と言われる先生と対面するような机配置ではなく、子どもたちが自由に動き回り、それぞれに情報交換ができる配置が望ましいと感じています。さらに言えば一人で課題に取り組む子どももいれば、友だちと相談しながらプログラムしたり、よくわからない子どもたちは先生の周りに集まって教えてもらったりできる配置を工夫したいものです。

筆者は、これこそが個別最適な学びを具現する教室の風景だとも考えています。

アニメーションの命名

さてこのアニメーションにタイトルをつけたいと思います。UFOのキャラクターが表示されているので、その印象から「UFO」とするのが妥当のような気もしますが、もしUFOの代わりに「*」を表示したらどうでしょう。

筆者は「流れ星」と命名したいと思います。そしてこの流れ星をある地点(放射点)から四方八方へ動くプログラムを作成すれば、「流星群」を表現できるかもしれません。LOCATEコマンドで画面にオリオン座を描き、流星群をプログラムすれば天体ショーを表現できるのです。

前回紹介した「滝」「線香花火」と今回の「流れ星」の3つのアニメーションプログラムの作成を通して、子どもたちは以下に示した「IchigoJamBASICのコーディングの知識と技能」を一人一人の興味・関心、そして習熟の程度においてまさに個性的・個別的に習得することになります。

【知識(コマンド)】

【技能】

まだまだ初級レベルのIchigoJamBASICのコーディングの知識と技能ではありますが、これらをもとにすれば、アニメーションからゲームのプログラムづくりへ発展することもできます。

前々回に紹介した『IchigoJam ゲームの森①』『IchigoJam ゲームの森②』(共に蘆田昇著/NPO法人エル・コミュニティ編)等を参考に、まずはプログラムを見て(読んで)、それがどんなゲームなのかを想像しながらプログラムを作成、実行してください。きっと子どもたちはすばらしい創造性を発揮して、思い思いのゲーム作りに集中して、取り組んでいくと思います。

その他の【松田孝の「プログラミング教育の夜明け」】は

© Valed.press