射的
縁日でもよくある射的。照準が左から動いてきますから、的の中央に重なる時を狙ってAボタンを押します。的の中央に近いほど、得点が高くなります。
プログラム
/* 文字優先に設定 */
dispmode( 0, 1, 1, 1, 0 );
/********************************************************/
/* アプリケーションループ */
/********************************************************/
while( 1 ) {
/********************************************************/
/* スタート画面 */
/********************************************************/
/* 画面表示 */
fill( 0, 0, 127, 87, 0 );
cls();
locate( 3, 3 );
printstr( "GAME START" );
locate( 2, 8 );
printstr( "PUSH ANY KEY" );
/* キークリア待ち */
while( ( pad() & 0xff ) );
/* キー待ち */
while( !( pad() & 0xff ) );
/* キークリア待ち */
while( ( pad() & 0xff ) );
/********************************************************/
/* メインループ */
/********************************************************/
for( x = 0; x < 128; x += 2 ) {
cls();
/* 的描画 */
fill( 0, 0, 127, 87, 0 );
circle( 64, 50, 4, 256, 3 );
circle( 64, 50, 8, 256, 3 );
circle( 64, 50, 12, 256, 3 );
circle( 64, 50, 16, 256, 3 );
circle( 64, 50, 20, 256, 3 );
line( 40, 26, 88, 26, 3 );
line( 40, 26, 40, 80, 3 );
line( 88, 26, 88, 80, 3 );
/* カーソル描画 */
line( x, 45, x, 55, 1 );
line( x - 5, 50, x + 5, 50, 1 );
/* パッド判定 */
p = pad();
if( p & PAD_A )
break;
}
/********************************************************/
/* 結果表示 */
/********************************************************/
/* スコア計算 */
if( x > 44 && x < 64 )
s = 20 - ( 64 - x );
else if( x >= 64 && x < 84 )
s = 20 - ( x - 64 );
else
s = 0;
/* 画面表示 */
cls();
locate( 2, 1 );
siprintf( "SCORE %d", s );
locate( 2, 9 );
printstr( "PUSH ANY KEY" );
/* キークリア待ち */
while( ( pad() & 0xff ) );
/* キー待ち */
while( !( pad() & 0xff ) );
}
ダウンロード
改良案
毎回的を再描画しているため画面がちらつきます。照準をスプライトにしてしまえば的は最初に1回書くだけでよくなりますので、そのように修正してみましょう。
撃ったらやはりバンという音がしないと面白くないですよね。サウンドを鳴らしてみましょう。
的をもっとたくさん出したり、一瞬しか表示されない的にしたりすれば、もっとゲーム性が高くなるでしょう。