0

你的挑战是实现这里描述的游戏。在描述中提到选择一个数字的地方,这意味着计算机应该选择一个介于 1 到 10 之间的随机数。

计算机为庄家选择一个号码,并为玩家选择两个号码。所有这些数字都会显示给玩家。

玩家可以要求计算机为玩家选择更多的数字,一次一个,但如果他们的数字总和超过 21,那么他们就输了。

一旦玩家对他们的一组号码感到满意,计算机就会为庄家挑选号码,直到其号码总和为 16 或更高。

如果庄家的数字总和大于 21,则玩家赢得游戏。否则,得分最高的一组数字赢得比赛。

基本上,我不知道我是否正确理解了这个问题。我认为这个问题值得怀疑。

由于球员无法预测未来的选秀权,也无法恢复他的上一次选秀权,那么当球员高兴时,停选时间是多少?他只能知道庄家的价格总是在16以上,所以如果初始选号低于16,他会选择多选号码。在他的数字总和超过 16 后,他会怎么做?如果有侵略性,他会继续挑。或者如果保守的话,他会停下来并感到高兴。

所以问题是有问题的!!


更新:我确定我误解了这个问题。我需要让玩家自己判断他是否开心。所以我认为我的代码应该为他智能地做到这一点。这不可能。所以我现在在我的代码中得到一个输入。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;

public class PlayGame {

    private Random random = new Random();
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    private int dealer_sum = 0;
    private int player_sum = 0;

    private static final String WON = "won";
    private static final String LOST = "lost";
    private static final String EVEN = "even";

    public static void main(String[] args) throws Exception  {
        String result = new PlayGame().play();
        System.out.println("-----final result------");
        System.out.println(result);
    }

    public String play() throws Exception {
        System.out.println("-----inital round------");
        dealer_pick();
        player_pick();
        player_pick();

        System.out.println("-----player round------");

        while(true) {
            System.out.println("Are you happy now? ");
            if("n".equals(br.readLine())) {
                player_pick();
                if(player_sum > 21) return LOST;
                continue;
            }
            break;
        }

        if(player_sum > 21) return LOST;

        System.out.println("-----dealer round------");
        while(dealer_sum < 16) {
            dealer_pick();
        }

        if(dealer_sum > 21) return WON;
        if(player_sum == dealer_sum) return EVEN;
        return (player_sum > dealer_sum) ? WON : LOST;
    }

    private int player_pick() {
        int num = pick();
        player_sum += num;
        System.out.println("player: " + num + " => " + player_sum);

        return num;
    }

    private void dealer_pick() {
        int num = pick();
        dealer_sum += num;
        System.out.println("dealer: " + num + " => " + dealer_sum);
    }

    private int pick() {
        return random.nextInt(10) + 1;
    }
}
4

0 回答 0