Dice Game### 前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)JavaでDaice Gameを作っています。
下記のようなプログラミングを作りたいのですが、途中でつまずいてしまいました。
どなたか手助けお願いいたします。
このソースだと、score(所持金)が0になっても、ラウンドが経過してしまいます。
なぜでしょうか?
また、ここはこうしたほうがいいよというアドバイスがあればお願いいたします。
import java.util.Random; public class DiceGame { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ int i = 0; int score = 1000; int b; String a; while (i < 5 || score <= 0) { Random rnd = new Random(); System.out.println((i + 1) + "回目の処理です。現在の所持金" + score + "円"); i++; System.out.println("サイコロを2つ振ります"); System.out.println("合計の数が偶数(even)か奇数(odd)かを予想してください"); while (true) { a = new java.util.Scanner(System.in).nextLine(); if ((a.equals("even")) || a.equals("odd")) { break; } } System.out.println("掛け金を入力してください。"); while (true) { b = new java.util.Scanner(System.in).nextInt(); if ((b > 0 && b <= score)) { break; } } int num = rnd.nextInt(12); num++; if (num % 2 == 0) { System.out.println("偶数" + num + "が出ました。"); } else { System.out.println("奇数" + num + "が出ました。"); } if ((a.equals("even")) && (num % 2 == 0)) { System.out.println("あなたの勝ちです。掛け金" + b + "円が増え、あなたの所持金は" + (score + b) + "円になりました。"); score = score + b; } else if ((a.equals("odd")) && (num % 2 == 1)) { System.out.println("あなたの勝ちです。掛け金" + b + "円が増え、あなたの所持金は" + (score + b) + "円になりました。"); score = score + b; } else { System.out.println("あなたの負けです。掛け金" + b + "円が減り、あなたの所持金は" + (score - b) + "円になりました。"); score = score - b; } } } }
6面体ダイス2個の合計値が偶数であるか奇数であるかを当てる
ラウンドを5回繰り返し所持金をどれだけ増やせるかを競う
現在の所持金とラウンドを表示する
初期の所持金は、1000円とする
標準入力より偶数(even)もしくは奇数(odd)のどちらに賭けるかを取得する
このときevenやoddでない入力は無視して、正しい入力が行われるまでループする
標準入力より賭け金の金額(数値)を取得する
このとき数値以外や負数、所持金を超える値などの受け付けない入力は無視して、正しい入力が行われるまでループする
6面体のダイスを2個振り合計値を求める
勝敗の判定
合計値の偶数奇数が賭けたものと一致していた場合、プレイヤーの勝ちとし所持金を賭けた金額分増やす
そうでない場合、プレイヤーの負けとし所持金を賭けた金額分減らす
所持金が0円以下になった場合ゲームオーバーとしプログラムを終了する
5ラウンドが経過した場合、所持金を表示してプログラムを終了する
回答2件
あなたの回答
tips
プレビュー