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