忍者ブログ
プログラミング初心者のゲーム創作過程の記録です。ソースも載せるかも…
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


敵の出現のタイミングとかは普通タイムテーブルを書いてやるんだよね。
けど、むやみやたらとスクリプトを長くしたくはないし(読みづらくなるし)、全部プログラムの中に含めてしまうと拡張がしづらいと思うンよ。
だから、メインプログラムでは一般的規則性だけ記述して、他のファイルから読み込んでステージを構成するって形にしようかなと思います。
なので以前少し書いたreadStoryを少し変更してreadStageを。



普通タイムテーブルに全部書き込むタイプの情報は一番最初に全部配列に読み込んでしまえ!!
ってことで前回のreadStoryそのままでカンマ区切りでひたすらcsvファイルから読み込んで配列に格納します。

それでタイムテーブルの中身はこんな感じにしてしまえば。

*check_time_table//タイムテーブル管理
//next 次へ進む
    while enemytc(enemytcflg) = 0
    //敵生成
        enemyStatus(enemytcflg, ENEMY_SPR_COL) = enemySprNo
        es_set enemyStatus(enemytcflg, ENEMY_SPR_COL), enemyParameter(enemytcflg, 0, ENEMY_PAR_X_COL), enemyParameter(enemytcflg, 0, ENEMY_PAR_Y_COL), enemyParameter(enemytcflg, 0, ENEMY_PAR_CHA_COL)
        es_type enemyStatus(enemytcflg, ENEMY_SPR_COL), ENEMY_G
    //敵パラメーター読み込み
        enemyStatus(enemytcflg, ENEMY_VX_COL) = enemyParameter(enemytcflg, 0, ENEMY_PAR_VX_COL)
        enemyStatus(enemytcflg, ENEMY_VY_COL) = enemyParameter(enemytcflg, 0, ENEMY_PAR_VY_COL)
        enemyStatus(enemytcflg, ENEMY_AX_COL) = enemyParameter(enemytcflg, 0, ENEMY_PAR_AX_COL)
        enemyStatus(enemytcflg, ENEMY_AY_COL) = enemyParameter(enemytcflg, 0, ENEMY_PAR_AY_COL)
        enemyStatus(enemytcflg, ENEMY_THETA_COL) = enemyParameter(enemytcflg, 0, ENEMY_PAR_THETA_COL)
        enemyStatus(enemytcflg, ENEMY_ACTCNT_COL) = enemyParameter(enemytcflg, 0, ENEMY_PAR_ACTCNT_COL)
        enemytcflg++ : enemySprNo++
        if enemySprNo = BOSS_SPR_NO : enemySprNo = ENEMY_SPR_NO
    wend
//wait 敵が全滅すれば次へ進む
    if enemytc(enemytcflg) = -1{
        repeat enemytcflg
            flg = cnt
            if enemyStatus(cnt, ENEMY_SPR_COL) ! -1 : break
            flg = 0
        loop
        if flg = 0{
        //敵生成
            enemyStatus(enemytcflg, ENEMY_SPR_COL) = enemySprNo
            es_set enemyStatus(enemytcflg, ENEMY_SPR_COL), enemyParameter(enemytcflg, 0, ENEMY_PAR_X_COL), enemyParameter(enemytcflg, 0, ENEMY_PAR_Y_COL), enemyParameter(enemytcflg, 0, ENEMY_PAR_CHA_COL)
            es_type enemyStatus(enemytcflg, ENEMY_SPR_COL), ENEMY_G
        //敵パラメーター読み込み
            enemyStatus(enemytcflg, ENEMY_VX_COL) = enemyParameter(enemytcflg, 0, ENEMY_PAR_VX_COL)
            enemyStatus(enemytcflg, ENEMY_VY_COL) = enemyParameter(enemytcflg, 0, ENEMY_PAR_VY_COL)
            enemyStatus(enemytcflg, ENEMY_AX_COL) = enemyParameter(enemytcflg, 0, ENEMY_PAR_AX_COL)
            enemyStatus(enemytcflg, ENEMY_AY_COL) = enemyParameter(enemytcflg, 0, ENEMY_PAR_AY_COL)
            enemyStatus(enemytcflg, ENEMY_THETA_COL) = enemyParameter(enemytcflg, 0, ENEMY_PAR_THETA_COL)
            enemyStatus(enemytcflg, ENEMY_ACTCNT_COL) = enemyParameter(enemytcflg, 0, ENEMY_PAR_ACTCNT_COL)
            enemytcflg++ : enemySprNo++
            if enemySprNo = BOSS_SPR_NO : enemySprNo = ENEMY_SPR_NO
        }
//sleep 時間待ち 待ち時間が経過すれば次へ進む
    }else{
        enemytc(enemytcflg)--
    }

    return

まんまですね。
毎回呼び出し、時間を減らして0になれば敵を生成。
次敵の持つ情報から出現までのラグを記憶して…
繰り返し。

動きはどうしようかなと思ったんですが、それは敵の動作の雛型をいくつか用意してその雛型へのラベル型を記憶しておくことで対応しようと思いました。
まあそれはまた今度で。
PR

Comment
Name
Title
Mail
URL
Comment
Pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
[14] [13] [12] [11] [10] [9] [8] [7] [6] [5] [4
«  Back :   HOME   : Next  »
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
プロフィール
HN:
すず
性別:
男性
自己紹介:
プログラムもSTGも初心者です(^_^;)
昔ツインビーやゼビウス、グラディウスを少し遊んでました。最近は東方を遊んで弾幕ゲーにカルチャーショックをw
現在友達とまったり製作中...
カテゴリー
最新コメント
ブログ内検索
バーコード
忍者ブログ [PR]