我正在开展一个小小的游戏,那里有一个攻击者和一个后卫。
Player Attacker = new Player();
Player Deffender = new Player();
}
}
class Player{
int armees = 0;
int tarningar = 0;
Dice Dices[];
Player(){
armees = 10;
// if object name is Attacker, tarninger = 3, if defender = 2
Dices= new Dice[tarningar];
for(int i=0;i<Dices.length;i++){
Dices[i]=new Dice();
}
}
}
我在上面的代码中注释了,我希望有一个if语句来确定它应该有多少骰子。
如果无法做到这一点,可能采取另一种方式吗?
我也试过
Attacker.tarningar = 3;
Deffender.tarningar = 2;
在main中定义对象的位置,但它不会工作,因为它已经在类中运行了Player()..
(我还是java新手)谢谢
答案 0 :(得分:2)
将您的代码更改为:
Player Attacker = new Player(true);
Player Deffender = new Player(false);
}
}
class Player{
boolean attacker;
int armees = 0;
int tarningar = 0;
Dice Dices[];
Player(boolean attacker){
this.attacker = attacker;
armees = 10;
tarninger = attacker ? 3 : 2;
Dices= new Dice[tarningar];
for(int i=0;i<Dices.length;i++){
Dices[i]=new Dice();
}
}
}
答案 1 :(得分:2)
也许你可以这样做:
Player(boolean isAttacker){
armees = 10;
// if object name is Attacker, tarninger = 3, if defender = 2
int diceNum;
if (isAttacker) diceNum = 2;
else diceNum = 3;
Dices= new Dice[diceNum];
for(int i=0;i<Dices.length;i++){
Dices[i]=new Dice();
}
}
然后你需要告诉玩家在构建时是攻击还是防御。
Player p = new Player(true); // creates an attacker
答案 2 :(得分:2)
您应该添加一个变量来确定这是攻击者还是防御者。或者甚至更好,如果他们做不同的事情,为攻击者和后卫创建子类。
答案 3 :(得分:1)
如果您尝试基于变量名进行区分,则无法进行区分,因为在编译器优化期间会删除该信息。如果可以访问实例,则可以执行
if (this == attacker)
{
...
}
或者您可以为商店名称引入新字段
Player attacker = new Player("Attacker");
或者也许是枚举。
Player attacker = new Player(PlayerType.Attacker);