有没有人能帮我解答一下,真的困扰了我好久,下面Role类中创建的attack方法 public void attack(Role role) 为什么没有static?? 另外参数里面放的不是数据类型和变量名吗? 在参数(Role role)里面 Role是数据类型吗? role是变量名吗?
public class GameTest {
public static void main(String[] args) {
//1.创建第一个角色
Role r1 = new Role("乔峰",100);
//2.创建第二个角色
Role r2 = new Role("鸠摩智",100);
//3.开始格斗 回合制游戏
while(true){
//r1开始攻击r2
r1.attack(r2);
//判断r2的剩余血量
if(r2.getBlood() == 0){
System.out.println(r1.getName() + " K.O了" + r2.getName());
break;
}
//r2开始攻击r1
r2.attack(r1);
if(r1.getBlood() == 0){
System.out.println(r2.getName() + " K.O了" + r1.getName());
break;
}
}
}
}
public class Role {
private String name;
private int blood;
public Role() {
}
public Role(String name, int blood) {
this.name = name;
this.blood = blood;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getBlood() {
return blood;
}
public void setBlood(int blood) {
this.blood = blood;
}
//定义一个方法用于攻击别人
//思考:谁攻击谁?
//Role r1 = new Role();
//Role r2 = new Role();
//r1.攻击(r2);
//方法的调用者去攻击参数
public void attack(Role role) {
//计算造成的伤害 1 ~ 20
Random r = new Random();
int hurt = r.nextInt(20) + 1;
//剩余血量
int remainBoold = role.getBlood() - hurt;
//对剩余血量做一个验证,如果为负数了,就修改为0
remainBoold = remainBoold < 0 ? 0 : remainBoold;
//修改一下挨揍的人的血量
role.setBlood(remainBoold);
//this表示方法的调用者
System.out.println(this.getName() + "举起拳头,打了" + role.getName() + "一下," +
"造成了" + hurt + "点伤害," + role.getName() + "还剩下了" + remainBoold + "点血");
}
}