最近の本連載『こうしろうのMindStorms日記』にはMindStormsも,こうしろうも出てこない。トップページの写真とは別人のようにおっさんくさくなった中学3年のこうしろうは今,受験勉強に追われている。
 変わりに,現在はこうしろうの弟かず(小学6年)がHSP (Hot Soup Processor)でゲームを作成している。このゲーム作成プロジェクトも,こうしろうと同様で,パソコンでゲームばかりしているかずに「ゲームばっかりしとらんと,自分で作ってみたらどうだ」と私が声を掛けたところから始まっている。与えられたもので遊ぶより,自分で作ったほうがおもしろいぞというコンセプトはMindStormsでロバート君を作っていた頃(第2話参照)から変わらない。

 ロボットを作らない分だけ,よりプログラミング中心の日記になっており,「何書いてあるのか,わからん」という声を,(主に妻から)聞いたりもするのだが,プログラミングは本来,おもしろいものだということをお伝えしたいと思っている。父としては,かずがプログラミングを理解していく過程を見ているのが楽しい。

 さて,プログラミングに限らないことなのだが,学習の過程には「人の話をよく聞く時期」と「自分の考えを進めていく時期」がある。最初は,何をすればよいのかわからないから,よく人の話を聞く。小さいプログラムを作って「こうすると,こうなる」のような説明を一生懸命聞いてくれる。
 自分でプログラムを書き始めても,まだ人を頼りにしているうちは,傍から言われることをよく聞く。理解できなくても,とりあえず「うん,うん」と聞いてくれる。
 それが,少し自信がつくと,自分でどんどんプログラムを書き進めたくなって,人の言うことをあまり聞かなくなる。そういう風にならないと自力でプログラムが組めるようにはならないのだが,そういう状態の時に何かを教えるのは難しい。

 今回はラケットゲームというかスカッシュのようなゲームを作っているのだが,ボールが見えにくいので,この日はまず背景の色,ラケット,ボールの色を変更するところから始めた。
 「かず,色(RGB)をそれぞれ変数にしてしまわれ。」,「なんでけ」と答えるかずの顔には「面倒やな」と書いてある。

 あちこちでcolor 0,0,255とか書くよりも,最初に変数に

----------------------------------------
  ba_R=0
  ba_G=0
  ba_B=255
----------------------------------------

と定義しておいた方が,便利やねんとなぜか関西弁で強く言うと「そう」と,不服そうに従った(困ったときや,なんとかねじ込みたいときは関西弁が役に立つと最近,わかぎゑふさんの著書を読んで思った)。
 しかし,この方法が便利な理由にはすぐに気が付いてくれた。なかなか,見やすい色の取り合わせが決まらなかったからだ。
 色を直したいときに,変数に代入する値だけを変更すれば済むことのありがたみはすぐに実感できた。

結局,バックの色はらくだのももひき色におさまった。

----------------------------------------
  yyy=460
  xxx=10
  color ba_R,ba_G,ba_B
  repeat 3
    boxf xxx,yyy,xxx+4,yyy+4
    xxx+=10
  loop
----------------------------------------

残りの持ち球がわかるように,repeat 3でボールを3個描き,ミスをすると1つずつ消していくようにした。

 次にプログラムの構造を変更する。「いきなりズラズラ初期処理があると,じゃまやから後ろに持っていってgoto文で飛ばせ」とか「ある程度まとまった処理はサブルーチン化してしまえ」,「同じことを何度も書いてあるところがないか探せ」などと,少し自信を付けてきたかずに,なぜか厳しくなってしまう。
 もう1つ気乗りのしない様子でプログラムをいじっていたかずであるが,

--------------------------------------
*ball_kesu
  //ボールを消す
  color bg_R,bg_G,bg_B
  boxf oldx,oldy,oldx+4,oldy+4
  return
----------------------------------------

 ボールを消す処理をサブルーチン化したところ,それを呼び出す箇所が2箇所あったのでサブルーチン化するメリットを感じてくれた。

 プログラミングの定石は「こういうもんだ」と教え込んで「ああ,そうすると便利だな」と実感させないと定着しないものかもしれない。