Should be an easy fix but I was wondering how to use an object that is created in main. I tried to say Human h; outside of main (or any other methods) so I could call it in other methods but because I am using static methods I can't use h. Right now with this code, java tells me that h cannot be found (in the human roll method.)
import java.util.Scanner;
class Main
{
// static Human h;
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
Computer c = new Computer();
Human h = new Human();
System.out.println("Let's play PIG");
System.out.println("What is your name");
String name = scan.nextLine();
System.out.println("Hello" + " " + name + " " + "you can go first");
startGame(h, name);
}
public static void startGame(Human h, String name)
{
Scanner scan = new Scanner(System.in);
System.out.println("Press r to start your roll");
String rresponse = scan.nextLine();
if(!rresponse.equalsIgnoreCase("R"))
{
System.out.println("Try again");
startGame(h, name);
}
if(rresponse.equalsIgnoreCase("R"))
{
System.out.println("You pressed r, lets roll");
humanRoll(h, name);
}
}
public static void humanRoll(Human h, String name)
{
if(h.getRollNumh()==1)
{
System.out.println(name + " " + "you got a " + h.getRollNumh());
System.out.println("You got a score of" + h.getHumanTurnScore() + "this turn");
System.out.println("Here is your current overall score" + h.getHumanOverallScore());
System.out.println("Your rolled a one, now its the Computers' turn");
switchHuman();
}
}
}
If you need to see the Human class to provide context I can quickly respond and add it in but it's just instance variables, default constructors, overloaded constructors, accessor methods, and mutator methods.
You can pass Human as method parameter to startGame and humanRoll defined them as
public static void startGame(Human human)
public static void humanRoll(Human human)
Then, in main, invoke startGame(h)
.
see if this works ...
import java.util.Scanner;
class Main {
//tried to put Human h; up here but didn't work due to static methods
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Computer c = new Computer();
Human h = new Human();
System.out.println("Let's play PIG");
System.out.println("What is your name");
String name = scan.nextLine();
System.out.println("Hello" + " " + name + " " + "you can go first");
startGame(h);
}
public static void startGame(Human h) {
Scanner scan = new Scanner(System.in);
System.out.println("Press r to start your roll");
String rresponse = scan.nextLine();
if (!rresponse.equalsIgnoreCase("R"))
{
System.out.println("Try again");
startGame(h);
}
if (rresponse.equalsIgnoreCase("R"))
{
System.out.println("You pressed r, lets roll");
humanRoll(h);
}
}
public static void humanRoll(Human h)
{
//RollNumh is just the dice number that the player rolled
if (h.getRollNumh() == 1)
{
System.out.println(name + " " + "you got a " + h.getRollNumh);
System.out.println("You got a score of" + h.getHumanTurnScore() + "this turn");
System.out.println("Here is your current overall score" + h.getOverallHumanOverallScore());
System.out.println("Your rolled a one, now its the Computers' turn");
switchHuman();
}
}
}