java老虎机学院项目

bq3bfh9z  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(268)

我在为一个大学项目做老虎机。网上有很多类似的项目,但是对我的项目的要求略有不同。我的任务是:
玩家以£1学分,每次20便士。
如果水果机“滚动”两个相同的符号,用户赢得50便士。
玩家获胜£三个相同的和£3个钟5个。
玩家输了£1如果两个头骨被卷起,他/她的钱如果三个头骨被卷起。
玩家可以选择退出与奖金后,每卷或继续玩,直到没有钱了。
到目前为止我想到的是:

for ( int runCount = 1; runCount <= 3; runCount ++ ) {

        int symIndex = r.nextInt(6);

        if (symIndex == 0) {
            symbol = "cherry";
        } else if (symIndex == 1){
            symbol = "orange";
        } else if (symIndex == 2){
            symbol = "lemon";
        } else if (symIndex == 3){
            symbol = "bell";
        } else if (symIndex == 4){
            symbol = "star";
        } else if (symIndex == 5){
            symbol = "skull";
        }

        if (runCount == 1){
            reel1 = symbol;
        } else if ( runCount == 2 ){
            reel2 = symbol;
        } else if ( runCount == 3 ){
            reel3 = symbol;
        }

    }
    System.out.println(reel1 + "  " + reel2 + "  " + reel3);

这是伟大的,吐出3个随机符号,但我需要的是一种方法,是它以某种方式对待钟和头骨符号不同。一定有比在if语句中写出所有可能的组合更简单的方法。在其他所有的项目中,我都看到过这样的获奖声明

if (reel1 == reel2 && reel1 == reel3 && reel2 == reel3)
System.out.println("You have won!");

但是如果我这样做的话,它不是定义实际的符号,而是把它存储在一个卷轴变量中,这样我就不能为那些特定的结果做if语句。
任何帮助都将不胜感激。即使你能告诉我如何恰当地表达我的问题,这样我就可以搜索它会很有帮助

osh3o9ms

osh3o9ms1#

我改变了一些。而不是存储3个唯一字段 reel1 , reel2 以及 reel3 您可以重用用于控制for循环的计数器变量,将所选符号放入数组中。注意:您需要从0开始计数器,但这几乎没有区别。

private static final String CHERRY = "cherry";
    private static final String ORANGE = "orange";
    private static final String LEMON = "lemon";
    private static final String BELL = "bell";
    private static final String STAR = "star";
    private static final String SKULL = "skull";
    private static final Random random = new Random();

    public static void main(String[] args) {
        String[] symbols = new String[3];
        pickRandomSymbolsForReels(symbols);
        displayReels(symbols);
        Map<String, Integer> symbolCounts = new HashMap<>();
        checkResults(symbols, symbolCounts);
        displayResults(symbolCounts);
    }

    private static void checkResults(String[] symbols, Map<String, Integer> symbolCounts) {
        // for each symbol
        // if (symbolCounts.get(symbol) != null) {
        //      symbolCounts.put(symbol, 1);
        // } else {
        //      int incrementedValue = symbolCounts.get(symbol) + 1;
        //      symbolCounts.put(symbol, incrementedValue);
        // }
    }

    private static String[] pickRandomSymbolsForReels(String[] symbols) {
        for (int reelIndex = 0; reelIndex < symbols.length; reelIndex++) {
            int choice = random.nextInt(6);
            switch (choice) {
                case 0:
                    symbols[reelIndex] = CHERRY;
                    break;
                case 1:
                    symbols[reelIndex] = ORANGE;
                    break;
                case 2:
                    symbols[reelIndex] = LEMON;
                    break;
                case 3:
                    symbols[reelIndex] = BELL;
                    break;
                case 4:
                    symbols[reelIndex] = STAR;
                    break;
                case 5:
                    symbols[reelIndex] = SKULL;
                    break;
            }
        }
        return symbols;
    }

    private static void displayReels(String[] symbols) {
        for (String symbol : symbols) {
            System.out.print(symbol + " ");
        }
        System.out.println();
    }

    private static void displayResults(Map<String, Integer> symbolCounts) {
        /**
         * Here you'll need to understand the logic of various events.
         * e.g
         * 3 skulls - instantly lose all credit - game over
         * 2 skulls - decreaseBalance(1.00)
         * 3 Bells - increaseBalance(amount)
         * 3 of any other symbol - increaseBalance(amount)
         * 2 of any thing else - increaseBalance(amount)
         * .. etc
         */
        // if (hasThreeSkulls(symbolCounts.get(SKULL)) {
        //   gameOver();
        // } else if (hasTwoSkulls(symbolCounts.get(SKULL)) {
        //   decreaseBalance(100) // note when working with money, store pence amount only and display the value as pounds and pence.. otherwise you'll have issues
        // } etc ..
    }

接下来从卷轴收集数据(感兴趣的符号计数)。最后检查胜负结果的统计数据。这将是一堆 if, else-if 声明。

相关问题