プログラミング初心者のゲーム創作過程の記録です。ソースも載せるかも…
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
敵の出現のタイミングとかは普通タイムテーブルを書いてやるんだよね。
けど、むやみやたらとスクリプトを長くしたくはないし(読みづらくなるし)、全部プログラムの中に含めてしまうと拡張がしづらいと思うンよ。
だから、メインプログラムでは一般的規則性だけ記述して、他のファイルから読み込んでステージを構成するって形にしようかなと思います。
なので以前少し書いたreadStoryを少し変更してreadStageを。
けど、むやみやたらとスクリプトを長くしたくはないし(読みづらくなるし)、全部プログラムの中に含めてしまうと拡張がしづらいと思うンよ。
だから、メインプログラムでは一般的規則性だけ記述して、他のファイルから読み込んでステージを構成するって形にしようかなと思います。
なので以前少し書いた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