Posts Issued on June 9, 2021

オープニングアニメーション

posted by sakurai on June 9, 2021 #416

Youtube

この動画を観察すると、オープニングアニメーションの際に文字が一文字ずつ表示されているので、これを実装します。文字列は3つの部分から構成されています。

  • "PLAY SPACE INVADERS" --- 一文字ずつゆっくりと表示
  • "*SCORE ADVANCE TABLE *..." --- 一瞬で表示
  • "=? MYSTERY..." --- 一文字ずつゆっくりと表示

これを3つのカタマリとして、3つの表示ルーチンで表示します。最初と最後のルーチンは1文字表示するたびに8/60 sec(=133.3 msec)のウエイトを入れています。文字表示の間にsbuttonを見ているのは、スタートボタンにより、いつでもゲームを開始できるように割り込みを入れるためです。

function Stmt stringS1; // PLAY SPACE INVADERS
   return (seq
      for (str_idx <= 0; str_idx < 19; str_idx <=  str_idx + 1) seq
         copyArea(s1sx[str_idx], s1sy[str_idx], s1dx[str_idx], s1dy[str_idx], s1w[str_idx], s1h[str_idx]);
         wait_timer(`TICK_WAIT8);
         if (sbutton) break;
      endseq
   endseq);
endfunction

 function Stmt stringS2; // *SCORE ADVANCE TABLE* ...
    return (seq
      for (str_idx <= 0; str_idx < 23; str_idx <=  str_idx + 1) seq
         copyArea(s2sx[str_idx], s2sy[str_idx], s2dx[str_idx], s2dy[str_idx], s2w[str_idx], s2h[str_idx]);
      endseq
   endseq);
endfunction

function Stmt stringS3; // =? MYSTERY ...
   return (seq
      for (str_idx <= 0; str_idx < 40; str_idx <=  str_idx + 1) seq
         copyArea(s3sx[str_idx], s3sy[str_idx], s3dx[str_idx], s3dy[str_idx], s3w[str_idx], s3h[str_idx]);
         wait_timer(`TICK_WAIT8);
         if (sbutton) break;
      endseq
   endseq);
endfunction

左矢前のブログ 次のブログ右矢