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

2020年の小学校でのプログラミング必修化。東洋経済でも「今すぐ始めるプログラミング」と特集。 特集内、かみや かよ氏が指摘する教員確保とパソコン不足。1人1台の低価格パソコンと複数の科目をまとめて手軽に実施する混合学習で解決しよう!

こちら、その教材例「ABCタイピングゲームづくり」
算数(座標)+英語(アルファベット)+音楽(作曲)+タイピングが同時に学べる。

使うもの:1500円パソコンIchigoJam
(そろばんのように自分のものが望ましいが、パソコンで動くIchigoJam PCでもOK)

まずは、ゲームの基本である画面上に文字を表示。

LOCATE 16,12:PRINT "A"

画面中央に A と表示される。LOCATE(ロケート)でX座標、Y座標指定して、PRINT(プリント、?でも代用可能)で A を表示。

CLS

画面を消すコマンド CLS(シーエルエス、クリアスクリーンの略)

これを組み合わせて記憶させて動かしてみる。

10 CLS 20 LOCATE 16,12:PRINT "A" RUN

中央にアルファベットがでるプログラム完成。

次にキー入力判定を INKEY(インキー)と文字のコードを調べる ASC(アスキー)を使って行う。

30 IF INKEY()<>ASC("A") CONT LIST RUN

判定はIF(イフ)、押されたキーコード(文字を表す数値)が、Aのキーコードでなければ(<>が不等号)、CONT(コンティニュー)でその行を繰り返す。

先頭に数値をいれると、その番号と合わせてプログラムが記憶される。LIST(=F4キーでもOK)で、記憶したプログラムが番号順に並んだ状態で確認可能。

キーボードで A を押すと終了するプログラム完成。

続けて、B、C と作ってみる。

40 LOCATE 16,12:PRINT "B" 50 IF INKEY()<>ASC("B") CONT 60 LOCATE 16,12:PRINT "C" 70 IF INKEY()<>ASC("C") CONT RUN

LISTのプログラムの先頭の数値だけを変えてエンターキーでその行をコピーできる技を使うと、同じようなプログラムの繰り返し簡単! このまま Z まで作ってもOKですが、便利な繰り返しコマンド、FOR/NEXT(フォー/ネクスト)コマンドを使ってみる。

40 50 60 70 LIST

数値だけかいてエンターで、その行のプログラムが消える。これを使って40から70を削除。LIST(=F4)で確認。続いて、こちらを打ち込む。

20 FOR C=ASC("A") TO ASC("Z") 30 LOCATE 16,12:PRINT CHR$(C) 40 IF INKEY()<>C CONT 50 NEXT RUN

変数CがAから始まり、Zのキーコードになるまで繰り返す。CHR$(キャラクター)コマンドでキーコードを文字にしてPRINTで表示。 A〜Zのタイピングプログラムが完成。RUN(=F5キーでもOK)で動く。

タイムを計るとゲームになる。

15 CLT 60 PRINT "TIME:";TICK()/60

CLT(シーエルティー、クリアタイマー)コマンドで1/60秒毎に1増えるストップウォッチが開始、TICK(ティック)コマンドでタイムが分かる。 60で割ってかかった秒数にして表示。やるほどにすぐ速くなるので楽しい。

ABCの歌をBGMにする。CDEでドレミを表すMML(エムエムエル)を使って、曲をつくる。

PLAY"CCGGAAG2"

ドドソソララソ(2分音符)・・・と作曲。

16 PLAY"CCGGAAG2 FFEEDDC2 GGFFEED2 GRFREED2"

できあがったら先頭に番号を付けて、プログラムとして記憶。タイピングが始まる前、15と20の間にいれたいので16としている。

F5で実行、リズムに合わせて間違えないように打つと自然とキーも覚えられる。キーボードの絵を画面近くに貼り付けて、キーボードを見ないで打てるとかっこいいぞ!と煽るのも良し。 目指せ、タイピングの達人!

実行するとすぐ始まってしまうので、ちょっとまって欲しい場合は、WAIT(ウェイト)コマンドをいれるといい。

12 WAIT 60

ちょっと速すぎる、または、マスターしたから速くしたいなどは、曲の速さを変えるTEMPO(テンポ)コマンドを使う。

17 TEMPO 200

どの速さまでいけるか!?大人の限界を体感しておくと子供の成長に驚けます。

1 'ABC TYPING 10 CLS 12 WAIT 60 15 CLT 16 PLAY"CCGGAAG2 FFEEDDC2 GGFFEED2 GRFREED2 17 TEMPO 120 20 FOR C=ASC("A") TO ASC("Z") 30 LOCATE 16,12:PRINT CHR$(C) 40 IF INKEY()<>C CONT 50 NEXT 55 LOCATE 13,16 60 PRINT "TIME:";TICK()/60 70 IF INKEY()=10 GOTO10 ELSE CONT

タイムの表示位置を整えて(55行)、エンターキーでリトライ(70行)できるように改造した「ABCタイピングゲーム」プログラム全文。

1行目に ' でタイトルを実行されないコマンド、コメントとして書いて SAVE しておくと、保存したファイルを見るFILES(ファイルズ)コマンドで確認できて便利です。


今週の週刊東洋経済、こどもプログラミング特集。はんだづけして、自分で作るところから始めるBASICパソコン、IchigoJamも載ってます。 Ruby開発者のまつもとゆきひろさんのインタビュー、かつて使っていたプログラミング言語は「BASIC」だった。


ワイズインテグレーション発、IchigoJamでプログラミングするこどもロボット「ソビーゴ」登場!
5/18-20開催、こどもプログラミングが熱い、教育ITソリューションEXPO「学びNEXT」にて展示!

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