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

6. 月面軟着陸ゲーム

■ Java による作成例

import java.io.*;

class Program06
{
    /**
    * main
    */

    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(
                                new InputStreamReader(System.in));

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

        int    reply;

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

            while (altitude > 0.0){
                for ( int i = 0; i < (int)(altitude / 2.0); i++)
                    System.out.print(" ");

                System.out.print(">□\n");

                System.out.print("高度:" + altitude
                                + "m 速度:" + velocity
                                + "m/s 残燃料:" + fuel + "\n");

                int max_fuel = 50;      // 最大燃焼ユニット

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

                do
                {
                    System.out.print(
                            "何ユニット燃焼しますか?(0~"
                            + max_fuel + ")");
                    reply = Integer.parseInt(br.readLine());
                } while (! (0 <= reply && reply <= max_fuel));

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

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

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

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

            System.out.print("もう一度やりますか?(Yes:1 No:0)");
            reply = Integer.parseInt(br.readLine());
        } while (reply != 0);
    }
}
AKABAS
NEZEN