1.某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精
设定
- 蛇怪类:
属性包括:怪物名字,生命值,攻击力
方法包括:攻击,移动(曲线移动),补血(当生命值<10时,可以补加20生命值)
- 蜈蚣精类:
属性包括:怪物名字,生命值,攻击力
方法包括:攻击,移动(飞行移动)
要求
- 分析蛇怪和蜈蚣精的公共成员,提取出父类—怪物类
- 利用继承机制,实现蛇怪类和蜈蚣精类
- 攻击方法,描述攻击状态。内容包括怪物名字,生命值,攻击力
- 编写测试类,分别测试蛇怪和蜈蚣精的对象及相关方法
- 定义名为mon的包存怪物类,蛇怪类,蜈蚣精类和测试类
2.源码
2.1妖怪类
public class Monster {
private String name;;//怪物名
private int hp;//血量
private int aggressivity;//攻击力
public Monster(String name, int hp, int aggressivity) {
this.name = name;
this.hp = hp;
this.aggressivity = aggressivity;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHp() {
return hp;
}
public void setHp(int hp) {
this.hp = hp;
}
public int getAggressivity() {
return aggressivity;
}
public void setAggressivity(int aggressivity) {
this.aggressivity = aggressivity;
}
/** 攻击 */
public void attack() {
System.out.println("怪物"+this.getName()+"展开攻击");
System.out.println("当前生命值:"+this.getHp());
System.out.println("攻击力是:"+this.getAggressivity());
}
/** 移动 */
public void move() {
}
}
2.2蛇类
public class Snake extends Monster {
public Snake(String name, int hp, int aggressivity) {
super(name, hp, aggressivity);
}
/** 加血 */
public void addHp(){
this.setHp(this.getHp()+20);
System.out.println("实施大蛇补血术......,当前的生命值是"+this.getHp());
}
/** 重写父类的移动方法*/
@Override
public void move() {
System.out.println("我是蛇,我走S线路");
}
}
2.3蜈蚣类
public class Centipede extends Monster {
public Centipede(String name, int hp, int aggressivity) {
super(name, hp, aggressivity);
}
/** 重写父类的移动方法*/
@Override
public void move() {
System.out.println("我是蜈蚣精,我御风飞行");
}
}
2.4测试类
public class Test {
public static void main(String[] args) {
Snake sn = new Snake("怪蛇甲",5,20);//生产一个蛇精
sn.attack();
if(sn.getHp()<10){
sn.addHp();
}
sn.move();
System.out.println("======================");
Centipede ct = new Centipede("蜈蚣精乙",60,15);//new一个蜈蚣
ct.attack();
ct.move();
}
}