2

私はJavaでサイコロを使ってブラックジャックゲームをシミュレートするプロジェクトを行っていますが、間違ったコードを書いた領域にぶつかりました。プレイヤーのスコアが彼よりも高い場合、ディーラーにアクションをシミュレートさせようとしています。また、私のcheckWinner()メソッドは間違ったタイミングでアクティブになっているようです。誰にも修正を求めているわけではありませんが、コードのどこが間違っているか教えてください。

public class BlackJack {

    static PairOfDice cards = new PairOfDice();
    static Scanner scan = new Scanner(System. in );
    static int playerScore, dealerScore, player, dealer, tempScore;
    static boolean newGame;
    static String play, hit;


    public static void main(String[] args) {
        newGame();
        dealerRoll();
        playerRoll();

        // checkWinner();
    }

    public static void newGame() {

        System.out.println("Would you like to play blackjack? y or n?");
        play = scan.nextLine();

        if (play == "y"); {
            newGame = true;
        }
        if (play != "y") newGame = false;
    }

    public static void dealerRoll() {
        while (newGame) {
            cards.rollDice();
        }

        dealerScore = (cards.rollDice());
        System.out.println("Dealer score is: " + dealerScore);

        if (dealerScore <= 15 && playerScore > dealerScore) tempScore = cards.rollDice();
        System.out.println("The dice roll was: " + tempScore);
        dealerScore += tempScore;
        System.out.println("Dealer score is: " + dealerScore);

    }

    public static void playerRoll() {
        while (newGame) {
            cards.rollDice();
        }

        playerScore = (cards.rollDice());

        System.out.println("You total is " + playerScore);

        while (playerScore < 21 || playerScore < dealerScore) {

            System.out.println("Would you like to take a hit? y or n?");
            hit = scan.nextLine();
            if (hit.equals("y")) {
                tempScore = cards.rollDice();
                System.out.println("The dice roll was: " + tempScore);
                playerScore += tempScore;
                System.out.println("Your score is now: " + playerScore);

            }
            else if (hit.equals("n")); {
                checkWinner();
            }
        }
    }

    public static void checkWinner() {
        if (playerScore == 21) System.out.println("You win!");
        else if (dealerScore == 21) System.out.println("Sorry, Dealer has won!");
        else if (dealerScore > playerScore) System.out.println("Sorry, Dealer has won!");
        else if (playerScore > dealer) System.out.println("You win!");
        else if (playerScore > 21) System.out.println("Sorry you busted, Dealer has won!");

        else if (dealerScore > 21) System.out.println("Dealer has busted, You win!");
    }
}​
4

2 に答える 2

0

私はコードを作り直して、これを思いつきました。コメントをいただければ幸いです。

import java.util.*;


public class BlackJack
{
    static PairOfDice cards = new PairOfDice();
    static Scanner scan = new Scanner(System.in);
    static int playerScore, dealerScore, player, dealer, tempScore, takeHit, stand;
    private static boolean playGame;
    static String play= "y", yesPlay;
    static char hit;


    public static void main(String[] args)
    {
        newGame();



    }

    public static void newGame()
    {
        do
        {

            playerRoll();
            dealerRoll();
            stand();
            checkWinner();
            System.out.println("Would you like to play again? (Y/N)");
        } while (scan.next().toLowerCase().charAt(0) == 'y');

    }

    public static int takeHit()
    {
        return takeHit = cards.rollDice();
    }

    public static  int stand()
    {
        return playerScore;


    }

    public static void dealerRoll()
    {
        while(playGame)
        {
            cards.rollDice();
        }

        dealerScore = (cards.rollDice());



                do
                {
                    tempScore = takeHit();

                //System.out.println("The dice roll was: " + tempScore);
                dealerScore += tempScore;
                System.out.println("Dealer score is: " + dealerScore);
                }while(dealerScore <= 15 && playerScore > dealerScore);


    }

    public static void playerRoll()
    {
        while(playGame)
        {
            cards.rollDice();
        }

        playerScore = (cards.rollDice());

            System.out.println("Your total is " + playerScore);


            System.out.println("Would you like a hit?(Y/N)");
            hit = scan.next().toLowerCase().charAt(0);

            if(hit == 'y')
                do
                {
                    tempScore = takeHit();
                    //System.out.println("The dice roll was: " + tempScore);
                    System.out.println("The hit gave you : " + tempScore + " Your total is now: " + (playerScore += tempScore));
                    System.out.println("Would you like a hit?(Y/N)");
                }while(scan.next().toLowerCase().charAt(0) == 'y');



            if(hit == 'n')
                        stand();









    }

    public static void checkWinner()
    {
        if (playerScore > 21)
            System.out.println("Sorry you busted, Dealer has won!");
        else
        if (dealerScore > 21)
                System.out.println("Dealer has busted, You win!");
        else 
        if (playerScore == 21)
            System.out.println("You win!");
        else
        if (dealerScore == 21)
            System.out.println("Sorry, Dealer has won!");
        else if (dealerScore > playerScore && dealerScore <= 21)
            System.out.println("Sorry, Dealer has won!");
        else if (playerScore > dealer && playerScore <= 21)
            System.out.println("You win!");





    }
于 2012-11-03T21:18:57.913 に答える
0

プレーヤーのターンを完了すると、勝者を確認できません。ディーラーのターン後にのみ行います。

于 2012-11-03T19:35:52.960 に答える