初めてBASICにさわる人のためのヨッパライゲーム

初めてBASICにさわる人のためのトコトコプログラム id:ma-asa:20120407:1333807535 の続きです。
うっかり2ヶ月近く放置してしまいましたが気にせずにいきましょう(^^;

さて、ヨッパライゲームというのは、1ボタンゲームのテンプレで、勝手な方向に進むキャラクターが障害物にぶつからないように操作するゲームです。

つまり、前回のデモに「操作」と「衝突」そして「終了判定」が加わるわけです。

というわけで、新しいリストです。

行数が増えてますし、前回とちょっと違う行もあります。

代入

地味に変わってるのが人型をPRINTするところですね。今までは空白+人型で一行でしたが今度は人型と空白を別々にPRINTしてます。
なぜかというと、12行めの Y=Y+1 で、ほっておくと人型はどんどん画面下に下がっていくからです。

初めてプログラミング言語に触れる人は、このY=Y+1でとまどうそうです。一般的な数学ではありえない式だからです。

本当の昔のBASICでは省略できるLET命令が存在しました。
LET Y=Y+1
つまり、これは数学の式ではなくて「Yの値を、Yの現在の値に1を加えた答えに変更せよ」という命令です。
(このY=Y+1を飲み込めない人は、プログラミング自体伸びないという説さえあるけど、ホントかな? プログラミングは上から下へ、左から右へ流れる原則になってるのに、代入文だけ=の右の処理を先にする、文法の設計がまずいせいじゃないの?)

キー入力を判定する

ヨッパライゲームでは、何もしないと人型は勝手に下に降りていきます。
では、「ボタンを押したら上に昇る」ようにするにはどうしましょうか?
それが11行の
IF BUTTON()>0 THEN Y=Y-2
です。
この一文でぐっとプログラムらしく、ゲームらしくなります。IF〜THEN文です。
BUTTON()は、十字キーやボタンが押されたら、押されたボタンに応じた数値を返します。
何も押されてなければ0なので、この一文こそまさに「ボタンを押したら上に昇る」ということです。
12行で必ずYに1を足すので、あらかじめ2を引いています。このへんがテクニック。

終了判定

13,14行めのIF分が終了判定です。Yがマイナスの値か、24以上の値になるとPRINTできる範囲を超えてしまうので、ミスとして、効果音を鳴らして即終了します。
ざっくりしてますが、「画面内の何かを操作できるが、ミスしたらペナルティがある」ということで、最小限のゲームを実装できました。

でもあんまり面白くないですね。障害物が入ってないし。
それは次回のお楽しみ。