アルファベット
ランダムに襲ってくるアルファベットに対して、同じ文字を選んで打ち落としていくというゲームです。むかーしのゲーム電卓にこんなゲームがあったような気がします。
遊び方は簡単。画面左から敵の文字がだんだん右に移動していきます。一番右まで移動されると負けです。自分は右端の文字をカーソル上下で選択し、敵と同じ文字になったらAボタンを押して退治します。
プログラム
/********************************************************/
/* アプリケーションループ */
/********************************************************/
while( 1 ) {
/********************************************************/
/* 変数初期化 */
/********************************************************/
/* 文字 */
c = 'A';
/* 敵の文字 */
e = '-';
/* 敵の位置 */
x = 0;
/* 敵移動タイマー */
t = 0;
/* スコア */
s = 0;
/********************************************************/
/* スタート画面 */
/********************************************************/
/* 画面表示 */
cls();
locate( 3, 3 );
printstr( "GAME START" );
locate( 2, 8 );
printstr( "PUSH ANY KEY" );
/* キークリア待ち */
while( ( pad() & 0xff ) );
/* キー待ち */
while( !( pad() & 0xff ) );
/* キークリア待ち */
while( ( pad() & 0xff ) );
/********************************************************/
/* メインループ */
/********************************************************/
while( 1 ) {
/* 敵決定 */
if( e == '-' ) {
e = rnd( 26 ) + 'A';
t = 0;
}
/* 敵移動 */
if( t == 10 && e != '*' ) {
x++;
t = 0;
if( x == 15 )
break;
}
t++;
/* キー入力 */
p = pad();
if( ( p & PAD_UP ) && c < 'Z' )
c++;
if( ( p & PAD_DN ) && c > 'A' )
c--;
if( ( p & PAD_A ) && c == e ) {
s += 10;
e = '-';
x = 0;
}
/* 画面表示 */
cls();
locate( 0, 0 );
siprintf( "SCORE %d", s );
if( e != '-' ) {
locate( x, 3 );
siprintf( "%c", e );
}
locate( 15, 3 );
siprintf( "%c", c );
/* ウェイト */
wait( 100 );
}
/********************************************************/
/* ゲームオーバー */
/********************************************************/
/* 画面表示 */
cls();
locate( 4, 3 );
printstr( "GAMEOVER" );
locate( 2, 5 );
siprintf( "SCORE %d", s );
locate( 2, 8 );
printstr( "PUSH ANY KEY" );
/* キークリア待ち */
while( ( pad() & 0xff ) );
/* キー待ち */
while( !( pad() & 0xff ) );
}
ダウンロード
改造案
敵が画面の左にいるほど点数が高くなるようにすれば、ゲーム性が上がるでしょう。
敵の文字はランダムですが、乱数の系列を初期化していないので、毎回同じ文字が出てきます。これをランダムにした方がいいでしょう。
時間が経つと、段々敵の速度が速くなると面白いかもしれません。