« [解剖記]これがサンプルのソースだっ | トップページ | [解剖記]自機移動と弾の発射 »

[解剖記]プログラムの構造

部分部分の解説に移る前に、プログラムの構造の基本的な事をお話しておきましょう。

鑑賞系のものを除けば、ほとんどのプログラムは次のような流れで成り立っています。

ユーザーからの入力 その結果がどうなったかを判定 画面に表示(音声の出力)

この一連の流れを、シューティングゲームのようなリアルタイムで進行するプログラムの場合、秒間に何十回というすさまじい速さで更新していく事になりま す。よく「FPS」というのが表示されているのを見かけますが、これは「Frame Par Second」の略で、要するに「1秒間に何コマ書き換えをしているか?」という数字になります。一般的なTVアニメの場合、秒間16コマの書き換えを 行っています。このサンプルゲームの場合動作環境にもよりけりですが、秒間30コマ(30FPS)の書き換えを行うようになってます。この書き換え数が大 きければ大きいほど、滑らかな動きを表現する事ができます。

その一連の流れを制御しているのが、メインルーチンになります。


;■ メインルーチン
*main
redraw 2
color bgcolor,0,0 : bgcolor=0
boxf 0,0,640,480

gosub *message ;ゲーム情報
gosub *haikei ;星の描写
gosub *jikimove ;自機移動
gosub *weapon ;自機弾
if frame\(25-level)=0 :
gosub *enemyborn ;敵生成
gosub *enemymove ;敵移動
gosub *tekitamamove ;敵弾移動
if pat&128>0 :
gosub *pausegame ;ポーズ
getkey returntop,121 : if returntop=1 : end ;強制終了(F10)
if mf<1 : mxv=0 : myv=0 : gameovertime++ :
gosub *bomb
;↑ゲームオーバー寸前
if gameovertime>100 : goto *gameover ;ゲームオーバー
await 30
redraw 1

frame++
level=frame/500+1
if level>20 : level=20

goto *main

見て頂ければ分かると思いますが、このメインルーチンでは、画面の消去・再表示(赤い部分)以外は、ほとんどが gosub 命令でサブルーチンにジャンプするようになってます。ポイントとなるのは「どういう順番で画面に表示するか?」で す。例えば自機の移動より後に星の描写を行うと、自機の手前を星が流れるようになってしまいます。敵の移動より前に敵弾の移動を行うと、敵の影に弾が隠れ て見えないようになってしまいます。様々な処理をサブルーチン化するのは、デバッグをし易くする(どの部分でエラーになったのかがわかりやすい)というの と、画面表示の順番を簡単に制御できるという事が大きいと思います。

ちなみにこのメインルーチンでは、ダメージを受けた場合に画面を赤くする(bgcolor変数で制御)処理と、時間経過(frame変数)によってレベルが上がっていく(level変数)という処理F10を押すと強制終了するという処理も行っています。

« [解剖記]これがサンプルのソースだっ | トップページ | [解剖記]自機移動と弾の発射 »

2.解剖記」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67538/57445605

この記事へのトラックバック一覧です: [解剖記]プログラムの構造:

« [解剖記]これがサンプルのソースだっ | トップページ | [解剖記]自機移動と弾の発射 »