take and inventory command

This commit is contained in:
jslightham
2019-05-16 22:40:55 -04:00
parent 4506c1e17f
commit 2781520ba5
5 changed files with 66 additions and 29 deletions

View File

@@ -1,6 +1,6 @@
Room name: Circle Room
Room Description: You are in the circular room. The windows to the west are bolted shut and curtains cover them.<br>To the east, a hallway. A scroll hangs on the north wall. Writing is visible.
Items: Scroll 1,Lockpick
Items:Lockpick
Exit Rooms: W-Apple Hallway
Room name: Apple Hallway
Room Description: You are in an empty hallway. Many closed doors surround you. To the west is the Circle Room and north is the Porcupine Stairs. The door to the stairs is locked. There is no key to the door.

View File

@@ -31,3 +31,5 @@ pen, item
book, item
socks, item
painting, item
inventory, verb
i, verb

View File

@@ -14,21 +14,11 @@ public class Player extends Entity{
super();
}
public boolean addToInventory(String item){
Class<?> clazz;
Item object;
try {
clazz = Class.forName("com.bayviewglen.zork.Items." + item.trim());
Constructor<?> ctor = clazz.getConstructor();
object = (Item) ctor.newInstance();
if(currentInventoryWeight + object.getWeight() < INVENTORY_CAPACITY){
inventory.add(object);
public boolean addToInventory(Item item){
if(currentInventoryWeight + item.getWeight() < INVENTORY_CAPACITY){
inventory.add(item);
return true;
}
} catch (Exception e) {
return false;
}
return false;
}
@@ -37,4 +27,8 @@ public class Player extends Entity{
}
public ArrayList<Item> getInventory() {
return inventory;
}
}

View File

@@ -175,12 +175,24 @@ class Game {
break;
case "take":
if(command.hasItem()) {
if(player.addToInventory(command.getItem())) {
Class<?> clazz;
Item object;
try {
clazz = Class.forName("com.bayviewglen.zork.Items." + command.getItem().substring(0, 1).toUpperCase().trim() + command.getItem().substring(1).trim());
Constructor<?> ctor = clazz.getConstructor();
object = (Item) ctor.newInstance();
if(!currentRoom.hasItem(object)) {
System.out.println("This room has no " + command.getItem() + "!");
}
else if(player.addToInventory(object)) {
currentRoom.removeItem(object);
System.out.println("Taken");
}else {
System.out.println("You cannot carry any more!");
}
} catch(Exception e) {
}
}else {
System.out.println("Take what?");
}
@@ -188,18 +200,39 @@ class Game {
break;
case "look":
System.out.print("Items: ");
boolean hasItems = false;
String items = "";
for(Item i : currentRoom.getItems()) {
System.out.print(i.getName() + " ");
hasItems = true;
items += i.getName() + " ";
}
if(hasItems) {
System.out.println(currentRoom.longDescription());
System.out.print("Items: ");
System.out.print(items);
System.out.println();
/*
for (Item i : itemsInRooms.keySet()) {
System.out.print(i.getName() + " ");
}else {
System.out.println(currentRoom.longDescription());
System.out.println("There are no items.");
}
System.out.println();
*/
break;
case "inventory": case "i":
boolean hasPlayerItems = false;
String itemsP = "";
for(Item i : player.getInventory()) {
hasPlayerItems = true;
itemsP += i.getName() + " ";
}
if(hasPlayerItems) {
System.out.print("Inventory: ");
System.out.print(itemsP);
System.out.println();
}else {
System.out.println("You are empty handed.");
}
break;
default:
return false;
}

View File

@@ -187,4 +187,12 @@ class Room {
public void setDescription(String description) {
this.description = description;
}
public boolean hasItem(Item item) {
boolean hasItem = false;
for(Item i : items) {
if(i.equals(item))
hasItem = true;
}
return hasItem;
}
}