Java 如何从同一类的另一个对象调用变量
所以在最后一个return语句中,我试图获取另一个对象(被攻击的角色)的防御变量。我试着根据这个角色的力量属性取一个随机数,然后创建一个伤害属性。然后我会做伤害防御(从另一个角色)。有人知道我用什么代码吗?PS:请不要畏缩,这是我们这些天在学校学到的东西。从您的描述中,您希望您的方法Java 如何从同一类的另一个对象调用变量,java,bluej,Java,Bluej,所以在最后一个return语句中,我试图获取另一个对象(被攻击的角色)的防御变量。我试着根据这个角色的力量属性取一个随机数,然后创建一个伤害属性。然后我会做伤害防御(从另一个角色)。有人知道我用什么代码吗?PS:请不要畏缩,这是我们这些天在学校学到的东西。从您的描述中,您希望您的方法攻击返回enddam如下: import java.util.Random; public class Character { // instance variables - vervang deze doo
攻击返回enddam
如下:
import java.util.Random;
public class Character
{
// instance variables - vervang deze door jouw variabelen
private String _name;
private double _level;
private double _strenght;
private double _speed;
private double _defense;
private double _currenthp;
private double _maxhp;
/**
* Voorbeeld van een method - schrijf hier jouw comment
*
* @param y deze method krijgt deze parameter mee in de aanroep
* @return deze method geeft de som van x en y terug
*/
public Character()
{
}
public Character(String name,double level)
{
// schrijf hier jouw code
_name = name;
_level = level;
Random rand = new Random();
//level voor het berekenen van skills
int lvl = (int)level;
//stenght en speed parameter voor random
int stsplvl = 12*lvl - 8*lvl;
//defense parameter voor random
int deflvl = 6*lvl - 4*lvl;
//hp parameter voor random
int hplvl = 30*lvl - 20*lvl;
//Strenght berekenen
double st = (double)rand.nextInt(stsplvl);
st = st + 8*lvl;
_strenght = st;
//Speed berekenen
double sp = (double)rand.nextInt(stsplvl);
sp = sp + 8*lvl;
_speed = sp;
//Defense berekenen
double def = (double)rand.nextInt(deflvl);
def = def + 4*lvl;
_defense = def;
//Hp berekenen
double hp = (double)rand.nextInt(hplvl);
hp = hp + 20*lvl;
_currenthp = hp;
_maxhp = hp;
}
public void Character(String name,double level)
{
_name = name;
_level = level;
}
public void ploth()
{
System.out.println(_name + ": " + _currenthp + " / " + _maxhp + " HP");
}
public int attack(Character _other)
{
int defe = super (double._other _defense);
Random rando = new Random();
//_strenght is een double
int damcalc = (int)(1.2 * _strenght - 0.8 * _strenght);
int netdam = rando.nextInt(damcalc);
int totdam = (int)(netdam + 0.8*_strenght);
int enddam = totdam - defe;
}
}
删除void
方法Character
,如果它是一个构造函数,那么您已经有了一个具有相同签名的构造函数。虽然您可以执行\u other.\u defence
,但添加getter方法get\u defence()可能更像Java风格
到字符
类并调用它。你真的不应该在字段名中使用uu。。。如果要引用构造函数中的类字段,可以使用“this”,例如this.name=name;谢谢,这似乎比使用super效果更好。我可以一直这样做而不是使用超级吗?或者在某些情况下,super是唯一的选项?@StrangeITperson,不客气,super
是一个始终指向超类的关键字,因此在这种情况下,例如,如果您有一个SpecialCharacter
类扩展Character'类,您可以编写只在super.attack内编写的
attack'方法(_other)
它会像字符
超类一样进行攻击。有关应用程序的更多情况,您可以查看
public int attack(Character _other)
{
int defe = (int)_other._defense;
Random rando = new Random();
//_strenght is een double
int damcalc = (int)(1.2 * _strenght - 0.8 * _strenght);
int netdam = rando.nextInt(damcalc);
int totdam = (int)(netdam + 0.8*_strenght);
int enddam = totdam - defe;
return enddam;
}