====== おめでとう画面からタイトル画面の遷移 ======
クリア画面までは遷移するようになったので、今度はクリア画面から、タイトル画面への遷移を作る。\\
これは簡単だよね。\\
クリア画面が出ている間に、画面をクリックしたらタイトル画面へ遷移すればよい。\\
んで、ついでにゲームのいろんなものを初期化してもう一度ゲームができるようにする。\\
これは、途中で作った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の追加
* スライドのアニメーション
* タイトル画面や、おめでとう画面のエフェクト追加
* クリア時にすぐに画面が遷移してしまうので、ファンファーレなどを鳴らしてから移行
* クリア画面でマウスをクリックするとすぐに移行してしまうので、少し画面見ないと移行しないように工夫
* レベル設定の追加
* などなど
改良できる点はたくさんあります。\\
いろいろやってみよう!\\
まず、小さいゲームをゲームの形になるまで作って、それを改良していく。それを繰り返していくことが大事だよ!\\