转轮盘游戏(WheelDiscGame)

转轮盘游戏
使用TreeSet存储【奖品】(自定义类Prize,需要用积分属性)
(1) 设置10个奖品,并为每个奖品设定一个积分。
转轮盘游戏(WheelDiscGame)_第1张图片
(2) 首先显示TreeSet中的奖品(遍历输出)
用户根据轮盘上剩余的奖品输入一个数字(例如轮盘上只剩下7个奖品,则选择1~7)。
用户输入后,程序自动生成一个随机数字(范围也根据遍历结果),
【猜对】如果生成的随机数与用户输入的数字相同,则将TreeSet中本次对应的奖品积分累计到用户积分、并将该奖品从TreeSet中移除(此时TreeSet的size会减1)。
【猜错】如果生成的随机数与用户输入的数字不同,则TreeSet不变,继续游戏。

(3) 用户有10次猜测机会,累计积分超过100则表示游戏胜利,否则失败
首先定义一个Prize类

package com.zzu.java13.treesethw;

public class Prize implements Comparable {

    int integral ;
    int num;

    public Prize(int num, int integral) {
        super();
        this.integral = integral;
        this.num = num;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public int getIntegral() {
        return integral;
    }

    public void setIntegral(int integral) {
        this.integral = integral;
    }

    @Override
    public String toString() {
        return "Prize [integral=" + integral + ", num=" + num + "]";
    }


    @Override
    public int compareTo(Prize p) {
        if(p != null){
            return num-p.num;
        }
        return 0;
    }



}

然后WheelDiscGame

public class WheelDiscGame {

    public static void main(String[] args){
        Set set = new TreeSet();
        set.add(new Prize(1,25));
        set.add(new Prize(2,30));
        set.add(new Prize(3,55));
        set.add(new Prize(4,60));
        set.add(new Prize(5,15));
        set.add(new Prize(6,45));
        set.add(new Prize(7,50));
        set.add(new Prize(8,20));
        set.add(new Prize(9,35));
        set.add(new Prize(10,40));
        Iterator it = set.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
        int sub=0;//记分器
        for(int j = 10 ; j>0 ; j--){//十次机会
            Scanner scan = new Scanner(System.in);
            System.out.println("您还有"+j+"次机会");
            System.out.println("请输入");
            int a = (int)(Math.random()*10);//随机数
            System.out.println(a);
            if(a==scan.nextInt()){//若猜对输出bingo
                System.out.println("---bingo");
                for(Prize pri : set){//遍历set找到奖品,累计积分并且删除奖品
                    if(pri.num==a){
                        sub = sub + pri.integral;
                        set.remove(pri);
                        break;
                    }
                }
            }
            for(Prize pri :set){//遍历剩下的奖品
                System.out.println(pri);
            }
            System.out.println("sub = "+ sub);//输出积分
        }
        if(sub>=100){
            System.out.println("游戏胜利");
        }else{
            System.out.println("游戏失败");
        }
    }

}

BUG::如果4号奖品已经被删除,那么随机数仍然有可能是4,这样的话 就会浪费一次机会,如果你猜对了,仍然不会加分,因为四号奖品已经被删除!!!

我想不起来怎么解决这个bug,求大神帮助!!!

你可能感兴趣的:(java)