import java.util.ArrayList;
import java.util.HashMap;
/**
* Write a description of class Game here.
*
* @author (Christopher )
* @version (a version number or a date)
*/
public class Game
{
ArrayList <Item> myArray;
HashMap <String, Room> myNeighbor;
Room currentRoom;
String currentMessage;
Room hallway, kitchen, bathroom, livingRoom, upstairsLobby, blakesRoom, jaysRoom, mikesRoom;
Item crumbs, eggs, cellPhone, textBooks, poptarts, pizzaRolls, clothes, chips;
public Game()
{
ArrayList <Item> myArray = new ArrayList();
currentRoom = hallway;
}
private void createRooms()
{
myNeighbor = new HashMap <String, Room> ();
crumbs = new Item("Crumbs", "small crumbs of some kind of food", 100);
eggs = new Item("Raw Eggs", "a couple of raw eggs still contained within their egg shells", 1100);
cellPhone = new Item("Cell Phone", "Mike's cell phone he must have forgotten here...", 0);
textBooks = new Item("Textbooks", "Jay's textbooks, because he can't use his bedroom to store his stuff", 0);
poptarts = new Item("Pop Tarts", "an un-opened box of chocolate pop tarts that someone must have left behind...", 1500);
pizzaRolls = new Item("Pizza Rolls", "cooked steaming pizza rolls piled high", 2000);
clothes = new Item("Clothes", "clothes, a lot of clothes all over the floor and all over the room, who knows if they're clean or not...", 0);
// miningTools = new Item("Mining Tools", "pickaxes, drills, and everything else you need to extract rocks and minerals from the earth's crust", 100);
chips = new Item("Chips", "chip bag hidden away that is only half full now", 400);
hallway = new Room("in a dark hallway with crumbs scattered over the ground", crumbs);
kitchen = new Room("in a kitchen with raw eggs lying on the counter tops", eggs);
bathroom = new Room("in a bathroom with a stand up shower, a washer, a drier, and Mike's cell phone left behind laying on the counter", cellPhone);
livingRoom = new Room("in a living room with Jay's textbooks all over the room", textBooks);
upstairsLobby = new Room("in a lobby at the top of the stairs with a box of pop tarts on the ground", poptarts);
blakesRoom = new Room("in a dark room with towers of pizza rolls covering the desk and scattered across the bed", pizzaRolls);
jaysRoom = new Room("in a cluttered room with clothes covering every inch of the floor and nothing hanging on the walls", clothes);
mikesRoom = new Room("in a bed room with mining tools and a bag of chips hidden underneath a pillow on the bed", chips);
hallway.addNeighbor("north", kitchen);
hallway.addNeighbor("west", upstairsLobby);
hallway.addNeighbor("east", livingRoom);
kitchen.addNeighbor("west", bathroom);
kitchen.addNeighbor("south", hallway);
bathroom.addNeighbor("east", kitchen);
livingRoom.addNeighbor("west", hallway);
upstairsLobby.addNeighbor("north", jaysRoom);
upstairsLobby.addNeighbor("west", blakesRoom);
upstairsLobby.addNeighbor("east", mikesRoom);
upstairsLobby.addNeighbor("south", hallway);
blakesRoom.addNeighbor("east", upstairsLobby);
jaysRoom.addNeighbor("south", upstairsLobby);
mikesRoom.addNeighbor("west", upstairsLobby);
}
private void setWelcomeMessage()
{
currentMessage = "You are locked inside of a campus view apartment. The goal of this game is to eat 5000 calories to maximize gains so you can leave. You will have to navigate around the apartment searching for food and eating it to obtain your calorie goal.";
}
public String getMessage()
{
return currentMessage;
}
public void help()
{
String message1 = "If you are short on calories, be sure to check the bedrooms";
String message2 = "Don't forget to go upstairs";
String reminder = "Remember the goal of the game to get 5000 calories";
}
public void look()
{
currentMessage = currentRoom.getLongDescription();
}
public void move(String direction)
{
String msg;
Room nextRoom = currentRoom.getNeighbor(direction);
if (nextRoom == null){
msg = "You can't go in that direction";
}
else{
currentRoom = nextRoom;
msg = currentRoom.getLongDescription();
}
}
//
// public boolean gameOver()
// {
// int count = 0;
//
// for(int i = 0; i < myArray.size(); i++ ){
// count += myArray.indexOf(i).getCalories(;
// }
// if(count == 5000){
// currentMessage = "You have won!";
// return true;
// }
// else{
// return false;
// }
// }
public void take()
{
if(currentRoom.hasItem() == false){
currentMessage = "there is not an item in the room to take";
}
else if(currentRoom.getItem().getCalories() > 100){
currentMessage = "there is not enough calories in here for you to increase gains";
}
else{
currentRoom.addItem(currentRoom.getItem());
currentMessage = "you are now holding the item";
}
}
private Item checkForItem(String name)
{
for(int i = 0; i < myArray.size(); i++ ){
if(i + "" == name){
return currentRoom.getItem();
}
}
return null;
}
public void drop(String name)
{
for(int i = 0; i < myArray.size(); i++ ){
Item temp = myArray.remove(i);
if(i + "" == name && currentRoom.hasItem() == false){
myArray.remove(i);
currentRoom.addItem(temp);
currentMessage = "you have successfully dropped the item in the room";
}
else if(currentRoom.hasItem() == true)
{
currentMessage = "the room already has an item";
}
else if(i +"" != name)
{
currentMessage = "you are not holding that item";
}
}
}
public void show()
{
if(myArray.size() > 0){
currentMessage = "" + myArray;
}
}
public static void main(String ar
System.out.println(g.getMessage());
g.move("west");
System.out.println(g.getMessage());
g.take();
System.out.println(g.getMessage());
g.move("west");
System.out.println(g.getMessage());
g.move("east");
System.out.println(g.getMessage());
g.move("south");
System.out.println(g.getMessage());
g.move("west");
System.out.println(g.getMessage());
}
}
**************************************************************************************************
import java.util.HashMap;
/**
* Write a description of class Room here.
*
* @author (Christopher Saikalis)
* @version (a version number or a date)
*/
public class Room
{
private String description;
private Item item;
private HashMap <String, Room> myNeighbor;
public Room (String pDescription)
{
description = pDescription;
item = null;
HashMap <String, Room> myNeighbor = new HashMap <String, Room> ();
}
public Room (String pDescription, Item pItem)
{
description = pDescription;
item = pItem;
}
public String getDescription()
{
return description;
}
public Item getItem()
{
return item;
}
public void addItem(Item i)
{
item = i;
}
public boolean hasItem()
{
if (item != null)
return true;
else
return false;
}
public void addNeighbor(String pDirection, Room r)
{
myNeighbor.put(pDirection, r);
}
public Room getNeighbor(String pDirection)
{
Room next = myNeighbor.get(pDirection);
return next;
if(next != null){
return next;
}
else{
return null;
}
}
public Item removeItem()
{
Item temp;
temp = item;
item = null;
return temp;
}
public String getLongDescription()
{
String part1 = "You are " + description;
String part2 = "You see ";
if(item != null){
return part1 + "" + part2 + "" + item.getDescription() + "" + item.getCalories();
}
return part1;
}
}
The first section is my game class, The Game class is responsible for keeping track of the player’s items and the current location. The second section is my room class, Implement a class to maintain information about a room including: a description of the room (String), an item (Item) and a list of all adjacent Rooms (HashMap).
When I run the main method to test the methods, I get a null.pointer.exception with every method I call. For some reason (I do not know why) Every variable is set to null when I run the debugger, so I assume this is why I am getting the error. Any help with how I can fix this or if there is anything I am doing wrong please do help. Also this is my first semester of programming so I am a semi beginner.
******************UPDATE!!!!************ Ok I changed my constructor and it seemed to have fixed that? now I still get the same error here myNeighbor.put(pDirection, r); which is in public void addNeighbor(String pDirection, Room r) in my room class (the second section from original post)