Liquified
Liquified

Reputation: 93

Issues with Guessing game java class~

This is a code to play a guessing game that i made, but the problem is that there were several issues which me as a beginner in java are not good at and need some guidance with. along the code there were some errors that i highlighted with an arrow on the side.

    import java.util.*;

public class GuessingGame
{


    private static Player house;
    private static Player player;

    private static int wins;
    private static int loses;
    private String name;
    int card1,card2;
    private int value;



    public void Player(String name){

        this.name=name;
        card1 = (Integer) null;
        card2 = (Integer) null;
    }



public void Card(int value){

     this.value = value;
    }





public int getValue(){
            return value;
        }



public void acceptDeal(Card card1, Card card2){
        Random r = new Random();
        int value = r.nextInt(13) + 1;
        card1 = new Card(value);            <<<<<<<<======= Error 1
        value = r.nextInt(13) + 1;
        card2 = new Card(value);            <<<<<<<<======= Error 2
    }



public static void init()
{

    house = new Player("House");                 <<<<<<<<======= Error 3
    player = new Player("Player");               <<<<<<<<======= Error 4
    wins = 0;
    loses = 0;

}


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

        char option, playAgain;
        int houseHandStrength, playerHandStrength;
        System.out.println("Welcome to our card guess 1.0 game!");
        System.out.println();

        do {
            // Deal cards to the house and player.
            house.acceptDeal(new Card(houseHandStrength), new Card(houseHandStrength));    <<<<<=== Error 5
            player.acceptDeal(new Card(playerHandStrength), new Card(playerHandStrength));  <<<<<=== Error 6    

            System.out.println(house);

            // Determine whether the player wants to play this hand.
            do {
                System.out.print("Deal cards? (Y/N) ");
                option = Character.toLowerCase(scan.next().charAt(0));
            }
            while (option != 'n' && option != 'y');

            if (option == 'y')
            {
                System.out.println(player);

                // Display hand strength of both players.
                houseHandStrength = house.getHandStrength();    <<<<<=== Error 7
                playerHandStrength = player.getHandStrength();  <<<<<=== Error 8
                System.out.println("The dealer's hand strength is: " + houseHandStrength);
                System.out.println("Your hand strength is: " + playerHandStrength);
                System.out.println();

                // If the player has a stronger hand.
                if (player.getHandStrength() > house.getHandStrength())
                {
                    System.out.println("** You won the hand! **");
                    wins++;
                }
                else {
                    System.out.println("The house wins this round!");
                    loses++;
                }
            }

            // Display the win/lose statistics.
            System.out.println("Current wins: " + wins);
            System.out.println("Current loses: " + loses);

            // Prompt whether the user wants to play again.
            do {
                System.out.print("Would you like to play again? (Y/N) ");
                playAgain = Character.toLowerCase(scan.next().charAt(0));
            }
            while (playAgain != 'n' && playAgain != 'y');           

            System.out.println();
            System.out.println("*******************************************************");
        }
        while (playAgain == 'y');

        System.out.println();
        System.out.println("Thank you for playing!");
    }

    public static void main(String[] args)
    {
        init();
        playGame();
    }
}

Upvotes: 0

Views: 827

Answers (4)

ltiong_dbl
ltiong_dbl

Reputation: 3216

You seemed to have bunched up your code. You've combined the Player, Card and Game classes. I don't have a Java compiler handy, but what you're looking to do is to break out the three models.

Error 1-6 were a result of trying to instantiate new objects when the class doesn't even exist. Error 7-8 were a result of trying to call a methods on the same.

import java.util.*;

class Player {
    int card1, card2;
    private String name;

    public void Player(String name){
        this.name=name;
        card1 = (Integer) null;
        card2 = (Integer) null;
    }

    public void acceptDeal(Card card1, Card card2){
        Random r = new Random();
        int value = r.nextInt(13) + 1;
        card1 = new Card(value);            <<<<<<<<======= Error 1
        value = r.nextInt(13) + 1;
        card2 = new Card(value);            <<<<<<<<======= Error 2
    }
}


class Card {
    private int value;

    public void Card(int value){
        this.value = value;
    }

    public int getValue(){
        return value;
    }
}


public class GuessingGame
{
    private static Player house;
    private static Player player;
    private static int wins;
    private static int loses;

    public static void init()
    {
        house = new Player("House");                 <<<<<<<<======= Error 3
        player = new Player("Player");               <<<<<<<<======= Error 4
        wins = 0;
        loses = 0;
    }

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

        char option, playAgain;
        int houseHandStrength, playerHandStrength;
        System.out.println("Welcome to our card guess 1.0 game!");
        System.out.println();

        do {
            // Deal cards to the house and player.
            house.acceptDeal(new Card(houseHandStrength), new Card(houseHandStrength));    <<<<<=== Error 5
            player.acceptDeal(new Card(playerHandStrength), new Card(playerHandStrength));  <<<<<=== Error 6    

            System.out.println(house);

            // Determine whether the player wants to play this hand.
            do {
                System.out.print("Deal cards? (Y/N) ");
                option = Character.toLowerCase(scan.next().charAt(0));
            }
            while (option != 'n' && option != 'y');

            if (option == 'y')
            {
                System.out.println(player);

                // Display hand strength of both players.
                houseHandStrength = house.getHandStrength();    <<<<<=== Error 7
                playerHandStrength = player.getHandStrength();  <<<<<=== Error 8
                System.out.println("The dealer's hand strength is: " + houseHandStrength);
                System.out.println("Your hand strength is: " + playerHandStrength);
                System.out.println();

                // If the player has a stronger hand.
                if (player.getHandStrength() > house.getHandStrength())
                {
                    System.out.println("** You won the hand! **");
                    wins++;
                }
                else {
                    System.out.println("The house wins this round!");
                    loses++;
                }
            }

            // Display the win/lose statistics.
            System.out.println("Current wins: " + wins);
            System.out.println("Current loses: " + loses);

            // Prompt whether the user wants to play again.
            do {
                System.out.print("Would you like to play again? (Y/N) ");
                playAgain = Character.toLowerCase(scan.next().charAt(0));
            }
            while (playAgain != 'n' && playAgain != 'y');           

            System.out.println();
            System.out.println("*******************************************************");
        }
        while (playAgain == 'y');

        System.out.println();
        System.out.println("Thank you for playing!");
    }

    public static void main(String[] args)
    {
        init();
        playGame();
    }
}

Upvotes: 1

Kai
Kai

Reputation: 39641

In your previous Question card1 and card2 were of type Card. That was right, now you have changed this and now it is wrong.

Upvotes: 1

Gustav
Gustav

Reputation: 1341

Maybe you need to import your other classes at the top?

The problems seem to be only in your own classes, what do the program output say about the errors?

public void Player(String name)... and public void Card(int value)...

should be classes right? Declare them as classes in another file and include them to the main file.

Upvotes: 1

posdef
posdef

Reputation: 6532

First of all welcome to StackOverflow. It's nice to see that you have found and used the homework tag. Keep in mind that for people to be able to help you, you need to give more information. What do you mean by error, what happens when you run the code etc

regarding the errors you get, it appears as you haven't really defined classes Card and Player, what you have there in your code are two methods GuessingGame.Card() and GuessingGame.Player() in your GuessingGame class. Change them to inner (or outer) classes and it should be fine ;)

Upvotes: 1

Related Questions