Conflicts:
	data/rooms.dat
This commit is contained in:
vleevalerio
2019-05-08 14:35:10 -04:00
7 changed files with 709 additions and 622 deletions

View File

@@ -1,18 +1,22 @@
Room Name: Circle Room
Room Description: You are in the circular room. The windows to the west are bolted shut and curtains cover them. To the east, a hallway.
Exit Rooms: E-Apple Hallway
Items: Candlestick, Candlestick
Room Name: Apple Hallway
Room Description: You are in an empty hallway. Many closed doors surround you. To the west is the round room and north is the stairs. You cannot see what they lead to.
Exit Rooms: Circle Room, N-Porcupine Stairs
Items:
Room Name: Porcupine Stairs
Room Description: You are in the Porcupine Stairs. Below you is the second floor and above you is the third floor.
Room Description: You are in the Porcupine Stairs. The stone, cold walls are trapped in darkness. Below you is the second floor and above you is the third floor.
Exit Rooms: up-third floor, down-second floor
Items:
Room Name: Hallway 3
Room Description: You are in an empty hallway. Many closed doors surround you. To the west is the round room and north is the stairs. You cannot see what they lead to.
Room Name: Bulb Room
Room Description: You are in the Bulb Room. There is a ragged red rug with a noticeable lump in the middle. One window facing north is bolted shut.
Exit Rooms: W-Round Room (third floor), N-Stairs to second floor
Items:
Room Name: Hallway 3
Room Description: You are in an empty hallway. Many closed doors surround you. To the west is the round room and north is the stairs. You cannot see what they lead to.

View File

@@ -21,6 +21,7 @@ import java.util.ArrayList;
* The second word is not checked at the moment. It can be anything. If this
* game is extended to deal with items, then the second part of the command
* should probably be changed to be an item rather than a String.
* test
*/
class Command {
private String commandWord;
@@ -37,6 +38,18 @@ class Command {
commandWord = firstWord;
this.otherWords = otherWords;
this.direction = direction;
if(direction.equals("e"))
this.direction = "east";
if(direction.equals("w"))
this.direction = "west";
if(direction.equals("s"))
this.direction = "south";
if(direction.equals("n"))
this.direction = "north";
if(direction.equals("u"))
this.direction = "up";
if(direction.equals("d"))
this.direction = "down";
this.item = item;
}
@@ -79,7 +92,7 @@ class Command {
return item.equals("");
}
public boolean hasDirection() {
return CommandWords.isDirection(commandWord);
return CommandWords.isDirection(direction);
}
public String getDirection() {
return direction;

View File

@@ -49,7 +49,11 @@ class CommandWords {
}
// Check if given string is direction
public static boolean isDirection(String aString) {
try {
return m_words.get(aString).equals("direction");
}catch(Exception e) {
return false;
}
}
public static boolean isItem(String aString){

View File

@@ -12,7 +12,7 @@ public class Player extends Entity{
super();
}
private boolean addToInventory(Item item){
public boolean addToInventory(Item item){
if(currentInventoryWeight + item.getWeight() < INVENTORY_CAPACITY){
inventory.add(item);
System.out.println(item.getName() + " add");
@@ -21,7 +21,7 @@ public class Player extends Entity{
return false;
}
private void removeFromInventory(Item item){
public void removeFromInventory(Item item){
inventory.remove(item);
}

View File

@@ -2,6 +2,7 @@ package com.bayviewglen.zork;
import java.io.File;
import java.io.FileNotFoundException;
import java.lang.reflect.Constructor;
import java.util.HashMap;
import java.util.Scanner;
@@ -34,10 +35,10 @@ class Game {
// masterRoomMap.get("GREAT_ROOM") will return the Room Object that is the
// Great Room (assuming you have one).
private HashMap<String, Room> masterRoomMap;
private HashMap<Item, String> itemsInRooms = new HashMap<Item, String>();
//private HashMap<Item, String> itemsInRooms = new HashMap<Item, String>();
private void initRooms(String fileName) throws Exception {
itemsInRooms.put(new Candlestick(), "Candlestick");
//itemsInRooms.put(new Candlestick(), "Candlestick");
masterRoomMap = new HashMap<String, Room>();
Scanner roomScanner;
try {
@@ -51,6 +52,19 @@ class Game {
// Read the Description
String roomDescription = roomScanner.nextLine();
room.setDescription(roomDescription.split(":")[1].replaceAll("<br>", "\n").trim());
// Read the Items
String items = roomScanner.nextLine();
try {
String[] itemArr = items.split(":")[1].split(",");
for(String s : itemArr) {
Class<?> clazz = Class.forName("com.bayviewglen.zork.Items." + s.trim());
Constructor<?> ctor = clazz.getConstructor();
Item object = (Item) ctor.newInstance();
room.addItem(object);
}
}catch(Exception e) {
}
// Read the Exits
String roomExits = roomScanner.nextLine();
// An array of strings in the format E-RoomName
@@ -98,7 +112,6 @@ class Game {
initRooms("data/Rooms.dat");
currentRoom = masterRoomMap.get("ROOM_1");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
parser = new Parser();
@@ -159,10 +172,17 @@ class Game {
System.out.println("Do you really think you should be eating at a time like this?");
break;
case "look":
System.out.print("Items: ");
for(Item i : currentRoom.getItems()) {
System.out.print(i.getName() + " ");
}
System.out.println();
/*
for (Item i : itemsInRooms.keySet()) {
System.out.print(i.getName() + " ");
}
System.out.println();
*/
break;
default:
return false;

View File

@@ -45,7 +45,7 @@ class Parser {
} catch (java.io.IOException exc) {
System.out.println("There was an error during reading: " + exc.getMessage());
}
StringTokenizer tokenizer = new StringTokenizer(inputLine);
StringTokenizer tokenizer = new StringTokenizer(inputLine.toLowerCase());
while(tokenizer.hasMoreTokens()) {
words.add(tokenizer.nextToken());
}

View File

@@ -16,13 +16,16 @@ package com.bayviewglen.zork;
* to the neighbouring room, or null if there is no exit in that direction.
*/
import java.util.Set;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import com.bayviewglen.zork.Items.*;
class Room {
private String roomName;
private String description;
private HashMap<String, Room> exits; // stores exits of this room.
private ArrayList<Item> items;
/**
* Create a room described "description". Initially, it has no exits.
@@ -31,6 +34,7 @@ class Room {
public Room(String description) {
this.description = description;
exits = new HashMap<String, Room>();
items = new ArrayList<Item>();
}
public Room() {
@@ -38,6 +42,7 @@ class Room {
roomName = "DEFAULT ROOM";
description = "DEFAULT DESCRIPTION";
exits = new HashMap<String, Room>();
items = new ArrayList<Item>();
}
public void setExit(char direction, Room r) throws Exception {
@@ -69,6 +74,47 @@ class Room {
exits.put(dir, r);
}
/*
* Add passed in item to item array list
*/
public void addItem(Item item) {
items.add(item);
}
/*
* Remove first instance of item passed in
* Return item if removed, otherwise return null
*/
public Item removeItem(Item item) {
for(int i=0; i<items.size(); i++) {
if(item.equals(items.get(i))) {
items.remove(i);
return item;
}
}
return null;
}
/*
* Remove item at index
* Return item if removed, otherwise return null
*/
public Item removeItem(int i) {
if(i >= items.size())
return null;
Item temp = items.get(i);
items.remove(i);
return temp;
}
public ArrayList<Item> getItems() {
return items;
}
public Item getItem(int i) {
return items.get(i);
}
/**
* Define the exits of this room. Every direction either leads to another
* room or is null (no exit there).