====== おめでとう画面からタイトル画面の遷移 ====== クリア画面までは遷移するようになったので、今度はクリア画面から、タイトル画面への遷移を作る。\\ これは簡単だよね。\\ クリア画面が出ている間に、画面をクリックしたらタイトル画面へ遷移すればよい。\\ んで、ついでにゲームのいろんなものを初期化してもう一度ゲームができるようにする。\\ これは、途中で作ったInitGameがやってくれるから呼び出すといいよ。\\ んで、InitGameにはボードを渡さなければいけないので、ClearUpdateの引数がvoidだったのを変更してBoard&を渡すようにする。\\ クリア画面からタイトルへの遷移 //ボードの初期化を入れるために引数を追加してあるので注意 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(time(nullptr))); Board myboard; InitGame(myboard); //std::swap(myboard.tile[2][2], myboard.tile[3][3]); while (System::Update()) { switch (st === 実行結果 ===
クリアしてタイトル画面へ {{ :game-engineer:classes:2023:something-else:summertime-special-cource:siv3d_app_debug_build_d3d11_144_fps_f_512x512_v_512x512_s_512x512_2023-08-06_14-52-26.mp4 |}}
これでゲームとして一周することはできたね。\\ あとは、\\ まずやってほしいことは、関数とヘッダファイルの分割です。\\ * Main.cpp---Main,○○Update, ○○Draw * board.h, board.cpp ボードに関する関数の宣言と定義 追加要素として、\\ * BGMやSEの追加 * スライドのアニメーション * タイトル画面や、おめでとう画面のエフェクト追加 * クリア時にすぐに画面が遷移してしまうので、ファンファーレなどを鳴らしてから移行 * クリア画面でマウスをクリックするとすぐに移行してしまうので、少し画面見ないと移行しないように工夫 * レベル設定の追加 * などなど 改良できる点はたくさんあります。\\ いろいろやってみよう!\\ まず、小さいゲームをゲームの形になるまで作って、それを改良していく。それを繰り返していくことが大事だよ!\\