Sooooo... I am in the progress of building a text based RPG with JAVA, and something is wrong.... It will compile, It'll run, but... well, it's hard to explain. I'll put the code up first.
import java.util.Scanner;
public class XOBYT
{
public static void main(String[] args)
{
String choice;
Scanner scan = new Scanner(System.in);
System.out.println("COPYRIGHT 2016 HARBNGER STUDIOS\nYou wake up in a broken-down alabaster\nhouse with no knowledge of who\nyou are or where you came from.\nWhich direction do you want to head? (options: NORTH, SOUTH, EAST, WEST)");
choice = scan.nextLine();{
if(choice.equals("NORTH")){System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED NORTH TO A RUN-DOWN VILLAGE. CARCASSES EVERYWHERE.\nNO SURVIVORS. I WONDER WHAT HAPPENED HERE.\nI LOOTED THE BODIES, TALOS BLESS MY SOUL. I FOUND A PISTOL AND SOME GAUZE. I CAN VIEW MY INVENTORY, HIT THE ROAD, OR LINGER AROUND.\n\n(options: INVENTORY,ROAD,LINGER)");}
choice = scan.nextLine();{
if(choice.equals("INVENTORY")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644\n\nI TRAVELED SOUTH AND STOPPED AT AN ABANDONED\nOUTPOST. IT HAS SOME SUPPLIES. I PICKED\nUP A PISTOL AND SOME NANITE SYRINGES. I CAN CHECK\nMY INVENTORY, MOVE FARTHER SOUTH, OR EXPLORE.\n\n(options: INVENTORY,FARTHER,EXPLORE)");}
choice = scan.nextLine();{
}
if(choice.equals("FARTHER")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED EAST AND STOPPED BY A DIRTY STREAM.\nIT'S FILLED WITH GARBAGE, BUT THERE ARE ALSO PLASTIC BOTTLES.\nSHOULD I FILL THEM WITH WATER OR MOVE ON?\n\n(options: FILL,MOVE)");}
choice = scan.nextLine();{
}
if(choice.equals("EXPLORE")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED WEST AND FOUND AN ABANDONED SHACK.\nSHOULD I SEARCH IT FOR LOOT OR MOVE ON?\n\n(options: SEARCH,MOVE)");}}
choice = scan.nextLine();{}
if(choice.equals("SOUTH")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644\n\nI TRAVELED SOUTH AND STOPPED AT AN ABANDONED\nOUTPOST. IT HAS SOME SUPPLIES. I PICKED\nUP A PISTOL AND SOME NANITE SYRINGES. I CAN CHECK\nMY INVENTORY, MOVE FARTHER SOUTH, OR EXPLORE.\n\n(options: INVENTORY,FARTHER,EXPLORE)");}
choice = scan.nextLine();{
}
if(choice.equals("EAST")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED EAST AND STOPPED BY A DIRTY STREAM.\nIT'S FILLED WITH GARBAGE, BUT THERE ARE ALSO PLASTIC BOTTLES.\nSHOULD I FILL THEM WITH WATER OR MOVE ON?\n\n(options: FILL,MOVE)");}
choice = scan.nextLine();{
}
if(choice.equals("WEST")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED WEST AND FOUND AN ABANDONED SHACK.\nSHOULD I SEARCH IT FOR LOOT OR MOVE ON?\n\n(options: SEARCH,MOVE)");}}
choice = scan.nextLine();{
}
}
}
I can't seem to figure it out, but i think the "if" statements are conflicting with each other. when I run it, type "NORTH", and then type either "FARTHER" or "EXPLORE", The Command Prompt goes blank. It doesn't do what it's supposed to... Except when you type "INVENTORY". It then works perfectly. It happens again if i switch the places of "choice equals INVENTORY" with any other "Choice equals," except then it'll be, again, the top "if" statement. I'm typing this on Notepad++ and compiling via Command prompt. Thanks in advance.
EDIT: According to some comments, I forgot that I neglected to add that I am semi-rusty to java, and that I need specifics. If you can, walk me through it like a baby. If it's too big of a hassle, skip my question.
EDIT: I deleted most of the unneeded brackets. If I still have some, please tell me. Here is what I have, and it runs and compiles almost perfectly.
import java.util.Scanner;
public class XOBYT
{
public static void main(String[] args)
{
String choice;
Scanner scan = new Scanner(System.in);
System.out.println("COPYRIGHT 2016 HARBNGER STUDIOSYou wake up in a broken-down alabaster\nhouse with no knowladge of who\nyou are or where you came from.\nWhich direction do you want to head? (options: NORTH, SOUTH, EAST, WEST)");
choice = scan.nextLine();
if(choice.equals("NORTH")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED NORTH TO A RUN-DOWN VILLAGE. CARCASSES EVERYWHERE.\nNO SURVIVORS. I WONDER WHAT HAPPENED HERE.\nI LOOTED THE BODIES, TALOS BLESS MY SOUL. I FOUND A PISTOL AND SOME GAUZE. I CAN VIEW MY INVENTORY, HIT THE ROAD, OR LINGER AROUND.\n\n(options: INVENTORY,ROAD,LINGER)");
}
choice = scan.nextLine();
if(choice.equals("INVENTORY")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644\n\nI TRAVELED SOUTH AND STOPPED AT AN ABANDONED\nOUTPOST. IT HAS SOME SUPPLIES. I PICKED\nUP A PISTOL AND SOME NANITE SYRINGES. I CAN CHECK\nMY INVENTORY, MOVE FARTHER SOUTH, OR EXPLORE.\n\n(options: INVENTORY,FARTHER,EXPLORE)");
}
choice = scan.nextLine();
if(choice.equals("FARTHER")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED EAST AND STOPPED BY A DIRTY STREAM.\nIT'S FILLED WITH GARBAGE, BUT THERE ARE ALSO PLASTIC BOTTLES.\nSHOULD I FILL THEM WITH WATER OR MOVE ON?\n\n(options: FILL,MOVE)");
}
choice = scan.nextLine();
if(choice.equals("EXPLORE")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED WEST AND FOUND AN ABANDONED SHACK.\nSHOULD I SEARCH IT FOR LOOT OR MOVE ON?\n\n(options: SEARCH,MOVE)");
}
choice = scan.nextLine();
if(choice.equals("SOUTH")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644\n\nI TRAVELED SOUTH AND STOPPED AT AN ABANDONED\nOUTPOST. IT HAS SOME SUPPLIES. I PICKED\nUP A PISTOL AND SOME NANITE SYRINGES. I CAN CHECK\nMY INVENTORY, MOVE FARTHER SOUTH, OR EXPLORE.\n\n(options: INVENTORY,FARTHER,EXPLORE)");
}
choice = scan.nextLine();
if(choice.equals("EAST")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED EAST AND STOPPED BY A DIRTY STREAM.\nIT'S FILLED WITH GARBAGE, BUT THERE ARE ALSO PLASTIC BOTTLES.\nSHOULD I FILL THEM WITH WATER OR MOVE ON?\n\n(options: FILL,MOVE)");
}
choice = scan.nextLine();
if(choice.equals("WEST")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED WEST AND FOUND AN ABANDONED SHACK.\nSHOULD I SEARCH IT FOR LOOT OR MOVE ON?\n\n(options: SEARCH,MOVE)");}
}
choice = scan.nextLine();
}
}
Tested. Works near perfectly.
It looks like you have come from a procedural language like Basic/Pascal.
To allow extension and more rooms you should break out the functionality into classes.
Location - Details the location the player is in
Exit - A valid exit from the room (added to an exits list in the location)
Item - any Item in the room or inventory
Command - Possibly the Superclass of Exit detailing what can be done with something.
This is just a starting idea. You can then have a file containing the rooms etc that is loaded at start time, this way you can use the one engine to make multiple RPG levels/adventures. (you could even link in Graphics and sounds)
If you want to take a look at how something like TinyMuck (C/C++) does its stuff, you may get a better idea - There is a Java version of a MUD/MUCK out there which is heavily Object orientated.
On another note this is a cleaned up version of your code
import java.util.Scanner;
public class XOBYT
{
public static void main(String[] args)
{
String choice;
Scanner scan = new Scanner(System.in);
System.out.println("COPYRIGHT 2016 HARBNGER STUDIOS\nYou wake up in a broken-down alabaster\nhouse with no knowledge of who\nyou are or where you came from.\nWhich direction do you want to head? (options: NORTH, SOUTH, EAST, WEST)");
choice = scan.nextLine();
if(choice.equals("NORTH")){System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED NORTH TO A RUN-DOWN VILLAGE. CARCASSES EVERYWHERE.\nNO SURVIVORS. I WONDER WHAT HAPPENED HERE.\nI LOOTED THE BODIES, TALOS BLESS MY SOUL. I FOUND A PISTOL AND SOME GAUZE. I CAN VIEW MY INVENTORY, HIT THE ROAD, OR LINGER AROUND.\n\n(options: INVENTORY,ROAD,LINGER)");}
choice = scan.nextLine();
if(choice.equals("INVENTORY")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644\n\nI TRAVELED SOUTH AND STOPPED AT AN ABANDONED\nOUTPOST. IT HAS SOME SUPPLIES. I PICKED\nUP A PISTOL AND SOME NANITE SYRINGES. I CAN CHECK\nMY INVENTORY, MOVE FARTHER SOUTH, OR EXPLORE.\n\n(options: INVENTORY,FARTHER,EXPLORE)");}
choice = scan.nextLine();
if(choice.equals("FARTHER")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED EAST AND STOPPED BY A DIRTY STREAM.\nIT'S FILLED WITH GARBAGE, BUT THERE ARE ALSO PLASTIC BOTTLES.\nSHOULD I FILL THEM WITH WATER OR MOVE ON?\n\n(options: FILL,MOVE)");}
choice = scan.nextLine();
if(choice.equals("EXPLORE")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED WEST AND FOUND AN ABANDONED SHACK.\nSHOULD I SEARCH IT FOR LOOT OR MOVE ON?\n\n(options: SEARCH,MOVE)");}}
choice = scan.nextLine();
if(choice.equals("SOUTH")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644\n\nI TRAVELED SOUTH AND STOPPED AT AN ABANDONED\nOUTPOST. IT HAS SOME SUPPLIES. I PICKED\nUP A PISTOL AND SOME NANITE SYRINGES. I CAN CHECK\nMY INVENTORY, MOVE FARTHER SOUTH, OR EXPLORE.\n\n(options: INVENTORY,FARTHER,EXPLORE)");}
choice = scan.nextLine();
if(choice.equals("EAST")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED EAST AND STOPPED BY A DIRTY STREAM.\nIT'S FILLED WITH GARBAGE, BUT THERE ARE ALSO PLASTIC BOTTLES.\nSHOULD I FILL THEM WITH WATER OR MOVE ON?\n\n(options: FILL,MOVE)");}
choice = scan.nextLine();
if(choice.equals("WEST")){
System.out.println("\n\n\n\n--TERMINAL_LOG--\n\nI FOUND THIS HANDHELD TERMINAL LOG FIGURED I'D\nPUT IT TO SOME USE. TODAY IS, ACCORDING TO THIS, THE 15TH OF JAN, 2644.\n\nI TRAVELED WEST AND FOUND AN ABANDONED SHACK.\nSHOULD I SEARCH IT FOR LOOT OR MOVE ON?\n\n(options: SEARCH,MOVE)");}}
choice = scan.nextLine();
}
Which by the way doesnt have any sort of loop to loop round to do the command over and over.