成员 | 任务 |
---|---|
李成吉 | 后端逻辑开发 |
龚龙龙 | 前端页面开发 |
王茁园 | 单元测试 |
汪振宇 | 单元测试 |
2.1 扩展游戏,使得一个房间里可以存放任意数量的物件,每个物件可以有一个描述和一个重量值,玩家进入一个房间后,可以通过“look”命令查看当前房间的信息以及房间内的所有物品信息;
2.2 在游戏中实现一个“back”命令,玩家输入该命令后会把玩家带回上一个房间;
2.3 在游戏中实现一个更高级的“back”命令,重复使用它就可以逐层回退几个房间,直到把玩家带回到游戏的起点;
2.4 在游戏中增加具有传输功能的房间,每当玩家进入这个房间,就会被随机地传输到另一个房间;
2.5 在游戏中新建一个独立的Player类用来表示玩家,玩家具有一定的承受重量上限,玩家可以拿去房间内的物品或丢弃自身的物品,房间内设置有饼干,吃掉饼干可以增加自己的承受重量上限
类图
用例图
private ArrayList<Integer> weight = new ArrayList<>();
private int cookie;
public class Player {
String name;//玩家姓名
int maxWeight;//最大重量
ArrayList<Integer> PlayerWeights = new ArrayList<>();//玩家携带物品
public Player(String name,int maxWeight){
this.name=name;
this.maxWeight=maxWeight;
}
public void drop(Room room, int i){
int w = PlayerWeights.remove(i);
room.addWeight(w);
}
/**
* 玩家拿去房间中的物品
* @param room 房间
* @param n 物品序号
* @return 返回拿去结果
*/
public boolean take(Room room,int n){
int sum=0;
for(int i=0;i<PlayerWeights.size();i++){
sum+=PlayerWeights.get(i);
}
if(sum+room.getWeight().get(n)>maxWeight) return false;
else{
PlayerWeights.add(room.getWeight().get(n));
room.removeWeight(n);
return true;
}
}
/**
* 玩家吃掉房间内的魔法饼干
* @param room
*/
public void eatMagicCookie(Room room){
maxWeight+=room.getCookie();
room.removeCookie();
room.setCookie(0);
}
/**
* 求出玩家背包剩余量
* @return
*/
public int freeSpace(){
int sum=0;
for(int i=0;i<PlayerWeights.size();i++){
sum+=PlayerWeights.get(i);
}
return maxWeight-sum;
}
}
public class BackCommand extends Command {
@Override
/**
* 执行返回操作
*/
public boolean execute(Game game) {
Room currentRoom = game.getCurrentRoom();
LinkedList<String> directions = game.getDirections();
if (directions.isEmpty()) {
System.out.println("There is no door!");
}
else {
String direction="";
switch(directions.getFirst()){
case "east":
direction="west";
break;
case "west":
direction="east";
break;
case "south":
direction="north";
break;
case "north":
direction="south";
break;
case "radom":
direction="radom";
}
Room nextRoom = game.getCurrentRoom().getExit(direction);
game.removedirection();
game.setCurrentRoom(nextRoom);
System.out.println(nextRoom.getLongDescription());
}
return false;
}
}
/**
* 当前房间内的某个物品被玩家拿去
* @param n 拿去物品编号
* @return 拿去结果
*/
public boolean take(int n){
if(player.take(currentRoom,n)) return true;
else return false;
}
/**
* 玩家丢弃某个物品到当前房间
* @param n 玩家物品编号
*/
public void drop(int n){
player.drop(currentRoom,n);
}
/**
* 当前房间内的饼干被玩家所吃
*/
public void eatCookie(){
player.eatMagicCookie(currentRoom);
}
Room random = new Room("in the random room");
random.setExit("north",theater);
theater.setExit("south",random);//随机房间的位置