おめでとう画面からタイトル画面の遷移

クリア画面までは遷移するようになったので、今度はクリア画面から、タイトル画面への遷移を作る。
これは簡単だよね。
クリア画面が出ている間に、画面をクリックしたらタイトル画面へ遷移すればよい。
んで、ついでにゲームのいろんなものを初期化してもう一度ゲームができるようにする。
これは、途中で作ったInitGameがやってくれるから呼び出すといいよ。
んで、InitGameにはボードを渡さなければいけないので、ClearUpdateの引数がvoidだったのを変更してBoard&を渡すようにする。

Listing. 1: クリア画面からタイトルへの遷移
//ボードの初期化を入れるために引数を追加してあるので注意
void ClearUpdate(Board& _board)
{
	if (MouseL.down()) {
		stateをタイトル画面のステートに変更;
		ゲームの初期化を呼び出す;
	}
 
}

ていうかここまで来て気づいたけど、乱数の初期化するの忘れてた。。。
なんかメインの適当なところで、初期化しといてください。
同じ問題しか出なくなっちゃいます。(そもそも、初めに動かせるところ2か所しかないから、10回程度だと同じのが何回も出る可能性が結構高い。。。)

void Main()
{
	//タイトル画面とスタートボタンのフォント(ンでそのままほかのシーンに使いまわし)
	FontAsset::Register(U"TITLE_FONT", FontMethod::SDF, 40, Typeface::Bold);
	FontAsset::Register(U"BUTTON_FONT", FontMethod::SDF, 20, Typeface::Mplus_Heavy);
	FontAsset::Register(U"TILE_FONT", FontMethod::SDF, 80, Typeface::Bold);
	AudioAsset::Register(U"CLEAR_SND", U"nc245412.wav");
	//Window::Resize(WSIZE);->InitGameへ
 
	srand(static_cast<unsigned int>(time(nullptr)));
	Board myboard;
	InitGame(myboard);
 
	//std::swap(myboard.tile[2][2], myboard.tile[3][3]);
 
	while (System::Update())
	{
		switch (st

実行結果

Fig. 1: クリアしてタイトル画面へ

これでゲームとして一周することはできたね。
あとは、
まずやってほしいことは、関数とヘッダファイルの分割です。

  • Main.cpp—Main,○○Update, ○○Draw
  • board.h, board.cpp ボードに関する関数の宣言と定義

追加要素として、

  • BGMやSEの追加
  • スライドのアニメーション
  • タイトル画面や、おめでとう画面のエフェクト追加
  • クリア時にすぐに画面が遷移してしまうので、ファンファーレなどを鳴らしてから移行
  • クリア画面でマウスをクリックするとすぐに移行してしまうので、少し画面見ないと移行しないように工夫
  • レベル設定の追加
  • などなど

改良できる点はたくさんあります。
いろいろやってみよう!

まず、小さいゲームをゲームの形になるまで作って、それを改良していく。それを繰り返していくことが大事だよ!

  • game-engineer/classes/2023/something-else/summertime-special-cource/slidepuzle-siv3d-7.txt
  • 最終更新: 3年前
  • by root