Java游戏 - 拾取项目并查看功能

时间:2017-12-07 10:57:02

标签: java

我一直在创建一个java文本游戏,但我不知道如何实现最后两种方法。我希望它打印出房间里的物品和房间里的npc名称(一种Look功能)。我不确定如何继续下去。任何帮助都会得到满足。 enter image description here

Room[] place = new Room[]{station, UC, Ollies, lounge, palace, AT301};
Sword sword = new Sword();
Thing heal = new HealthPotion();
Thing armour = new Armour();
Thing trap = new Trap();

和NPC(Mike,Jake,Evil,Carl)

public abstract class Player{

//abstract attributes
private String name;
private int currentHealth;
private int maxHealth;
private int damage;
private Room currentRoom;
private int stack;
private int effect;


//Constructor for player
public Player(String name, int currentHealth, int maxHealth, int damage, int effect, int stack){
    this.name = name;
    this.currentHealth = currentHealth;
    this.maxHealth = maxHealth;
    this.damage = damage;
    this.effect = effect;
    this.stack = stack;
}

//getters
public String getName(){ return name;}
public int  getCurrentHealth(){ return currentHealth;}
public int getMaxHealth(){ return maxHealth;}
public int getDamage(){ return damage;}
public Room getCurrentRoom(){ return currentRoom;}
public int getEffect(){ return effect;}
public int getStack(){ return stack;}


//setters
public void setCurrentHealth(int currentHealth){this.currentHealth = currentHealth;}
public void setMaxHealth(int maxHealth){this.maxHealth = maxHealth;}
public void setDamage(int damage){ this.damage = damage;}
public void setCurrentRoom(Room room){this.currentRoom = room;}
public void setEffect(int effect){ this.effect = effect;}
public void setStack(int stack){ this.stack = stack;}
public void enter(Room room){ this.currentRoom = room;}

//abstract method because each player has a different attack;


public void takeDamage(int damage){ setCurrentHealth(this.currentHealth-damage);}

public boolean isDead(){
    if(this.currentHealth<=0){ return true;}
    return false;
}

}

除了播放器的Look功能外,我能够使一切功能正常。我无法弄清楚如何继续下去。

2 个答案:

答案 0 :(得分:1)

房间是项目的向量对吗?如果是这样,你可以在播放器类上执行一个函数,当它被调用时,它将转到你所在房间的向量,并简单地打印出向量中的项目,如下所示:

String lookAround(){
    ArrayList temp = (ArrayList)getCurrentRoom(); //returns the array containing the items in the current room
    for(Thing i : temp){
        i.getDescription(); //Method present in all classes that come from Thing that prints out the name of the item and/or its caracheteristics
    }
}

在房间的阵列中,您应该尝试在房间中包括所有玩家的名字,包括您自己,以便打印出房间里的每个人

希望这有帮助

答案 1 :(得分:0)

我建议您首先创建一个属性为Npc的课程name并将其添加到会议室。