-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRoom.java
135 lines (108 loc) · 3.84 KB
/
Room.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import java.util.HashMap;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Set;
import java.util.Collections;
/**
* Creates a given room and its attributes, such as
* its item, monster, and description.
*/
public class Room{
private String name;
private Item item;
private String description;
private Monster monster;
public Room(String name, Item item, String description, Monster monster){
this.name = name;
this.item = item;
this.description = description;
this.monster = monster;
}
public static HashMap<String, Room> createRooms(Scanner in){
// empty rooms hashmap
HashMap<String, Room> rooms = new HashMap<String, Room>();
HashMap<String, Monster> monsters = Monster.createMonsters(in);
HashMap<String, Item> items = Item.createItems(in);
while (true){
String name = FileUtil.getNonCommentLine(in);
if(name.equals("****************************************")){
break;
}
String description = FileUtil.readParagraph(in);
Monster monster = null;
Item item = null;
Room newRoom = new Room(name, item, description, monster);
rooms.put(name, newRoom);
}
in.close();
// create ArrayList of room names
Set<String> roomNameSet = rooms.keySet();
String[] roomNameList = roomNameSet.toArray(new String[roomNameSet.size()]);
ArrayList<String> roomNameArrayList = new ArrayList<String>();
for(String roomName: roomNameList){
roomNameArrayList.add(roomName);
}
roomNameArrayList.remove(roomNameArrayList.indexOf("hallway"));
roomNameArrayList.remove(roomNameArrayList.indexOf("exit"));
// create ArrayList of monster names
Set<String> monsterNameSet = monsters.keySet();
String[] monsterNameList = monsterNameSet.toArray(new String[monsterNameSet.size()]);
ArrayList<String> monsterNameArrayList = new ArrayList<String>();
for(String monsterName: monsterNameList){
monsterNameArrayList.add(monsterName);
}
// create ArrayList of item names
Set<String> itemNameSet = items.keySet();
String[] itemNameList = itemNameSet.toArray(new String[itemNameSet.size()]);
ArrayList<String> itemNameArrayList = new ArrayList<String>();
for(String itemName: itemNameList){
itemNameArrayList.add(itemName);
}
for (String monster: monsterNameArrayList){
if (monster.equals("mummy") || monster.equals("werewolf") || monster.equals("dracula harrington")) {
monsterNameArrayList.remove(monsterNameArrayList.indexOf(monster));
rooms.get("exit").setMonster(monsters.get(monster));
}
}
Collections.shuffle(roomNameArrayList);
assignMonsters(roomNameArrayList, monsterNameArrayList, rooms, monsters);
assignItems(roomNameArrayList, itemNameArrayList, rooms, items);
return rooms;
}
private static void assignMonsters(ArrayList<String> roomNameArrayList, ArrayList<String> monsterNameArrayList, HashMap<String, Room> rooms, HashMap<String, Monster> monsters){
for(int i = 0; i < monsterNameArrayList.size(); i++){
String roomName = roomNameArrayList.get(i);
String monsterName = monsterNameArrayList.get(i);
rooms.get(roomName).setMonster(monsters.get(monsterName));
}
}
private static void assignItems(ArrayList<String> roomNameArrayList, ArrayList<String> itemNameArrayList, HashMap<String, Room> rooms, HashMap<String, Item> items){
for(int i = 0; i < itemNameArrayList.size(); i++){
String roomName = roomNameArrayList.get(i);
String itemName = itemNameArrayList.get(i);
rooms.get(roomName).setItem(items.get(itemName));
}
}
public void killMonster(){
monster = null;
}
public void killItem()
{
item =null;
}
public String getName(){
return name;}
public Monster getMonster(){
return monster;}
public Item getItem(){
return item;}
public String getDescription(){
return description;
}
private void setMonster(Monster monster){
this.monster = monster;
}
private void setItem(Item item){
this.item = item;
}
}