Story Text Applet

<< Perspective Floor | FinalProjectsTrailIndex | Battleship >>

Room.java

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Room {

	//protected ArrayList<Item> items;
	protected String name, description;
	protected HashMap<String, Room> exits; 
	public Room(String name)
	{
		//items = new ArrayList<Item>();
		this.name=name;
		description = "You are in a room";
		exits = new HashMap<String, Room>();
	}
	public String getDescription(){ 
		return "\n"+description+"\n";
	}
	public void setDescription(String s){ 
		description=s;
	}
	public void addExit(String s, Room r){
		exits.put(s, r);
	}
	public String getMenu(){
		String m="Choices: ";
		String[] k=exits.keySet().toArray(new String[0]);
		for (String s:k){
			m+=s+" ";
		}
		return m;
	}

	public Room getRoom(char ch){
		String[] k= exits.keySet().toArray(new String[0]);
		for(String s:k)
		  if(ch==s.charAt(0))
			  return exits.get(s);
		return null;
	}

}

StoryTextApplet.java

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class StoryTextApplet extends Applet implements KeyListener
{
	private TextArea ta;

	private Room currentRoom, field, door, house;
	public void init(){
		this.setFocusable(true);
		this.requestFocus();
		//setLayout(new GridLayout(2,0));
		addKeyListener(this);
		ta = new TextArea("Wecome\n",30, 80, TextArea.SCROLLBARS_VERTICAL_ONLY);
		ta.setEditable(false);
		ta.setBackground(Color.BLACK);
		ta.setForeground(Color.GREEN);

		ta.setFont(new Font("Courier", Font.BOLD , 18 ));

		add(ta);
		initField();
		initDoor();
		field.addExit("N)orth", door);
		initHouse();
		door.addExit("O)pen", house);
		currentRoom=field;
		ta.append(currentRoom.getDescription()+"\n");
		ta.append(currentRoom.getMenu());
	}
    private void initHouse() {
		house = new Room("Entry");
		house.setDescription("You are in the entry of a house.");
		house.addExit("D)oor", door);

	}
	private void initDoor() {
		door = new Room("Door");
		door.setDescription("You are standing in front of a Door of a house");
		door.addExit("S)outh", field);
	}
	private void initField() {
		field = new Room("F)ield");
		field.setDescription("You are in a field.  You see a house in the distance.");

	}
	public void paint(Graphics g){
    		//g.setColor(Color.WHITE);
    		//g.fillRect(0, 0, getWidth(), getHeight());
    		//g.setColor(Color.YELLOW);
    		//g.fillOval(350, 500, 200, 200);
    		this.requestFocus();
    }
	@Override
	public void keyTyped(KeyEvent e) {}

	@Override
	public void keyPressed(KeyEvent e) {
		char ch=Character.toUpperCase(e.getKeyChar());	
		Room newRoom = currentRoom.getRoom(ch);

		if(newRoom==null)
			ta.append("\nI don't understand "+ch+"\n");
		else{
			currentRoom=newRoom;
		}
		ta.append(currentRoom.getDescription());
		ta.append("\n"+currentRoom.getMenu());
	}

	@Override
	public void keyReleased(KeyEvent e) {}
}