1. 程式人生 > >Java練習——轉輪盤遊戲(一)

Java練習——轉輪盤遊戲(一)

使用TreeSet儲存【獎品】(自定義類Prize,需要用積分屬性)

(1) 設定10個獎品,併為每個獎品設定一個積分。

例如:

獎品

1

獎品

2

獎品

3

獎品

4

獎品

5

獎品

6

獎品

7

獎品

8

獎品

9

獎品

10

25分

30分

55分

60分

15分

45分

50分

20分

35分

40分

(2) 首先顯示TreeSet中的獎品(遍歷輸出)

使用者根據輪盤上剩餘的獎品輸入一個數字(例如輪盤上只剩下7個獎品,則選擇1~7)。

使用者輸入後,程式自動生成一個隨機數字(範圍也根據遍歷結果),

【猜對】如果生成的隨機數與使用者輸入的數字相同,則將TreeSet中本次對應的獎品積分累計到使用者積分、並將該獎品從TreeSet中移除(此時TreeSet的size會減1)。

【猜錯】如果生成的隨機數與使用者輸入的數字不同,則TreeSet不變,繼續遊戲。

(3) 使用者有10次猜測機會,累計積分超過100則表示遊戲勝利,否則失敗。

具體程式碼實現如下:

public class Prize implements Comparable<Prize> {
    private int ID;
    private int score;

    public Prize() {

    }

    public Prize(int ID, int score) {
        this.ID = ID;
        this.score = score;
    }

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return "Pool{" +
                "獎品" + ID +
                ", 積分=" + score +
                '}';
    }

    @Override
    public int compareTo(Prize o) {
        if (o != null) {
            return this.ID - o.ID;
        }
        return 0;
    }

}
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class Play {

    static Set<Prize> prize = new TreeSet<>();
    static int sum = 0;


    public static void main(String[] args) {
        Pool();
        printPool();
        CompNumber();
    }


    public static void Pool() {
        prize.add(new Prize(1, 25));
        prize.add(new Prize(2, 30));
        prize.add(new Prize(3, 55));
        prize.add(new Prize(4, 60));
        prize.add(new Prize(5, 15));

        prize.add(new Prize(6, 45));
        prize.add(new Prize(7, 50));
        prize.add(new Prize(8, 20));
        prize.add(new Prize(9, 35));
        prize.add(new Prize(10, 40));
    }


    public static void printPool() {
        Iterator<Prize> it = prize.iterator();
        System.out.println("獎金池為:");
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }


    public static void removePool(int id) {
        Iterator<Prize> it = prize.iterator();
        int count = 1;
        while (it.hasNext()) {
            Prize tp = it.next();
            if (count == id) {
                prize.remove(tp);
                /*it.remove();*/
                System.out.println("恭喜你猜中並獲得" + tp.getScore() + "積分");
                sum += tp.getScore();
                System.out.println("你目前的積分為:" + sum);
                break;
            }
            count++;
        }

        /*for (int i = 1; it.hasNext(); i++) {
            Prize p = it.next();
            if (i == id) {
                it.remove();
            }
        }*/

        /*for (Prize p : prize) {
            if (p.getID() == id) {
                prize.remove(p);
                break;
            }
        }*/

        System.out.println("目前的獎池為:");
        for (Prize p : prize) {
            System.out.println(p);
        }
    }


    public static void CompNumber() {
        Scanner scan = new Scanner(System.in);

        for (int i = 10; i > 0; i--) {
            int m = (int) (Math.random() * prize.size()) + 1;
            System.out.println("隨機生成的1-" + prize.size() + "的隨機數是" + m);
            System.out.println("你目前有" + i + "次機會");
            System.out.println("請輸入你猜的一個數字:");
            int number = scan.nextInt();

            while (true) {
                if (number >= 1 && number <= 10) {
                    break;
                } else {
                    System.out.println("對不起你的輸入範圍有誤,請重新輸入1-10之間的數字:");
                    number = scan.nextInt();
                }
            }

            if (m == number) {
                removePool(m);
            } else {
                System.out.println("很遺憾,你沒有猜對!");
            }

        }

        System.out.println("恭喜你共獲得" + sum + "積分");
        if (sum > 100) {
            System.out.println("遊戲勝利!");
        } else {
            System.out.println("遊戲失敗!");
        }
    }
}