CGを消す

Last-modified: 2007-12-08 (土) 03:23:51

シナリオ中にキャラクター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;」が実行されると、関数内のそれ以降のコードは実行されず、呼び出し元に戻ります。

実行画面

tt15_001.jpg