シナリオ中にキャラクターCGを消してみましょう。
シナリオ中にキャラクターCGを消す
ソース
int g_nSp背景; int g_nSpキャラ; int g_nSpメッセージ枠;
void game_main(void) { 初期化();
for (;;) { イベント(); }
}
void 初期化(void) { g_nSp背景 = SP_GET_UNUSE_NUM(); SP_SET_CG(g_nSp背景, 13);
g_nSpキャラ = SP_GET_UNUSE_NUM(); SP_SET_CG(g_nSpキャラ, 12);
g_nSpメッセージ枠 = SP_GET_UNUSE_NUM(); SP_SET_CG(g_nSpメッセージ枠, 14); SP_SET_POS(g_nSpメッセージ枠, 0, 359); SP_SET_TEXT_POS(g_nSpメッセージ枠, 16, 24); SP_SET_TEXT_HOME(g_nSpメッセージ枠, 16, 24);
MES(g_nSpメッセージ枠); MES_SET_SIZE(32); MES_SET_WAIT(100);
}
void キャラ変更(int nCG) { if (nCG == 0) { // スプライトを削除する SP_DEL(g_nSpキャラ); g_nSpキャラ = 0; return; }
if (g_nSpキャラ == 0) { // 新しいスプライト番号を取得する g_nSpキャラ = SP_GET_UNUSE_NUM(); }
SP_SET_CG(g_nSpキャラ, nCG);
}
void 画面更新(int nNum = 1) { SACT_EFFECT(nNum, 1000, true);
}
void イベント(void) { '消えるよー' A;
キャラ変更(0); 画面更新();
'現れるよー' A;
キャラ変更(12); 画面更新();
'現れたー' A;
}
解説
34~50行目
void キャラ変更(int nCG) { if (nCG == 0) { // スプライトを削除する SP_DEL(g_nSpキャラ); g_nSpキャラ = 0; return; }
if (g_nSpキャラ == 0) { // 新しいスプライト番号を取得する g_nSpキャラ = SP_GET_UNUSE_NUM(); }
SP_SET_CG(g_nSpキャラ, nCG);
}
引数に0が設定されるとスプライトを削除するようにしています。このコードで新しく出てきたもので、まず「//」というのがありますが、これはコメントと呼ばれるものです。「//」からその行末まではコードと見なされないので、上記のようにコードの説明を書いたりします。
SP_DEL関数というのがありますが、これはスプライトを削除する関数です。
次に「return;」というのがありますが、これは関数呼び出し元に戻る機能です。「return;」が実行されると、関数内のそれ以降のコードは実行されず、呼び出し元に戻ります。