Javaの学習を始めて17日くらいの人のための問題集

Java

配列と真偽値の問題。

Q
以下のダイスゲームを作成せよ。
ルール
サイコロをいくつか振って勝敗を決める。
ゾロ目 VS 非ゾロ目 ー> ゾロ目の勝ち
ゾロ目 VS ゾロ目 ー>サイコロの合計が多い方の勝ち
非ゾロ目 VS 非ゾロ目 ー>サイコロの合計が多い方の勝ち

詳しくは実行例を参照せよ。

[実行例]

ダイスを振りますか?yes...1/no...2:1
サイコロの個数を入力>5
プレイヤー:4,1,1,2,5
PC:6,4,1,6,6
******result******
プレイヤー合計:13
PC合計:23
LOSE
ダイスを振りますか?yes...1/no...2:1
サイコロの個数を入力>2
プレイヤー:1,1
PC:6,2
******result******
プレイヤー合計:2(ゾロ!)
PC合計:8
WIN
ダイスを振りますか?yes...1/no...2:1
サイコロの個数を入力>2
プレイヤー:3,4
PC:3,6
******result******
プレイヤー合計:7
PC合計:9
LOSE
ダイスを振りますか?yes...1/no...2:1
サイコロの個数を入力>2
プレイヤー:5,4
PC:4,4
******result******
プレイヤー合計:9
PC合計:8(ゾロ!)
LOSE
ダイスを振りますか?yes...1/no...2:2
アプリケーションを終了します

import java.util.Random;
import java.util.Scanner;
public class Dice {
	public static void main(String[] args) {
		Scanner scan =new Scanner(System.in);
		Random rand=new Random();
		final String[] PLAYERS={"PLAYER","PC"};
		final int PLAYER=0,PC=1;
		while(true){
			System.out.print("ダイスを振りますか?yes...1/no...2:");
			int select=scan.nextInt();
			if(select==2){
				break;
			}
			System.out.print("サイコロの個数を入力>");
			int diceNum=scan.nextInt();
			int[][] data=new int[PLAYERS.length][diceNum];
			boolean[] isZoro=new boolean[PLAYERS.length];
			int[] sums=new int[PLAYERS.length];
			//ゾロ目の判定はダイスが2個以上のとき
			if(diceNum > 1){
				for(int i=0;i<isZoro.length;i++){
					isZoro[i]=true;
				}
			}
			for(int i=0;i<data.length;i++){
				System.out.print(PLAYERS[i]+":");
				for(int j=0;j<data[i].length;j++){
					data[i][j]=rand.nextInt(6)+1;
					System.out.print(data[i][j]+(j==data[i].length-1 ? "":","));
					if(data[i][0] != data[i][j]){
						isZoro[i]=false;
					}
					sums[i]+=data[i][j];
				}
				System.out.println();
			}
			//勝敗判定
			String result;
			if(isZoro[PLAYER]==isZoro[PC] && sums[PLAYER]==sums[PC]){
				result="DRAW";
			}else if((isZoro[PLAYER]==isZoro[PC] && sums[PLAYER] > sums[PC]) || (isZoro[PLAYER] && isZoro[PC]==false)){
				result="WIN";
			}else{
				result="LOSE";
			}
			//出力
			System.out.println("******result******");
			for(int i=0;i<PLAYERS.length;i++){
				System.out.println(PLAYERS[i]+"合計:"+sums[i]+(isZoro[i] ? "(ゾロ!)":""));
			}
			System.out.println(result);
		}
		System.out.println("アプリケーションを終了します");
		scan.close();
	}
}

コメント

タイトルとURLをコピーしました