バウンド

2003/6/14作成

バウンド

跳ね回るボールをどれだけ長く避けていられるかというゲーム。

遊び方は、画面を跳ねているボールに当らないように自分(\)をひたすらカーソルキーで避けまくります。

プログラム


/********************************************************/
/*  アプリケーションループ                              */
/********************************************************/

while( 1 ) {

    /********************************************************/
    /*  変数初期化                                          */
    /********************************************************/

    /*  キャラクタの位置    */
    x = 8;
    y = 5;
    /*  ボールの位置    */
    a = 2;
    b = 1;
    /*  ボールの方向    */
    c = 1;
    d = 1;
    /*  スコア  */
    s = 0;


    /********************************************************/
    /*  スタート画面                                        */
    /********************************************************/

    /*  画面表示    */
    cls();
    locate( 3, 3 );
    printstr( "GAME START" );
    locate( 2, 8 );
    printstr( "PUSH ANY KEY" );

    /*  キークリア待ち  */
    while( ( pad() & 0xff ) );

    /*  キー待ち    */
    while( !( pad() & 0xff ) );


    /********************************************************/
    /*  メインループ                                        */
    /********************************************************/

    while( 1 ) {
        /*  キャラクタの位置    */
        p = pad();
        if( ( p & PAD_RI ) && x < 15 )
            x++;
        if( ( p & PAD_LF ) && x > 0 )
            x--;
        if( ( p & PAD_UP ) && y > 1 )
            y--;
        if( ( p & PAD_DN ) && y < 10 )
            y++;

        /*  ボールの位置    */
        a += c;
        b += d;
        if( a == 0 )    c = 1;
        if( a == 15 )   c = -1;
        if( b == 1 )    d = 1;
        if( b == 10 )   d = -1;

        /*  画面表示    */
        cls();
        locate( 0, 0 );
        siprintf( "SCORE %d", s );
        locate( x, y );
        printstr( "\\" );
        locate( a, b );
        printstr( "O" );

        /*  当たり判定  */
        if( x == a && y == b )
            break;

        /*  スコアアップ    */
        s++;

        /*  ウェイト    */
        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 ) );
}

ダウンロード

bound.zip

改造案

画面中を跳ね回るボールだけれど、実は通るルートが決まっていて安全地帯が存在します。安全地帯があるとゲームが面白くありませんので潰したいのですが、どうすればいいでしょうか。

時間が経つとともにボールの速度が上がるようにしたら、よりゲームらしくなるでしょう。

ボールが一つだと避けるのが簡単なので、同時に複数のボールが跳ねるようにしたら難易度を上げることが出来ます。