初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

人生一度はやってみよう MSX Basic 入門

11.避けるだけの簡単ゲームを作ろう(完)

 

[ 10.避けるだけの簡単ゲームを作ろう ] の続きです。

前回はハード面の話もあり、少しむずかしい点も多かったですね。
初めからすべてを理解する必要はありません。
理屈が分からなくても、使い方だけ知っていれば先に進んでも大丈夫です。
続けていれば、それとなく理屈も分かってきますよ。

 

 

ゲームオーバー後のリトライ

ゲームオーバーになってしまったら、リスタートまたは終了のどちらかを選べるようにします。

メッセージも下図のように表示します。

リスタートか終了するか選べるようにする

 

行番号 122、125、135 を追加します。

リスタートか終了するか選べるようにする

行番号 122 は改行していますが、入力するときは気にせず最後まで入力してからエンターキーを押します。

 

135 IF A$="s” OR A$="S” THEN RUN

リスタートのキーは文字Sにしました。
終了キーE と同じように、大文字と小文字どちらを入力してもOKなようにしています。

リスタートの方法は、RUNを使いました。
これでまたゲームを遊ぶことができます。
実は、この方法は少し強引と言えます。別の方法はまた今度。

 

次へ進む前に RENUM します。

プログラムを追加したら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つずつ出現させます。
これなら修正も少ないですね。

*を2つにしてゲームを難しくする

ん、難しくなりました。

 

行番号 90 と 100 を変更します。

*を2つにしてゲームを難しくする

表示する文字が2つになったので、乱数の範囲を1つ減らします。

 

 

完成です

完成しました。お疲れさまです。

本当はもっと色々とやってみたかったです。
画面の色を変更したり、ゲットアイテムを出現させたり、などなど。
プレイ時間が長くなるほど、難易度が上がっていく仕組みも面白いですね。

まぁ、初めてのゲームなのでこれで良しとしましょう。

 

プログラムを PC のハードディスクに保存したい場合は、次を参照してください。

[ 7.プログラムの保存 ]

 

一度、フロッピーディスク(イメージ)に保存するのは面倒ですが
慣れてくると便利だと感じました。

皆さんも積極的に使ってみてください。

 

 

FOR NEXT を使ってみよう

予想よりもゲーム作りが早く終わってしまったので、新しい命令を学習しましょう。

それでは新しく WebMSX を起動して、SCREEN 0 を実行してください。
再起動をお願いする理由は、学習環境を揃えるためです。

 

処理をループ(繰り返し)させるとき、よく使うのがFOR NEXTです。

まずは行番号を使わず、ダイレクトに入力してみましょう。

for next でループさせる

機能は、FOR から NEXT までの間を、指定された回数だけ繰り返します。
このときの変数Iは、0から6まで変化しています。

 

今までにやってきた方法を見てみましょう。
変数Iを0から6までカウントアップしています。

for next を使わずにループさせる

 

次は FOR NEXT です。

for next を使ったループ

こう比べてみると FOR NEXT はシンプルでいいですね。
使い方は次のようになっています。

FOR<変数名>=<初期値>TO<終値>[STEP<増分>]

NEXT<変数名>

 

STEP を省略したときの増分は+1になります。

FOR の優れている点は、ループに必要な情報が1行に収まっていることです。
FOR を使わないループを思い出してみてください。
ループに関わる情報が複数の行に分散しています。
これは大きなプログラムになるほど、分かりづらさが増えるという欠点になります。

for next を使わないループは情報が分散する

 

 

STEPを使い増分を指定してみましょう。
ちゃんと20ずつ増加しています。
増加後の値が終値を超えていたら、ループ内は処理されません。

for step を使い増分を指定する

 

STEP にはマイナス値を指定することもできます。

増分にマイナス値を指定する