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

2. すごろく

■ Java による作成例

import java.io.*;
import java.util.*;

class Program02
{
    static private Random RandObj = new Random();   // 乱数オブジェクト

    static int ThrowDices(int n)
    {
        int sum = 0;

        for (int i = 0; i < n; i++)
            sum += RandObj.nextInt(3) + 1;

        return sum;
    }

    static void ShowBoard(int pos)
    {
        for (int i = 0; i < pos; i++)
            System.out.print("_ ");

        System.out.print("▲");

        for (int i = pos + 1; i < 30; i++)
            System.out.print("_ ");

        System.out.print("|上がり!\n");
    }

    /**
    * main
    */

    public static void main(String[] args) throws IOException
    {
        System.out.print("▲すごろく▼\n");
        System.out.print("30マス先にゴールがあります。\n");
        System.out.print("1,2,3の3つの目を持つ特別なサイコロ10個を、好きな数だけ振って駒を進めます。\n");
        System.out.print("ぴったり上がりに止まれば終わりです。目の数が多ければ、余った目の数だけ戻ります。\n");
        System.out.print("----------------------------------------------\n");

        BufferedReader br = new BufferedReader(
                                new InputStreamReader(System.in));
        int reply;

        do
        {
            int position = 0;

            ShowBoard(position);

            for (int turn = 1; ; turn++)
            {
                int n;

                while (true)
                {
                    System.out.print("残り" + ( 30 - position )
                                    + "マスです。サイコロの数は?");
                    n = Integer.parseInt(br.readLine());

                    if (n <= 10)
                        break;
                    else
                        System.out.print("サイコロは10個までです。");
                }

                int me = ThrowDices(n);

                System.out.print("出た目の合計 " + me + "\n");

                position += me;

                if (position == 30)
                {
                    System.out.print("おめでとう!! " + turn
                                    + "回目で上がりです\n");
                    break;
                }

                if (position > 30)
                    position = 30 - (position - 30);

                ShowBoard(position);
            }

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

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