HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0413
LD複数ステージ制での効率的な手法4未解決


LD

リンク

2014/4/13(Sun) 08:55:29|NO.61533

現在シューティングゲームを作っており、2ステージ制にしようと考えているのですが、単一ステージを念頭にしたプログラミングの経験しかありません。
プログラムは以下のようにしようと考えています(まだ実際は1ステージ分もできていません)。



(下準備) *main(描画関係等は省略) gosub *自機 gosub *敵出現 gosub *敵処理 goto *main *自機  操作や攻撃 *敵出現  特定の時間毎に敵スプライトが出現  それぞれの敵がどの種類の敵(敵1,敵2,敵3)であるかを決定(ランダムではなく上の時間によって固定)  敵の種類毎に固有の耐久力などを設定 *敵処理  if 敵タイプ = 1 : gosub *敵1    if 敵タイプ = 2 : gosub *敵2  if 敵タイプ = 3 : gosub *敵3   被弾・消滅処理 *敵1  動き方の設定  gosub *攻撃A   *敵2  動き方の設定  gosub *攻撃B *敵3  動き方の設定  gosub *攻撃C *攻撃A  弾の撃ち方の設定 *攻撃B  弾の撃ち方の設定 *攻撃C  弾の撃ち方の設定

敵が増えてきたときに攻撃パターンを使い回せるように、敵の動きと攻撃を分けています。

ここで、ステージ1には敵1と敵2を、ステージ2には敵1と敵3を出そうとした場合、どのように組むのが効率的でしょうか。
ステージ終了後にメニュー画面に戻るようにしたいと思います。
私なりに考えてみたのがこれです。



(自機や弾の画像の読み込みを含むゲーム全体の下準備) *menu if 特定の操作1 : stage = 1 : goto *S1 if 特定の操作2 : stage = 2 : goto *S2 goto *menu *S1  敵1・2の画像の読み込み  goto *main *S2  敵1・3の画像の読み込み goto *main *main(描画関係等は省略) gosub *自機 gosub *敵出現 gosub *敵処理 gosub *ステージ終了処理 goto *main *自機  操作や攻撃 *敵出現  stageの値と特定の時間の組み合わせ毎に敵スプライトが出現  それぞれの敵がどの種類の敵(敵1,敵2,敵3)であるかを決定(ランダムではなくstageの値と上の時間によって固定)  敵の種類毎に固有の耐久力などを設定 *敵処理  if 敵タイプ = 1 : gosub *敵1    if 敵タイプ = 2 : gosub *敵2  if 敵タイプ = 3 : gosub *敵3   被弾・消滅処理 *ステージ終了処理  条件を満たせば変数の初期化などをして*menuへ *敵1  動き方の設定  gosub *攻撃A   *敵2  動き方の設定  gosub *攻撃B *敵3  動き方の設定  gosub *攻撃C *攻撃A  弾の撃ち方の設定 *攻撃B  弾の撃ち方の設定 *攻撃C  弾の撃ち方の設定



この記事に返信する


KA

リンク

2014/4/13(Sun) 10:28:46|NO.61534

取りあえず1ステージ分を完成させてから考えましょう。
そうすれば基本的なバグなどは見つかります。



YSR

リンク

2014/4/13(Sun) 10:32:58|NO.61535

個人的には敵やステージごとにサブルーチンを分けるのはどうかと思われますが、
(全て統一的なルーチンで処理できた方がコード的には良い)
例えば「Stage1:1,2\nStage2:1,3」みたいなファイルを用意して読み込み、
配列等で「このステージにこの敵は出せるかのフラグ」の一覧表を用意して、
ステージ毎に出現する敵を切り替えればいいのではないでしょうか。



LD

リンク

2014/4/14(Mon) 03:56:00|NO.61545

>KAさん
確かにそうですね・・・。

>YSRさん
大変申し訳ありません。私のレベルが低過ぎて何も理解することが敵いませんでした。



YSR

リンク

2014/4/14(Mon) 08:57:05|NO.61546

>NO.61545
それほど難しいことは言っていないと思うのですが……?
まあ、まずはKAさんの言う通り、1ステージ分だけでも完成させるべきです。
折角「使いまわすためのルーチン」を書いたとしても、実際使わなければ意味が無いですからね。



ONION software Copyright 1997-2021(c) All rights reserved.