首先,我对java很新。我正在尝试尽可能多地操纵我的代码以便更好地理解它。下面的代码完美地运行,但是当我尝试将它移动到它自己的构造中时(我认为这是正确的术语)它失败了。此外,代码只是一个很小的相关部分。
public static void main(Strings[] args) {
Hero Player1 = new Hero();
Hero Player2 = new Hero();
Player2.takeDamage(Player1.giveDamage());
Player1.takeDamage(Player2.giveDamage());
}
// Fails if:
public static void main(Strings[] args) {
Hero Player1 = new Hero();
Hero Player2 = new Hero();
combatPhase();
}
private static void combatPhase() {
Player2.takeDamage(Player1.giveDamage());
Player1.takeDamage(Player2.giveDamage());
}
基本上它要我使用Hero.takeDamage而不是Player1 / 2。有没有一种相当简单的方法来解决这个问题,所以我可以将它放在combatPhase()中以保持我的代码更有条理?
答案 0 :(得分:1)
你有几个选择,第一个是将Heroes传递给combatPhase方法,如下所示:
public static void main(Strings[] args)
{
Class main = new Class();
Hero player1 = new Hero();
Hero player2 = new Hero();
main.combatPhase(player1, player2);
}
private void combatPhase(Hero player1, Hero player2){
player2.takeDamage(player1.giveDamage());
player1.takeDamage(player2.giveDamage());
}
或者你可以像这样首先宣布英雄:
Hero player1 = new Hero();
Hero player2 = new Hero();
public static void main(Strings[] args)
{
Class main = new Class();
main.combatPhase();
}
private void combatPhase(){
player2.takeDamage(player1.giveDamage());
player1.takeDamage(player2.giveDamage());
}
答案 1 :(得分:0)
我可以很长时间地详细解释一切,因为我不确定你不理解的确切部分是什么。
我认为一个好的代码可能更好。这不是可行的方法,但它是一个很好的方式。
首先让我们定义一个英雄:
public class Hero {
private int damage;
public Hero(int damage){
this.damage = damage;
}
public int getDamage(){
return damage;
}
public void takeDamage(int damage){
//TODO
}
}
现在是一场基本的战斗:
public static void main(Strings[] args) {
Hero player1 = new Hero();
Hero player2 = new Hero();
player2.takeDamage(player1.getDamage());
player1.takeDamage(player2.getDamage());
}