簡體   English   中英

java 遇到的計數器問題

[英]counter issue encountered with java

我正在做一個骰子游戲,規則是隨機擲2個骰子,如果第一次嘗試兩個骰子的總和為7或11,則用戶獲勝。 如果第一次嘗試總和為 2,3 或 12,則用戶輸了。 如果總和是 4,5,6,8,9,10,則該總和被設置為建立點並繼續擲骰子,直到總和與建立點匹配並且用戶獲勝,但是如果建立點是 7用戶輸了。

游戲進行了 3 次,並記錄了我贏了或輸了多少次。 但是,我無法完成該部分,不勝感激,我的代碼如下。

package roll;

import java.util.Random;

public class RandomSumGame {

    boolean start;
    int d1;
    int d2;
    int sum = d1 + d2;
    int valuepoint;
    String plus = "+";

    public void play(int d1, int d2) {
        int win = 0;
        int loss = 0;
        sum = d1 + d2;

        for (;;) {
            if (sum == 2 || sum == 3 || sum == 12) {
                start = false;
                loss++;
                System.out.println(" = " + sum + ";you lose");
                break;

            } else if (sum == 7 || sum == 11) {
                start = true;
                win++;
                System.out.println(" = " + sum + ";you win ");
                break;
            }

            valuepoint = sum;

            if (valuepoint == 4 || valuepoint == 5 || valuepoint == 6 || valuepoint == 8 || valuepoint == 9
                    || valuepoint == 10) {
                System.out.print(" = " + valuepoint + " you establish a value point " + valuepoint + "\n");
                break;

            }

        }
        for (;;) {
            if (sum == 7 || sum == 11) {
                break;

            } else {
                Random rand = new Random();
                for (int i = 0; i < 1; i++) {
                    d1 = 1 + rand.nextInt(6);
                    int f1 = d1;
                    System.out.print("\t" + "-you rolled again " + d1 + " " + plus);

                    for (int x = 0; x < 1; x++) {
                        d2 = 1 + rand.nextInt(6);
                        int f2 = d2;
                        int loda = f1 + f2;
                        System.out.print(" " + d2 + " = " + loda + "\n");

                    }

                }
                sum = d1 + d2;

                if (sum == valuepoint) {
                    start = true;
                    win++;

                    System.out.print("\t" + "you win!" + "\n");
                    break;

                } else if (sum == 7) {
                    loss++;
                    start = false;
                    System.out.print("\t" + "you lose " + "\n");
                    break;

                }
            }

        }
        System.out.print("wins: " + win + "\n");
        System.out.print("Losses:" + loss);
    }

    public void play() {

        for (int x = 0; x < 3; x++) {

            rolldice();
            play(d1, d2);
            System.out.print("\n");

        }

    }

    public void rolldice() {
        Random rand = new Random();

        for (int i = 0; i < 1; i++) {
            d1 = 1 + rand.nextInt(6);
            System.out.print("You rolled " + d1 + " " + plus);

        }
        for (int i = 0; i < 1; i++) {
            d2 = 1 + rand.nextInt(6);
            System.out.print(" " + d2 + " ");
        }

    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        RandomSumGame Teet = new RandomSumGame();
        RandomSumGame d1counter = new RandomSumGame();
        RandomSumGame d2counter = new RandomSumGame();

        Teet.play();

    }
}

哪一部分你不能完成? 好像游戲運行了3次? 是輸贏的總數嗎? 要解決這個問題,您可以將“int win”和“int loss”移到 play 方法之外,使其成為全局變量。

編輯:如果您不想使用全局變量,您可以創建一個調用自身的方法(遞歸方法)


import java.util.Random;

public class RandomSumGame {
    boolean start;
    int d1;
    int d2;
    int sum = d1 + d2;
    int valuepoint;
    String plus = "+";

    public void play(int d1, int d2, int win, int loss) {
        sum = d1 + d2;

        for (;;) {
            if (sum == 2 || sum == 3 || sum == 12) {
                start = false;
                loss++;
                System.out.println(" = " + sum + ";you lose");
                break;

            } else if (sum == 7 || sum == 11) {
                start = true;
                win++;
                System.out.println(" = " + sum + ";you win ");
                break;
            }

            valuepoint = sum;

            if (valuepoint == 4 || valuepoint == 5 || valuepoint == 6 || valuepoint == 8 || valuepoint == 9
                    || valuepoint == 10) {
                System.out.print(" = " + valuepoint + " you establish a value point " + valuepoint + "\n");
                break;

            }

        }
        for (;;) {
            if (sum == 7 || sum == 11) {
                break;

            } else {
                Random rand = new Random();
                for (int i = 0; i < 1; i++) {
                    d1 = 1 + rand.nextInt(6);
                    int f1 = d1;
                    System.out.print("\t" + "-you rolled again " + d1 + " " + plus);

                    for (int x = 0; x < 1; x++) {
                        d2 = 1 + rand.nextInt(6);
                        int f2 = d2;
                        int loda = f1 + f2;
                        System.out.print(" " + d2 + " = " + loda + "\n");

                    }

                }
                sum = d1 + d2;

                if (sum == valuepoint) {
                    start = true;
                    win++;

                    System.out.print("\t" + "you win!" + "\n");
                    break;

                } else if (sum == 7) {
                    loss++;
                    start = false;
                    System.out.print("\t" + "you lose " + "\n");
                    break;

                }
            }

        }

        System.out.print("wins: " + win + "\n");
        System.out.print("Losses:" + loss);
        if (win < 2 && loss < 2) {
            System.out.print("\n");
            //Recursive
            play(win, loss);
        }
    }

    public void play(int win, int loss) {
        rolldice();
        play(d1, d2, win, loss);
    }

    public void rolldice() {
        Random rand = new Random();

        for (int i = 0; i < 1; i++) {
            d1 = 1 + rand.nextInt(6);
            System.out.print("You rolled " + d1 + " " + plus);

        }
        for (int i = 0; i < 1; i++) {
            d2 = 1 + rand.nextInt(6);
            System.out.print(" " + d2 + " ");
        }
    }

    public static void main(String[] args) {
        RandomSumGame test = new RandomSumGame();
        test.play(0,0);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM