Welcome to the Java Programming Forums


The professional, friendly Java community. 21,500 members and growing!


The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.


>> REGISTER NOW TO START POSTING


Members have full access to the forums. Advertisements are removed for registered users.

Results 1 to 3 of 3

Thread: I need help deleting a line of code after it has been selected by the user.

  1. #1
    Junior Member
    Join Date
    Feb 2020
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default I need help deleting a line of code after it has been selected by the user.

    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.

  2. #2
    Member
    Join Date
    Apr 2014
    Posts
    92
    Thanks
    3
    Thanked 7 Times in 7 Posts

    Default Re: I need help deleting a line of code after it has been selected by the user.

    The guardBarracks function should only offer (and process) the option to pick up gold if the gold hasn't already been picked up. This is just one of possibly dozens or even hundreds of "states" that a game like this could end up needing to keep track of. So I would consider a more OOP approach where you have an object that holds all of these states. So for example, the guardBarracks function would only provide the option if gameState.barracksGoldLooted == false. When the gold is taken, it does gameState.playerGold += 13 and gameState.barracksGoldLooted = true. Something along those lines anyway.

    If you want to be even more OOP adventurous, consider a list of WorldLocation objects, each representing the state of the individual places on your map. Then you can do things like guardBarracks.goldLooted = true, generalGoodsStore.shovelAvailable = false, and even player.worldLocation = guardBarracks (assuming you made a Player object too!). Always be looking for ways to logically group and categorize your variables and functions together into an object, especially one that can be re-used in other areas of the code.

  3. #3
    Member
    Join Date
    Jul 2019
    Posts
    36
    Thanks
    2
    Thanked 4 Times in 4 Posts

    Default Re: I need help deleting a line of code after it has been selected by the user.

    simple solution for one method() (no OOP engine)
    it is not very clear in more complex scenarios
        boolean guardBarracksGold = true;  //gold in room
     
        public void guardBarracks() {
          String[] text = {""};
          boolean setText=true,
            gold = ! guardBarracksGold,   // gold in pocket
            again=true;
     
          while(again) {
            if (setText) {
                String dataStr =        // two scenarious with this gold not in pocket or yes 
                    (!gold? "On the table to your right you find 13 gold!|" :"")
                   +        "Left of you is a door.|"
                   +(!gold? "1"      +": Pick up gold.|" :"")
                   +(!gold? "2":"1") +": Go through door.|"
                   +(!gold? "3":"2") +": Go back.|"; 
     
                text = dataStr.split("\\|");
                setText = false;
            }
            for (String line: text) {
                System.out.println(line);
            }
     
            int choice = scan.nextInt();
            if (gold) choice++;
     
            if (choice==1 && !gold) {      // answer 0+1 in menu 2 can't get extra gold
                guardBarracksGold = false; // remember, gold is not in place
                gold    = true;            // menu 2
                myGold  = myGold + 13;
                System.out.println("You currently have: " + myGold + " gold coins.\n");
                setText = true;
                continue;
            }
            again=false;
            if (choice==2) {
                System.out.println("You are now in the castle's main hall.");
            }  
            if (choice==3) {
                window();
            }
          } //while
        }

Similar Threads

  1. Replies: 1
    Last Post: January 4th, 2018, 10:59 AM
  2. can someone give a code example of deleting data to a text file?
    By Nathanlll in forum What's Wrong With My Code?
    Replies: 3
    Last Post: September 15th, 2013, 06:40 AM
  3. JAVA code for deleting spaces from Text file
    By Maheshgx in forum File I/O & Other I/O Streams
    Replies: 1
    Last Post: April 17th, 2012, 06:26 AM
  4. help with user selected section has no available seat applet
    By chonch in forum What's Wrong With My Code?
    Replies: 1
    Last Post: March 31st, 2011, 07:39 AM
  5. [SOLVED] Can someone verify if this code for deleting a BST works?
    By scottb80 in forum Java Theory & Questions
    Replies: 2
    Last Post: November 2nd, 2010, 10:19 AM