射的

2003/8/2作成

射的

縁日でもよくある射的。照準が左から動いてきますから、的の中央に重なる時を狙って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 ) );
}

ダウンロード

shoot.zip

改良案

毎回的を再描画しているため画面がちらつきます。照準をスプライトにしてしまえば的は最初に1回書くだけでよくなりますので、そのように修正してみましょう。

撃ったらやはりバンという音がしないと面白くないですよね。サウンドを鳴らしてみましょう。

的をもっとたくさん出したり、一瞬しか表示されない的にしたりすれば、もっとゲーム性が高くなるでしょう。