![]() |
9 |
オープニングアニメーション |
![]() |
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