一文字表示するごとに画面を振動させてみたい

Last-modified: 2007-10-15 (月) 22:49:30

概要

 SACT_QUAKE_SCREEN? を使い、一文字メッセージウインドウに表示するごとに画面を振動させる関数を作ってみます。
 文字列を一文字ずつ表示させながら処理する場合、xxx(変数名).GetPartを使います。
 これは文字列の文字を部分的に取得する文字列用関数です。文字列は0番目からスタートします。
 文字列を最後まで読み込んだら関数から抜けるように設定してあるため、この関数ではxxx..Length()も使用しています。
 これは文字列が 1 ~何番目まで長さがあるか、文字数を取得する文字列用関数です。
 

void STRING_THREAD(string szX)
// 引数は表示させる文字列
{
  string szS;
  int nForLoop = 0;
  for(;;){
    szS = szX.GetPart(nForLoop, 1);         //0番目の一文字
    S(szS);B;                               //その文字を表示して
    SACT_QUAKE_SCREEN(0, 100, 2000, true);  //クエイク
    ++nForLoop;
    if(nForLoop == szX.Length()){return;}
  }
}

 作ったら動かしてみましょう。

void game_main(void)
{
  'うごかすよー。'A;
  STRING_THREAD("おきろー");A;
}

解説

  1. 0 文字目の'お'を読み込み、 SB で表示します。そして画面を振動させます。
    nForLoop を +1 し、for の先頭に戻ります。
  2. 1 文字目の'き'を読み込み、SBで表示します。そして画面を振動させます。
    nForLoop を +1 し、for の先頭に戻ります。
  3. 3 文字目の'ー'を読みこみ表示して振動させ、nForLoop を +1 した時点で、nForLoop の値は 4 。
    これで"おきろー"の文字数と等しくなるため、関数からリターンします。