Top >C言語、Java 練習プログラム集

6. 月面軟着陸ゲーム

■ C 言語による作成例

#include <stdio.h>

void main()
{
    int    reply;

    printf( "月着陸船を、無事、月面に軟着陸させてください。\n" );
    printf( "月の重力は地球の約1/6です。1秒毎にエンジンを燃焼させて落下速度を調整してください。" );
    printf( "燃料を1ユニット燃焼すると0.1m/s落下速度が減少します。1回で最大50ユニットまで燃焼できます。\n" );
    printf( "月面に1.0m/s以下の速度で到達すると着陸成功です。\n" );
    printf( "-----------------------------------------------------------\n" );

    do{
        double  altitude = 100.0;    // 高度
        double  velocity = 0.0;      // 速度
        int     fuel = 250;          // 燃料

        while( altitude > 0.0 ){
            int max_fuel = 50;    // 最大燃焼ユニット
            int i;

            for( i = 0 ; i < (int)( altitude / 2.0 ) ; i++ )
                printf( " " );

            printf( ">□\n" );

            printf( "高度:%fm 速度:%fm/s 残燃料:%d\n", altitude, velocity, fuel );

            if( fuel < max_fuel )    // 残燃料が少ない場合
                max_fuel = fuel;

            do{
                printf( "何ユニット燃焼しますか?(0~%d)", max_fuel );
                scanf( "%d", &reply );
            }while( ! ( 0 <= reply && reply <= max_fuel ) );

            // 速度の計算
            velocity += 1.62;    // 重力加速度
            velocity -= ( (double)reply * 0.1 );    // 燃焼

            // 残燃料の計算
            fuel -= reply;

            // 高度の計算
            altitude -= velocity;
        }

        if( velocity > 1.0 )
            printf( "残念! 着陸船は速度%fm/sで月面に激突しました。\n", velocity );
        else
            printf( "おめでとう! 無事、月面に軟着陸できました。\n" );

        printf( "もう一度やりますか?(Yes:1 No:0)" );
        scanf( "%d", &reply );

    }while( reply != 0 );
}
PAPER BOWL
NEZEN