实现两个对象互相攻击
package PK;
class Player {
//封装:把属性设为private,提供公共的get和set方法间接访问,提高安全性
private String name; //姓名
private String type; //类型:战士、法师
private int life; //生命值
private int defense; //防御值
private int attack; //攻击力
/**
* 描述自己的属性
*/
public void say(){
System.out.print(name+",是一个"+type);
System.out.println(",生命值为"+life+",防御值"+defense+",攻击力"+attack);
}
/**
public final static boolean possibility(int possibility){
final Random random = new Random();
if (random.nextInt(100) < possibility)
return true;
return false;
}
final Random random = new Random();
*/
/**
* 我方开启的战斗.
*/
public void pk(Player p){
//定义一个标记,0我方攻击 1敌方攻击
int flag = 0;//默认我方先攻击
//回合制,直到一方死亡停止
while(true){
//显示一下当前战斗人员的信息
this.say();
p.say();
if(flag==0){
//战斗 我方攻击力-敌方防御力=伤害值
int harm = this.attack-p.defense;
System.out.println(p.name+"掉血"+harm);
p.life-=harm; //让敌方生命值-伤害值
flag=1 ;//改变标记,转换攻击角色
}else{
//战斗 敌方攻击力-我方防御力=伤害值
int harm = p.attack-this.defense;
System.out.println(this.name+"掉血"+harm);
this.life-=harm; //让我方生命值-伤害值
flag=0 ;//改变标记,转换攻击角色
}
//有血量<=0,战斗结束
if(this.life<=0){
System.out.println(p.name+"打败了"+this.name);
break;//结束循环
}
if(p.life<=0){
System.out.println(this.name+"打败了"+p.name);
break;//结束循环
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//构造器(建议如果定义了有参的构造器,一定定义一个无参构造器)
public Player() {
}
public Player(String name, String type, int life, int defense, int attack) {
this.name = name;
this.type = type;
this.life = life;
this.defense = defense;
this.attack = attack;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getLife() {
return life;
}
public void setLife(int life) {
this.life = life;
}
public int getDefense() {
return defense;
}
public void setDefense(int defense) {
this.defense = defense;
}
public int getAttack() {
return attack;
}
public void setAttack(int attack) {
this.attack = attack;
}
}