RPGなどでフィールドのある場所までいくと画面が暗転して隣のフィールドに移動しますよね
これの仕組みとやり方が分からない為、メニュー画面もタイトル画面も表示できません
常識的な質問すぎるのは分かっていますがまだCをさわったばかりなので検討がつきません
お優しい画面を暗転させて全く違う画面を表示させるという方法を教えていただきたけませんでしょうか
RPGなどのフィールド移動について
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: RPGなどのフィールド移動について
このサイトのコンテンツの「C言語~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/
は一通り参考にされましたか?
この中の
33. 選択画面の作り方。
34. main関数の書き方。
は参考になると思います。
状態遷移と言う考え方を使っています。
RPGのフィールド間の移動になると更に色々とややこしい事を考えないと行けませんので、まずメニューの切り替えができるようになってください。
手前味噌ですが、私がRPG作成の講座も連載していますので勉強が進んだら参考にしてみてください。
http://dixq.net/forum/blog.php?u=114&sd=a&c=2
使われているC言語の文法やアルゴリズムの難易度が高いので初心者には厳しいかと思います。
[追記]
RPG講座でフィールド間の移動で暗転(フェードアウト・イン)は少し難しいのでわざと搭載していません。
ただ、この講座を理解できる人が追加することはさほどの難易度では無いと思います。
http://dixq.net/g/
は一通り参考にされましたか?
この中の
33. 選択画面の作り方。
34. main関数の書き方。
は参考になると思います。
状態遷移と言う考え方を使っています。
RPGのフィールド間の移動になると更に色々とややこしい事を考えないと行けませんので、まずメニューの切り替えができるようになってください。
手前味噌ですが、私がRPG作成の講座も連載していますので勉強が進んだら参考にしてみてください。
http://dixq.net/forum/blog.php?u=114&sd=a&c=2
使われているC言語の文法やアルゴリズムの難易度が高いので初心者には厳しいかと思います。
[追記]
RPG講座でフィールド間の移動で暗転(フェードアウト・イン)は少し難しいのでわざと搭載していません。
ただ、この講座を理解できる人が追加することはさほどの難易度では無いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: RPGなどのフィールド移動について
こんにちは
簡単な場合分けを書かせていただきます。
これは簡単なシーン遷移です。
switchで場合をわけてNumStateの番号を変えることでシーンを変えます。
関数ポインタやclassなどを使うともっと良い遷移は出来ますが、最初のうちはこれで
十分だと思います。
また、暗転の実装方法ですが
フィールドなどを描画している部分より手前(つまり処理の流れでいうとフィールド描画より後)
に透明な黒の四角形を描画して必要ならばその透過度を上げていって暗くなったら(透過度等々分からない場合はGoogle先生に)
次のシーンに移るというやり方をすればよいかと思います。
DxLibなどを使っている場合はSetBrightなどでもできるのかな?
DxLibはあまり使った事がないので、ワカリマセン。
ただ表示できないなどはそれ以前の部分が出来ていないかと思われますので、
もうしばらく学んでから取り組んでいくとよいかもしれません。
ワタシは触れたことがないので分からないのですが、四聖龍神録や
softyaさんが紹介なされているページなどを見ると良いかと思います。
簡単な場合分けを書かせていただきます。
/* グローバル変数部分 */
enum //enumとは番号を文字に置き換える列挙型という特殊な型です
{
TITLE,
GAME,
END
};
int NumState=TITLE; //現在選んでいるシーンの番号(最初のシーンを最初に代入)
/* 遷移用関数部分 */
void GameLoop(void)//処理のループ部分に入れる。
{
switch(NumState)//NumStateの値によって処理の流れを変える
{
case TITLE:
/*~ タイトルの処理群 ~ */
/*ここにタイトルでしたい処理を入れてください*/
break;
case GAME:
/*~ ゲームの処理群 ~ */
break;
case END:
/*~ 終了の処理群 ~ */
break;
default:
/*~ エラー ~ */
break;
}
}
switchで場合をわけてNumStateの番号を変えることでシーンを変えます。
関数ポインタやclassなどを使うともっと良い遷移は出来ますが、最初のうちはこれで
十分だと思います。
また、暗転の実装方法ですが
フィールドなどを描画している部分より手前(つまり処理の流れでいうとフィールド描画より後)
に透明な黒の四角形を描画して必要ならばその透過度を上げていって暗くなったら(透過度等々分からない場合はGoogle先生に)
次のシーンに移るというやり方をすればよいかと思います。
DxLibなどを使っている場合はSetBrightなどでもできるのかな?
DxLibはあまり使った事がないので、ワカリマセン。
ただ表示できないなどはそれ以前の部分が出来ていないかと思われますので、
もうしばらく学んでから取り組んでいくとよいかもしれません。
ワタシは触れたことがないので分からないのですが、四聖龍神録や
softyaさんが紹介なされているページなどを見ると良いかと思います。