* 初心者向けプログラミング体験ワークショップ#11 -(by [[K]], 2021.12.15) ** (0) -当方で子どもたちにこのワークショップ教材をやらせてみてどうだったかをまとめます(参考用)。 ** (1) プログラムの入力について -私はHLX-BASIC編のみでやりました。 -入力に際しては私はテキストエディタを開いて、CapsLockをオンにするところまでやって、そこから私がテキストを読み上げて(2~4文字ずつくらい)、子どもはそれを復唱しながら入力していきました。 -インデントはすべて無視しました。HLX的に取り除けないスペースはそのまま入力させています。 -即席で決めた読み方: |スペース|いっこあけて| |;|セミコロン| |(行末の);|セミコロンエンター| |=|わ| |==|わわ| |<|不等号で右が大きいやつ| |>|不等号で左が大きいやつ| |@|アットマーク| |*|かける| |+|足す| |-|引く| |++|足す足す| |--|引く引く| |(|かっこ| |)|かっこ閉じ| |d|小文字のディー| |(例)PRINT@|ピー アール アイ エヌ ティ アットマーク| -入力行数が30行くらいの場合、30分くらいの入力時間がかかりました(慣れる前はこの1.5倍くらいの時間がかかっていました)。また入力しているところを私は後ろから見ていて、入力ミスはその場で指摘して修正させました。そのため、入力が終わった後はエラーが出ることはなく、結果的に非常にスムーズに進行しました。 -テキストエディタは行番号表示があるものが喜ばれました。最初に「これは全部で〇〇行だよ」と伝えてあって、だから子どもは残り行数を意識して「やる気」を維持していたように見えました。 -大雑把な印象ですと、最後までやりきれる確率は入力の量の二乗に反比例しているようです(つまり行数が2倍になると確率は1/4になる)。 -うちではまず画面写真やゲームの概要を説明して、その上でどれを入力するかを子供に選ばせています。そして1つを入力し終えてゲームして、多少の改造もしてしばらくすると、今度は別のやつも入力したいと言ってきました。要するに面白かったのでしょう。しめしめです(笑)。 -そうやっていくつかやっていると、入力に慣れてきます。・・・そしてまずPRINT@命令に注意が向くようになりました。「あ、これわかったよ。クリアした時のメッセージでしょ?」とか「これは点数を書いているんでしょ?」みたいなことを自力で気づくようになりました。 -それからしばらくすると、「今入力したこの行はどういう意味なの?」と聞くようになりました。それでそれをそのたびに説明すると、「なるほどね、これでゲーム画面が一通りかけているんだね」とか、「押したキーによって動作が変わるのはここにそう書いたからなのかー」と、とても納得していました。 -プログラムのファイル名ですが、「run.txt」とかではなく「1」(拡張子なし)みたいな名前にすると、RUNするときが簡単で子どもに喜ばれました。テキストエディタで開くのは少し面倒ですが、それは基本的に大人がやることになっているので、子どもは気にしないのです。 --1,2,3,4,...と作っていくにつれてどれがどれだかわからなくなりました(笑)。まあ当然の結果ですよね。それで今は「ゲーム表.txt」というテキストファイルを作り、1は〇〇、2は〇〇、みたいな表を書いて運用しています。 -私は最初に6個全部の画面写真とゲーム内容と行数をそれぞれ教えて、「どれにする?」とやって、はじめました。前述のとおり1回やって面白かったので2回目をやることになって、その次に3回目をやって・・・とやっていくと、4回目が終わったあたりから「コンプリートしたい」としきりに言うようになりました(実際その後コンプリートしました)。ということは、つまり6個中4個が面白ければ、残り2つがいまいちでも全部やってくれるのかもしれません(笑)。飽きられないようにミニゲームのネタを考えなければいけない身としては、助かる情報でした。 -私は最初に6個全部の画面写真とゲーム内容と行数をそれぞれ教えて、「どれにする?」とやって、はじめました。前述のとおり1回やって面白かったので2回目をやることになって、その次に3回目をやって・・・とやっていくと、4回目が終わったあたりから「コンプリートしたい」としきりに言うようになりました(実際その後コンプリートしました)。ということは、つまり6個中4個が面白ければ、残り2つがいまいちでも全部やってくれるのかもしれません(笑)。飽きられないようにミニゲームのネタを考えなければいけない身としては、だいぶ助かる情報です。 ** (2) 実行について -子どものゲームのやり方を見ていると、まじめにクリアを目指しているときと、明らかにそうではないときがありました(たとえば「こうやったらどんな死に方をするのかな?」みたいな)。後者の遊び方を私はしなかったので、未テストの内容がたくさんあって、おかげで多数のバグを見つけることができました。・・・おかしな動作を報告した時に、とても褒めてちょっとした駄菓子を与えたところ(10円ガム)、これを大いに喜んで、かなりあれこれとコーナーケースを攻めてバグ探しをしてくれました。 -あと、何点を目指したらいいのかと何度か聞かれました。「坂道を走ってきれいな石を拾い集めるゲーム」では、100点という目標を設定しましたが、他は特に決めていませんでした。・・・ハンバーガーキャッチ・ゲームでも100点を目指せとけしかけたら、1時間後くらいに100点を超えました。 ** (3) 改造について -[1]ハンバーガーキャッチ・ゲームで、「スペースキーを押したら、2点減点されてもいいから、BY=0に戻せるようにできないか?」と提案されたので、 IF I==32 THEN BY=0; SC-=2; FI; --の一行を追加させました。 ~ -[2]ハンバーガーキャッチ・ゲームで、ハンバーガーの色を変えたいと言われました。 --しょうがないので http://www.finitojapan.com/cltable.html で色を選ばせて、 CHAR@@ CF,BX,BY,2,0XCCCCFF,0; CHARBOX@@ CF,1,BG,PX,23-BG,2,0XCCCCFF,0; --のように改造して遊んでもらいました。 ~ -[3]ジャンプ・ゲームで、もうハイスコアの更新が望めそうにない時は、早くゲームオーバーになって再ゲームがしたいと言われました。そこで次の1行を追加するように伝えました。 IF i==64 THEN GE=1; FI; // 64は@の文字コードです。 --その後、かなりたくさんやったようで、ハイスコア表示を見たら3500点くらいになっていました(笑)。 ~ -[4]坂道を走ってきれいな石を拾い集めるゲームで、ハイスコア表示が欲しいと言われました。ということで以下の改造案を伝えました。 HI=0; を適当なところに追加(CANVAS命令の直後など)。 HI=MAX(HI,S); PRINT@ 1,0,7,0,"SCORE:%d HIGH:%d ",S,HI; に改造 ** (4) どれが一番面白いか? -これはあくまでも個人の感想です(小学生)。 --[1]ロケット操縦ゲーム → [[a21_edu06]] --[2]ハンバーガーキャッチ・ゲーム → [[a21_edu03]] --[3]ジャンプ・ゲーム → [[a21_edu04]] -そして、もっとやりたいから作例を増やせと言われました(笑)。しかしかなりくたびれたので、まあやるのは1月以降です。 * こめんと欄 #comment