かずが私の親ばかスイッチを入れた。ラケットゲームの完成はもうそこまできている。ゲームを難しくするために,ボールのスピードを段階的に上げていこうとかずは考えた。「ラケットに当たる数をカウントして…」と言いながら,scountという変数を定義し,ラケットの衝突を判定する箇所でscountに1を足し,ミスをして玉を後ろに逃したら,0に戻すようにプログラムを変更していく。

 「scountを10で割って,割り切れるときにボールのスピードを上げようと思うがいけど,どうけ?」とかずが言う。「お前,どうしてそんなこと思いついた。センスあるなあ!」と私の親ばかスイッチの目盛りは一気にレッドゾーンに達した。
 ボールのスピードを上げるには,ボールの座標にプラスする変化率zとaの値を大きくすればよい。

----------------------------------------
 *syoutotu
  // ヒットの判定
  if (y >= (yy-4))&(y <= (yy+4)){
    if (x >=(xx-4))&(x <= (xx+64)){
      scount+=1
      score+=1
      if (z < 7){
        if ((scount \ 10) =0) {
          z+=1
          if (a > 0) {
            a+=1
          }
          else {
            a-=1
          }
        }
      }
      z=z*(-1)
    }
  }
  return
----------------------------------------

 zはY軸の変化率でaはX軸の変化率である。zの最大値は7と決めているので,z < 7のときに,変化率を加算している。(scount \ 10) =0が10で割ったあまりが0の判定である。コンピュータとのラリーが10回続いたときに,z+=1でボールを加速するのである。scountを加算していって10になったら,zの値を大きくするという方法が考えやすいのであるが,その方法だと,一々scountを0クリアしなければならない。 10で割り切れるときに加算すれば,そんな必要はない。
 「かず,でも変数に最大いくつの数値まで,記憶できるか知っとるが?」とたずねると「4億ぐらい」だから気にしなくていいやろと答えた。こやつ,なかなか用心深い。

しかし,X軸の変化率aへの加算が,なかなかうまく行かなかった。というのは,画面の右にボールが進むときはaの値が正だけど,左に進むときは負であることを忘れていた。aが正のときに1足すと右に広角に移動するのだが,負のときに1を足すと,X軸の変化率が小さくなり,鋭角にボールが移動してしまった。
 「関数で,サイン(符号)を求めて,それから絶対値を求め1を足してから,サインを戻してやればいい」とアドバイスしたのだが,サインや絶対値を求める関数はHSP (Hot Soup Processor)には用意されていなかった。if (a > 0)でaが0より大きかったら,1を足し,そうでなかったら引くようにした。これでボールの動きは定まった。

 かずはscore (スコア)という変数も追加した。ラケットに当たった数をscore+=1と累計して,ゲーム終了時に表示させるのだと,次のような終了画面のコードを書いた。

----------------------------------------
  color bg_R,bg_G,bg_B
  boxf 0,0,winx,winy
  color 255,0,0
  font "MS ゴシック",60,1
  pos 85,120
  mes "GAME OVER"
  color 0,0,0
  font "MS ゴシック",30,1
  pos 240,200
  mes "スコア "+score+" "
  stop
----------------------------------------

 フォントを変えたり,色を変えたりしてスコアを表示する。

さすが,毎日ゲームをしているだけあって,終了画面はそれらしい。

 サウンドはフリーのmp3ファイルをダウンロードして,鳴らすようにした。

----------------------------------------
sndload "bgm0008.mp3",1,1
  snd 1
----------------------------------------

 サウンドの再生は簡単だ。sndload命令でmp3ファイルをバッファに読み込み,sndで再生すればよい。再生を止めるにはsndoff命令を使う。
 1つ問題だったのは,sndload命令の3つ目の引数1はサウンドファイルを繰り返し再生することを意味するのだが,繰り返しのたびに,ボールの動きが遅くなることだった。
 なるべく時間の長いmp3ファイルを選び,よしとした。

 これで一応,ラケットゲームは完成した。かずは今,「HSP2.55プログラミング入門」(おにたま,悠黒喧史,うすあじ共著 秀和システム発行)を毎日,熱心に読んでいる。そういえば,こうしろうも中学に入学する数ヶ月前の時期には坂村 健教授著の「痛快コンピュータ学」を一生懸命理解しようとしていた。

 かずが今後,どんなプログラムを作るのか楽しみになってきた父である。