fixed rooms, worked on take command

This commit is contained in:
jslightham
2019-05-10 12:54:16 -04:00
parent 37a428fa93
commit 9b1cd284ee
5 changed files with 90 additions and 60 deletions

View File

@@ -89,7 +89,7 @@ class Command {
}
public boolean hasItem(){
return item.equals("");
return !item.equals("");
}
public boolean hasDirection() {
return CommandWords.isDirection(direction);
@@ -97,4 +97,7 @@ class Command {
public String getDirection() {
return direction;
}
public String getItem() {
return item;
}
}

View File

@@ -1,6 +1,8 @@
package com.bayviewglen.zork.Entities;
import com.bayviewglen.zork.Items.Item;
import com.bayviewglen.zork.Items.*;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
public class Player extends Entity{
@@ -12,11 +14,20 @@ public class Player extends Entity{
super();
}
public boolean addToInventory(Item item){
if(currentInventoryWeight + item.getWeight() < INVENTORY_CAPACITY){
inventory.add(item);
System.out.println(item.getName() + " add");
return true;
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);
return true;
}
} catch (Exception e) {
return false;
}
return false;
}

View File

@@ -6,6 +6,7 @@ import java.lang.reflect.Constructor;
import java.util.HashMap;
import java.util.Scanner;
import com.bayviewglen.zork.Entities.Player;
import com.bayviewglen.zork.Items.*;
/**
@@ -26,6 +27,7 @@ import com.bayviewglen.zork.Items.*;
*/
class Game {
private Parser parser;
private Player player;
private Room currentRoom;
// This is a MASTER object that contains all of the rooms and is easily
// accessible.
@@ -110,11 +112,12 @@ class Game {
public Game() {
try {
initRooms("data/Rooms.dat");
currentRoom = masterRoomMap.get("ROOM_1");
currentRoom = masterRoomMap.get("CIRCLE_ROOM");
} catch (Exception e) {
e.printStackTrace();
}
parser = new Parser();
player = new Player();
}
/**
@@ -171,6 +174,20 @@ class Game {
case "eat":
System.out.println("Do you really think you should be eating at a time like this?");
break;
case "take":
if(command.hasItem()) {
if(player.addToInventory(command.getItem())) {
System.out.println("Taken");
}else {
System.out.println("You cannot carry any more!");
}
}else {
System.out.println("Take what?");
}
break;
case "look":
System.out.print("Items: ");
for(Item i : currentRoom.getItems()) {