人生一度はやってみよう MSX Basic 入門
11.避けるだけの簡単ゲームを作ろう(完)
[ 10.避けるだけの簡単ゲームを作ろう ] の続きです。
前回はハード面の話もあり、少しむずかしい点も多かったですね。
初めからすべてを理解する必要はありません。
理屈が分からなくても、使い方だけ知っていれば先に進んでも大丈夫です。
続けていれば、それとなく理屈も分かってきますよ。
ゲームオーバー後のリトライ
ゲームオーバーになってしまったら、リスタートまたは終了のどちらかを選べるようにします。
メッセージも下図のように表示します。
行番号 122、125、135 を追加します。
行番号 122 は改行していますが、入力するときは気にせず最後まで入力してからエンターキーを押します。
135 IF A$="s” OR A$="S” THEN RUN
リスタートのキーは文字Sにしました。
終了キーE と同じように、大文字と小文字どちらを入力してもOKなようにしています。
リスタートの方法は、RUNを使いました。
これでまたゲームを遊ぶことができます。
実は、この方法は少し強引と言えます。別の方法はまた今度。
次へ進む前に RENUM します。
スコアを表示しよう
ゲームですからスコアを入れます。
プレイを続けるだけで得点するようにします。
行番号 20 を変更し、105 を追加します。
20 X=16:SC=0
スコアのカウント用に変数SCを用意しました。
105 SC=SC+1:LOCATE 1,0:PRINT"SCORE:";SC
スコアを1ずつカウントアップして、座標 x=1,y=0 に表示しています。
実行してみます。
点滅してしまいますが、画面左上にスコアが表示されます。
忘れずに RENUM しましょう。
ゲームを難しくしよう
今のままでは簡単すぎてゲームが終わりません。
少し難しくします。
適度に難しい方がゲームとして面白くなりますよ。
障害物 * を2つずつ出現させます。
これなら修正も少ないですね。
ん、難しくなりました。
行番号 90 と 100 を変更します。
表示する文字が2つになったので、乱数の範囲を1つ減らします。
完成です
完成しました。お疲れさまです。
本当はもっと色々とやってみたかったです。
画面の色を変更したり、ゲットアイテムを出現させたり、などなど。
プレイ時間が長くなるほど、難易度が上がっていく仕組みも面白いですね。
まぁ、初めてのゲームなのでこれで良しとしましょう。
プログラムを PC のハードディスクに保存したい場合は、次を参照してください。
[ 7.プログラムの保存 ]
一度、フロッピーディスク(イメージ)に保存するのは面倒ですが
慣れてくると便利だと感じました。
皆さんも積極的に使ってみてください。
FOR NEXT を使ってみよう
予想よりもゲーム作りが早く終わってしまったので、新しい命令を学習しましょう。
それでは新しく WebMSX を起動して、SCREEN 0 を実行してください。
再起動をお願いする理由は、学習環境を揃えるためです。
処理をループ(繰り返し)させるとき、よく使うのがFOR NEXTです。
まずは行番号を使わず、ダイレクトに入力してみましょう。
機能は、FOR から NEXT までの間を、指定された回数だけ繰り返します。
このときの変数Iは、0から6まで変化しています。
今までにやってきた方法を見てみましょう。
変数Iを0から6までカウントアップしています。
次は FOR NEXT です。
こう比べてみると FOR NEXT はシンプルでいいですね。
使い方は次のようになっています。
FOR<変数名>=<初期値>TO<終値>[STEP<増分>]
NEXT<変数名>
STEP を省略したときの増分は+1になります。
FOR の優れている点は、ループに必要な情報が1行に収まっていることです。
FOR を使わないループを思い出してみてください。
ループに関わる情報が複数の行に分散しています。
これは大きなプログラムになるほど、分かりづらさが増えるという欠点になります。
STEPを使い増分を指定してみましょう。
ちゃんと20ずつ増加しています。
増加後の値が終値を超えていたら、ループ内は処理されません。
STEP にはマイナス値を指定することもできます。