アルファベット

2003/6/14作成

アルファベット

ランダムに襲ってくるアルファベットに対して、同じ文字を選んで打ち落としていくというゲームです。むかーしのゲーム電卓にこんなゲームがあったような気がします。

遊び方は簡単。画面左から敵の文字がだんだん右に移動していきます。一番右まで移動されると負けです。自分は右端の文字をカーソル上下で選択し、敵と同じ文字になったら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 ) );
}

ダウンロード

alphabet.zip

改造案

敵が画面の左にいるほど点数が高くなるようにすれば、ゲーム性が上がるでしょう。

敵の文字はランダムですが、乱数の系列を初期化していないので、毎回同じ文字が出てきます。これをランダムにした方がいいでしょう。

時間が経つと、段々敵の速度が速くなると面白いかもしれません。