मेरे कंप्यूटर विज्ञान वर्ग के लिए मेरा पिग पासा खेल प्रत्येक मोड़ के बाद प्रत्येक व्यक्तिगत स्कोर को नहीं बचाएगा, और एक खिलाड़ी के अधिकतम स्कोर तक पहुंचने के बाद भी मेरा खेल नहीं रुकेगा (मुझे पता है कि बू लीन कारण हैं लेकिन, मुझे नहीं पता और क्या उपयोग करना है)। साथ ही जब कोई खिलाड़ी फिर से रोल करने से मना करता है तो स्कोर वापस शून्य हो जाता है। अगर कोई इसमें मेरी मदद करता है तो यह वास्तव में अच्छा होगा !! आपका धन्यवाद।

import java.util.*;
import java.util.Random;


public class PigDiceGamebyJian {

    public static Scanner sc = new Scanner(System.in);

    public static Random gen = new Random();

    public static void main(String[] args) {

        //char repeat;

        System.out.println(" Welcome to the Pig Dice Game ");

        System.out.println("This game requires two players");

        System.out.println("How to play: each player will take turn rolling the dice (adding up the turns) until the sum is 30");

        System.out.println("First one to get to  30 wins, though if on a turn, if you roll a 1, ");

        System.out.println("you will give the dice to the other player, and you will not add anything to your score because 1 = 0");

        System.out.println("Enough with the boring rules.");

        String p1 = getName();

        String p2 = getName();

        System.out.println("Hello " + p1 + " and " + p2 + ".");

        System.out.println("Please enter a score that you would like to play up to");

        final int fin = sc.nextInt();

        System.out.println(p1 + " will be going first.");

        int p1score = roll(p1, 0, fin);

        int p2score = roll(p2, 0, fin);

        while (p1score < fin && p2score < fin ) {

            p1score += roll(p1, 0, fin);

            p2score += roll(p2, 0, fin);

        }

    }

    private static int roll(String player, int score, int fin) {

        boolean go = true;

        int counter = 0;

        while(go) {

            int dice =  gen.nextInt(6) + 1;



            if (dice == 1) {

                System.out.println(player + " You rolled 1, your turn is over.");

                System.out.println(player + " your total is " + counter);

                return 0;

            }


            System.out.println(player  + " you rolled a " + dice);


            counter = counter + dice;

            System.out.println(player + " Your turn score is " + counter + " Do you want to roll again? (y)es (n)o");

            String ans = sc.next();

            if (ans.equals("n")) {

                go = false;

                System.out.println(player + " your score is " + score);

                return score;


            }

            if (score >    fin) {

                go = false;

                System.out.println(player + " you've won the PIG DICE GAME!!");

            }


        }

         return score;
    }

    private static String getName() {

        System.out.println("Enter the name for a player.");

        String player = sc.next();

        return player;
    }

}
0
Jian Marco Balahadia 10 पद 2018, 20:31

1 उत्तर

सबसे बढ़िया उत्तर

आपके कार्यक्रम में एक तार्किक दोष है। आप अपने रोल फ़ंक्शन को अपने पैरामीटर के रूप में स्कोर = 0 के साथ कॉल कर रहे हैं।

    int p1score = roll(p1, 0, fin);

    int p2score = roll(p2, 0, fin);

    while (p1score < fin && p2score < fin ) {

        p1score += roll(p1, 0, fin);

        p2score += roll(p2, 0, fin);

    }

अपनी रोल पद्धति में, आप या तो 0 लौटाते हैं या आप स्कोर लौटाते हैं जो हर बार 0 होता है। तो आपका p1score और p2score जो कि रोल फंक्शन रिटर्न के आधार पर निर्धारित होता है, दोनों हमेशा हमेशा के लिए 0 होंगे।

यही कारण है कि आपका खेल रुकता नहीं है क्योंकि यह समय के पाश में फंस जाता है।

स्कोर + आपके द्वारा रोल किए गए मान को वापस करने के लिए आपको रोल फ़ंक्शन को बदलने की आवश्यकता है।

0
Steven 10 पद 2018, 17:42