题目
模拟一场战斗,剑圣和盲僧,最后打败了众星之子
分析
面向对象:
有什么:生命值,名字,攻击力,皮肤
做什么:攻击(直接打),技能(法术),自我描述,阵亡判定
代码
/**
* 英雄行为
* @author Administrator
*
*/
public interface action {
/**
* 攻击
* @param hero
*/
public void attack(Hero hero);
/**
* 施行法术
* @param hero
*/
public void skill(Hero hero);
}
/**
* 英雄基类
* @author Administrator
*
*/
public abstract class Hero implements action{
private int life;
private String name;
private int attack;
private String skin;
public Hero(int life, int attack, String skin){
this.life = life;
this.attack = attack;
this.skin = skin;
this.name = init();
System.out.println(this.getName()
+ " -- > 生命值: " + this.getLife()
+ "攻击力: " + this.getAttack()
+ "皮肤: " + this.getSkin());
}
public abstract String init();
public void isdeath(Hero hero){
if (hero.getLife() <= 0){
System.out.println(hero.getName() + " --> 已经阵亡!");
}
}
public int getLife() {
return life;
}
public void setLife(int life) {
this.life = life;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAttack() {
return attack;
}
public void setAttack(int attack) {
this.attack = attack;
}
public String getSkin() {
return skin;
}
public void setSkin(String skin) {
this.skin = skin;
}
}
/**
* 剑圣类
*
* @author Administrator
*
*/
public class Blademaster extends Hero {
public Blademaster(int life, int attack, String skin) {
super(life, attack, skin);
}
@Override
public String init() {
return "剑圣";
}
/**
* 对自己释放,可以提高生命值
*/
@Override
public void attack(Hero hero) {
hero.setLife(hero.getLife() - this.getAttack());
System.out.println(this.getName() + "攻击了" + hero.getName() + "生命值减少了" + this.getAttack());
isdeath(hero);
}
/**
* 对自己释放,可以提高攻击力
*/
@Override
public void skill(Hero hero) {
int raiseAttack = 100;
this.setLife(this.getAttack() + raiseAttack);
System.out.println(this.getName() + " --> 施展了不得了的技能,攻击力提高" + raiseAttack);
isdeath(hero);
}
}
/**
* 盲僧类
*
* @author Administrator
*
*/
public class BlindMonk extends Hero {
public BlindMonk(int life, int attack, String skin) {
super(life, attack, skin);
}
@Override
public String init() {
return "盲僧";
}
/**
* 攻击对方
*/
@Override
public void attack(Hero hero) {
hero.setLife(hero.getLife() - this.getAttack());
System.out.println(this.getName() + "攻击了" + hero.getName() + "生命值减少了" + this.getAttack());
isdeath(hero);
}
/**
* 对一个英雄释放,对方生命值降低了很多
*/
@Override
public void skill(Hero hero) {
int reduce = 400;
hero.setLife(hero.getLife() - reduce);
System.out.println(this.getName() + "施展了一脚" + "且生命值减少了" + reduce);
isdeath(hero);
}
}
/**
* 众星之子
*
* @author Administrator
*
*/
public class Stars extends Hero {
public Stars(int life, int attack, String skin) {
super(life, attack, skin);
}
@Override
public String init() {
return "众星之子";
}
@Override
public void attack(Hero hero) {
hero.setLife(hero.getLife() - this.getAttack());
System.out.println(this.getName() + "攻击了" + hero.getName() + "生命值减少了" + this.getAttack());
isdeath(hero);
}
@Override
public void skill(Hero hero) {
}
}
public class Main {
public static void main(String[] args) {
Hero blademaster = new Blademaster(1000, 100, "暗影");
Hero blindMonk = new BlindMonk(1000, 100, "传统僧侣");
Hero stars = new Stars(1000, 100, "森林女神");
blademaster.attack(stars);
blademaster.skill(stars);
blindMonk.attack(stars);
blindMonk.skill(stars);
blindMonk.skill(stars);
}
}
执行结果
剑圣 – > 生命值: 1000攻击力: 100皮肤: 暗影
盲僧 – > 生命值: 1000攻击力: 100皮肤: 传统僧侣
众星之子 – > 生命值: 1000攻击力: 100皮肤: 森林女神
剑圣攻击了众星之子生命值减少了100
剑圣 –> 施展了不得了的技能,攻击力提高100
盲僧攻击了众星之子生命值减少了100 盲僧施展了一脚且生命值减少了400
盲僧施展了一脚且生命值减少了400
众星之子 –> 已经阵亡!