第5回は「横に長いマップをつくろう」です。
(背景をつくろうを最初から見る場合はこちら)
横スクロールシューティング風の背景をつくっていきたいと思います。
横に長いマップデータをつくろう
当然スクロールさせるには2画面以上のマップを作成しないといけませんので、DATAを右に伸ばしたものを準備しましょう。
(説明のためわかりやすい背景に変更しました)

画像は見切れていますが今回は横75個分のマップ(25個を3画面分)を用意しました。
横に長いマップにするための調整
それでは第4回のプログラムを調整していきます。
現在表示している画面の右側(の見えない)部分に追加で画面を表示させる形で作っていきます。
13行目 TSCREENの幅・高さを追加した変数に変更
17、19行目 FORの終了値を追加した変数に変更

大きなマップをつくるため、まず幅・高さで使う変数「CX」「CY」を追加。
(1画面に置ける個数「CX=25」「CY=15」としておきます)
そして作成する画面の分だけ増やせるよう変数「MX」「MY」もあわせて追加。
今回は横に3画面分作成したので「MX=3」としています。
あわせてFORの終了値もマップを増やす分が必要となるため、「幅・高さ」から-1した形に変更します。
実行結果はこちら

見えない右側にマップチップが置かれている・・・はずなのですが、これではちゃんと作られているかわかりませんね^^;
ということで、確認のためにENDの前に以下を追加してください。

実行結果はこちら(動画です)
問題なく作られていることが確認できました。
TOFS の解説
TOFSはテキストスクリーンの表示座標を変更(設定)するものになり、
の形で記載します。
※X,Yは文字サイズ単位では無くドット単位
流れとしては
・元の位置から400ドット左側にずれた背景(Xとしては-400)を表示
しています。
(WAITは背景の推移がわかるように入れています)
少しわかりづらいですが
左方向(Xがマイナスの方向)にずらして
現在見えている画面に表示した
というような感じだと思っていただければ。
TOFS の注意点
先程「ずらす」と説明しましたが、実際には現在の位置(座標)からずらしているではなく、元の位置(座標基準点)からの座標の背景を表示するものです。
(TOFSをした分だけずれて表示されるのではなく、TOFSで指定した座標の背景が表示される)
例えば「TOFS 3,-200,0」を2回記述しても「-400」の位置が表示されるわけではなく、「-200」の位置が2回表示される、ということです。
仕組みとしては「SPOFS」と同じですね。
自動でスクロールさせてみよう
それではグラディウスのような横スクロールシューティング風に右に進んでいくようにしてみましょう。
以下のように調整してください。
31~37行目 確認のために入れたWAIT、TOFSの部分を自動スクロール用に調整

実行結果はこちら(動画です)
やっていることは初心者講座03と同じですね。
初心者講座ではキャラクターを動かしていたところを今回は背景を動かしています。
(34行目の「X_SC=X_SC-3」)
そして35行目のIF文で条件を満たしたら(作成した画面数分スクロールしたら)スクロールを停止する(作成した画面数の座標で停止する)処理をしています。
自動でずっとスクロールさせてみよう(ループ)
40行目の「THEN」以降の部分を初期位置(X_SC=0)とすることで、再度最初からスクロールさせることができます。
「TOFS」で表示する座標を初期位置(X_SC=0)に戻しているので当たり前かもしれませんが、見た目的にはおかしな動作ですね^^;
これは「最後の背景」と「最初の背景」の見た目が異なるため発生しているので、それらを同じにすれば違和感なく無限ループにすることができます。
以下のように調整してください。
4画面目のマップデータを作る(1画面目の背景と同じもの)
これで3つの背景がループして見えるようになりました。
(実際には4画面作成していて、4画面目は1画面目と同じ背景)
次回は縦スクロールを作ってみましょう。
第5回は以上になります。
背景を作ろうのトップに戻る場合はこちら

コメント