I am creating a text based game series to practice m java skills and learn more advanced methods to do things.
My problem is that when a user selects the option to pick up gold or other items
gold is added to their balance but they can continue to pick the same gold up repeatedly.
What i want to happen is for the user to pick up the gold or item and then have the option disappear so they cant keep picking it up.
My code is pretty long so i am also looking for a way to potentially shorten it up, its going to be a long game.
My issue is occurring at:
public void guardBaracks(){
}
here is my code:
package FTK;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
public class findTheKing {
Scanner scan = new Scanner(System.in);
Scanner enterScan = new Scanner(System.in);
String myWeapon, myArmor, playerName;
int myHP,myGold = 0, monsterHP;
List<String> inv = new ArrayList<String>();
public static void main(String[] args) {
findTheKing ftk;
ftk = new findTheKing();
ftk.playerSetUp();
ftk.brickRoad(); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public void playerSetUp() {
myHP = 100;
myWeapon = "Not Equipped";
System.out.println("|---------------------------------------------------------------------------------------------|");
System.out.println("Enter your name.");
playerName = scan.nextLine();
System.out.println("Hello " + playerName + ", lets begin your adventure finding the king!");
enterScan.nextLine();
System.out.println("Your HP level is: " + myHP + ".");
System.out.println("Your current weapon is: " + myWeapon + ".");
System.out.println(inv);
enterScan.nextLine();
System.out.println("|---------------------------------------------------------------------------------------------|");
}
public void brickRoad() {
int choice;
System.out.println("|---------------------------------------------------------------------------------------------|");
System.out.println("You are standing in the woods near an old red brick road worn down from age.\n");
System.out.println("To the north following the brick road is a castle, king Solomani's castle.\n");
System.out.println("Far east of you is the General Goods store.\n");
System.out.println("Following the brick road south leads to a drawbridge, beyond that you can see a cave.\n");
System.out.println("West of you is a small clearing in the brush.");
System.out.println("|---------------------------------------------------------------------------------------------|");
enterScan.nextLine();
System.out.println("|---------------------------------------------------------------------------------------------|");
System.out.println("Where would you like to go?");
System.out.println("1 North");
System.out.println("2 East");
System.out.println("3 South");
System.out.println("4 West");
System.out.println("|---------------------------------------------------------------------------------------------|");
choice = scan.nextInt();
if(choice==1) {
System.out.println("|---------------------------------------------------------------------------------------------|");
System.out.println("You make your way up the long red brick road to the castle, ");
System.out.println("you find a horse and carriage out front, at the top of the steps there are");
System.out.println(" two guards at the door and a window slightly cracked open.");
System.out.println("|---------------------------------------------------------------------------------------------|");
enterScan.nextLine();
castle();
}
if(choice==2) {
System.out.println("|---------------------------------------------------------------------------------------------|");
System.out.println("Traveling along to the east you arrive at the General Goods store.\n");
System.out.println("The sign in the window says open for business.");
System.out.println("|---------------------------------------------------------------------------------------------|");
enterScan.nextLine();
generalGoodsStore();
}
if(choice==3) {
System.out.println("|---------------------------------------------------------------------------------------------|");
System.out.println("Following the red brick road south takes you to a drawbridge.");
System.out.println("|---------------------------------------------------------------------------------------------|");
enterScan.hasNextLine();
drawBridge();
}
if(choice==4) {
System.out.println("|---------------------------------------------------------------------------------------------|");
System.out.println("you push through the brush opening and find there is an old shack.");
System.out.println("|---------------------------------------------------------------------------------------------|");
enterScan.nextLine();
shack();
}
}
public void castle() {
int choice;
System.out.println("What's your next move?\n\n");
System.out.println("|---------------------------------------------------------------------------------------------|");
System.out.println("1: Sit in the carriage.");
System.out.println("2: Walk up the steps and talk to the guards.");
System.out.println("3: Sneak over to the window while the guards aren't watching.");
System.out.println("4: Go back.");
System.out.println("|---------------------------------------------------------------------------------------------|");
choice = scan.nextInt();
if (choice==1) {
System.out.println("|---------------------------------------------------------------------------------------------|");
System.out.println("You are now sitting in the carriage.");
System.out.println("You notice there is a shiny object hidden under the seat.");
System.out.println("|---------------------------------------------------------------------------------------------|");
}
if(choice==2) {
System.out.println("Apon aproaching the guards they greet you but they inform you that ");
System.out.println("you cannot curently enter the castle as the king is missing.");
}
if(choice==3) {
System.out.println("Now at the window you can see through the crack.");
System.out.println("Inside the window you can see the guard barracks.");
System.out.println("It looks as if there is a guard sleeping on a bed to the right of the room.");
enterScan.nextLine();
window();
}
if(choice==4) {
brickRoad();
}
}
public void drawBridge() {
int choice;
System.out.println("You arrived at the drawbridge. The bridge is currently up and locked");
System.out.println("The only way past is to find the key that unlocks the bridge.");
enterScan.nextLine();
System.out.println("Type your next action.");
System.out.println("1: Unlock bridge.");
System.out.println("2: Go back.");
choice = scan.nextInt();
if((choice==1) && (inv.contains("Key"))) {
//how can i test weather or not the player has obtained the key?
System.out.println("The bridge has unlocked and lowered, you can now cross!");
enterScan.nextLine();
cave();
}
else if (choice==1){
System.out.println("You do not have the key to unlock the bridge yet.");
enterScan.hasNextLine();
drawBridge();
}
if (choice==2) {
System.out.println("You go back to The brick road.");
enterScan.nextLine();
brickRoad();
}
}
public void shack() {
System.out.println("In front of the shack you see a pile of wood, to the left is the shack entrance.");
}
public void guardBarracks() {
int choice;
System.out.println("On the table to your right you find 13 gold!");
System.out.println("Left of you is a door.");
System.out.println("1: Pick .up gold");
System.out.println("2: Go through door.");
System.out.println("3: Go back.");
choice = scan.nextInt();
if( choice==1) {
myGold = myGold + 13;
System.out.println("You currently have: " + myGold + " gold coins.");
enterScan.nextLine();
guardBarracks();
}
if(choice==2) {
System.out.println("You are now in the castle's main hall.");
}
if(choice==3) {
window();
}
}
public void window() {
int choice;
System.out.println("You can quietly climb through the window or turn back.");
System.out.println("1: Climb through window.");
System.out.println("2: Go back");
choice = scan.nextInt();
if (choice==1) {
System.out.println("You are now in the guard barracks, be quiet!");
guardBarracks();
}
if (choice==2) {
System.out.println("You go back in front of the castle.");
castle();
}
}
public void generalGoodsStore() {
int choice;
System.out.println("Welcome, what can we help you with?\n");
System.out.println("1: Apple 10 gold (heals 8 HP)");
System.out.println("2: Chicken 18 gold (heals 15 HP)");
System.out.println("3: Shovel 68 gold");
System.out.println("4: bridge key 200 gold");
System.out.println("5: Go back");
System.out.println("What would you lke to buy?");
choice = scan.nextInt();
if ((choice==1) && (myGold >= 10)) {
inv.add("Apple");
myGold = myGold - 10;
System.out.println("You have purchased an apple, enjoy.\n" + "Your current gold is " + myGold);
enterScan.nextLine();
generalGoodsStore();
}
else if((choice==1) && (myGold < 10)) {
System.out.println("You do not have enough gold, sorry.");
enterScan.nextLine();
generalGoodsStore();
}
if ((choice==2) && (myGold >= 15)) {
inv.add("Chicken");
myGold = myGold - 15;
System.out.println("You have purchased some chicken, enjoy.\n" + "Your current gold is " + myGold);
enterScan.nextLine();
generalGoodsStore();
}
else if((choice==2) && (myGold < 15)) {
System.out.println("You do not have enough gold, sorry.");
enterScan.nextLine();
generalGoodsStore();
}
if ((choice==3) && (myGold >= 68)) {
inv.add("Shovel");
myGold = myGold - 68;
System.out.println("You have purchased a shovel, enjoy.\n" + "Your current gold is " + myGold);
enterScan.nextLine();
generalGoodsStore();
}
else if((choice==3) && (myGold < 68)) {
System.out.println("You do not have enough gold, sorry.");
enterScan.nextLine();
generalGoodsStore();
}
if ((choice==4) && (myGold >= 200)) {
inv.add("Key");
myGold = myGold - 200;
System.out.println("You have purchased the drawbridge key, have a safe journey.");
System.out.println("You might want to prepare for what lies past the bridge!.\n" +"Your current gold is " + myGold);
enterScan.nextLine();
generalGoodsStore();
}
else if((choice==4) && (myGold < 200)) {
System.out.println("You do not have enough gold, sorry.");
enterScan.nextLine();
generalGoodsStore();
}
if (choice==5) {
System.out.println("You leave the store and go back to the brick road.");
brickRoad();
}
}
public void cave() {
int choice;
System.out.println("Atlast, you are at the cave entrance!\n");
System.out.println("The door has been baricaded, looks like you will need an axe to get past\n");
System.out.println("There is a sign that says 'Keep Out' on an old wooden post.\n ");
System.out.println("On another sign that has faded almost past legibility you barely make out ");
System.out.println("the word 'DANGER'.\n");
System.out.println("There is a path on the right but you cannot see where it leads to.");
choice = scan.nextInt();
System.out.println("1: Destroy baricade and enter the old cave.");
System.out.println("2: Follow the path to wherever it leads.");
System.out.println("3: Go back. ");
if((choice==1) && (inv.contains("Axe")) ) {
System.out.println("Hurray, you destroyed the baricade and entered the cave!");
}
else if (choice==1) {
System.out.println("You need to find an axe to destroy the baricade.");
enterScan.nextLine();
cave();
}
if (choice==2) {
System.out.println("You follow the path");
path();
}
}
public void path() {
System.out.println("You reach the end of the path, there is nothing but dirt and \nrocks for as far as you can see.");
}
public void castleKitchen() {
inv.add("Kitchen knife");
System.out.println(inv);
}
public void fight() {
}
public void Attack(){
int playerDamage = 0;
if(myWeapon.equals("kitchen knife")) {
playerDamage = new java.util.Random().nextInt(5);
}
if(myWeapon.equals("axe")) {
playerDamage = new java.util.Random().nextInt(8);
}
System.out.println("You attacked the monster and gave " + playerDamage + "damage.");
monsterHP = monsterHP - playerDamage;
System.out.println("monsterHP: " + monsterHP);
if(monsterHP<1) {
win();
}
if(monsterHP>0) {
int monsterDamage;
monsterDamage = new java.util.Random().nextInt(4);
System.out.println("The monster attacked you and gave " + monsterDamage + " damage.");
myHP = myHP - monsterDamage;
System.out.println("Player HP: " + myHP + ".");
if(myHP<1) {
System.out.println("You have died.");
dead();
}
if(myHP>0) {
fight();
}
}
}
public void win() {
System.out.println("You kiled the monster");
}
public void dead() {
int choice;
System.out.println("Would you like to restart?\n");
System.out.println("1: Yes");
System.out.println("2: No");
choice = scan.nextInt();
if(choice==1) {
playerSetUp();
}
if(choice==2) {
Exit();
}
}
public void Exit() {
}
}
Any help solving this problem would be appreciated.