ゲームのステージについて
HSP初心者 2013/8/2(Fri) 20:00:46|NO.56067
はじめまして。
初めて質問をさせていただきます。よろしくお願いいたします。
ゲームを作るときに、ステージ選択というものがありますよね。
もちろん1つ1つ内容が違いますが、あのような事はどうやってするのでしょうか。
情けないことに、
自分が調べた限りでは情報がでてきませんでした。
ちなみに自分はHSPをはじめて1〜2年程です。
質問の内容がわかりずらかったり、すでに同じような質問が出ていたら
すいません。(_ _)
改めてよろしくお願いいたします。
FunnyMaker 2013/8/2(Fri) 20:25:22|NO.56068
もちろん、すべてのステージのパターンは一つのプログラム
全体としては用意された状態になっています。
要は、ステージ選択画面でユーザーが何を選択したかによって
その後の動作を分ければよいです。
どのステージのパターンを起動するか、ということです。
最も単純な例としては、ステージA,B,Cを担うプログラムをそれぞれ
ラベルA,B,Cに書いたとすれば、ステージ選択画面でユーザーが
Aを選択すればラベルAに、Bを選択すればラベルBに、...
と言った具合にジャンプ先を分けるものがあります。
(’’ 2013/8/2(Fri) 20:41:52|NO.56071
自分の場合は、マップデータとかをファイルに保存してます
初めにプログラム内でちゃんとその処理を作れば、簡単にマップを増やせるので後がかなり楽になります
HSP初心者 2013/8/2(Fri) 20:51:44|NO.56072
FunnyMaker様
回答ありがとうございます!
ですが、新たな疑問が浮かびました。(しつこくてすいません)
選択してラベルAやラベルBにいったとき、キャラ移動などの処理もそれぞれやるんですか。
例えば↓
button "選択A",*jumpA
button "選択B",*jumpB
stop
*jumpA
//キャラ移動などの処理
goto *jumpA
*jumpB
//Aと同じキャラ移動などの処理
goto *jumpB
のような感じです。
単純な疑問だとは思いますが、
回答お願いします。
HSP初心者 2013/8/2(Fri) 20:54:08|NO.56073
(''様
回答ありがとうございます!
そういう方法もあったんですね!参考にさせていただきます。
FunnyMaker 2013/8/2(Fri) 21:17:10|NO.56075
>>HSP初心者さん
仰るとおりです。
まぁ、でも現実的ではありません。あくまで、"最も単純な例"ですので。
一番最初にトライする練習レベルのものです。
なんか、変な例を出してしまったようで、申し訳ないです。
ですが、ご質問で示されたような疑問が生じるということは、質問者さんはある程度
実力がおありだと思われますので、 ('' さんが示されたような方法を採るとよいと思います。
やってみると難しいところがあると思いますが、どうぞ頑張ってください。
ミント 2013/8/3(Sat) 07:44:19|NO.56091
実はこれ自分も気になってたんですよねー。
私の場合STGなので「イージ、ノーマル」とかの選択の出しわけができたらいいなぁーっとか思ったり。
けど、いきなしそれをやろうとすると事故るので、今は出しわけは作ってないですね。
>>選択してラベルAやラベルBにいったとき、キャラ移動などの処理もそれぞれやるんですか。
作るとしたらこんな感じになるのかな?
*自機移動
stick key,15
if I_JI = 1 : JIKI_Spd = 2 ;イージーというボタンが選択されたら
if N_MR = 1 : JIKI_Spd = 4 ;ノーマルというボタンが選択されたら
if key & 4 : JIKI_x + JIKI_Spd ;→の移動
if key & 1 : JIKI_x - JIKI_Spd ;←の移動
if key & 2 : JIKI_y - JIKI_Spd ;↑の移動
if key & 8 : JIKI_y + JIKI_Spd ;↓の移動
自機移動のソースだけど、数値を変えるだけなら条件式でもいいような気がする。
「if I_JI = 1」とかはボタンを押したときにフラグとして立てれば、押さない限り実行されないはずなので
多分この方法が簡単なのかな?まだ本格的に作ったことがないので、参考になるか謎である。
HSP初心者 2013/8/3(Sat) 11:03:49|NO.56099
FunnyMaker様
ぜんぜん変な例ではないですよ!
とても参考にしています。
ぼくは実力はあまりないですが、
頑張ってみます!
ミント様
なるほど、押されたボタンによって数値を変えるというようなやり方ですね。
この方法もいいですね(^^)
通りすがり 2013/8/3(Sat) 14:54:43|NO.56105
場面用変数作ると何かと楽になるかも?
この例では●の初期位置しか決めてませんが、もう既に出ているように実際は
敵の位置、ステージのどこに何があるかとか、そういった情報を全部変数に詰め込んで、
ゲーム処理でその変数を参照してゲームを進めていく感じです。
そんでもって(’’さんが仰ってる通り、可能ならcsvファイルかなんかに各ステージ情報を
詰めて、プログラムはそれを読み込むだけでいいみたいな感じになるといいですね。
サンプルつらつら書いてたらなんか長くなっちゃった。
//シーンとゲームモード
scene = 0
game_type = 0
repeat
//画面クリア
redraw 0
color 255, 255, 255 : boxf
//キー取得
stick key
if key & 128 : break
//キー取得
//カーソルキーはstickでも取得出来るけど
//長,短押し判定処理するの面倒だった
getkey left, 37
getkey up, 38
getkey right, 39
getkey down, 40
if(scene = 0){
//難易度選択シーン
if(key & 2) : game_type = (game_type + 1) \ 3
if(key & 8) : game_type = (game_type + 2) \ 3
if(key & 32){
scene = 1
if(game_type = 0){
//ゲーム0データ読み込み
//※敵の位置とかステージ情報とか
x = 100 : y = 100
} else : if(game_type = 1){
//ゲーム1データ読み込み
x = 300 : y = 200
} else : if(game_type = 2){
//ゲーム2データ読み込み
x = 600 : y = 400
}
}
pos 0, 0 : color 0, 0, 0
mes "選択しているゲームタイプは" + game_type + "です。エンターで開始します。"
} else : if(scene = 1){
//実際のゲームシーン
pos x, y : color 0, 0, 0
mes "●"
if left : x -= 5
if up : y -= 5
if right : x += 5
if down : y += 5
}
//描画とウェイト
redraw 1
wait 1
loop
HSP初心者 2013/8/6(Tue) 16:57:06|NO.56179
通りすがり様
このようなやり方もありますね!
解説ありがとうございます!
みなさんのおかげで解決しました!
どうもありがとうございます!
HSP初心者 2013/8/6(Tue) 16:58:28|NO.56180
協力してくださった皆様
ありがとうございました!