1.某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精 设定 1)蛇怪类: 属性包括:怪物名字,生命值,攻击力 方法包括:攻击,移动(曲线移动),补血(当生命值<10时,可以补加20生命值) 2)蜈蚣精类: 属性包括:怪物名字,生命值,攻击力 方法包括:攻击,移动(飞行移动) 要求 1)分析蛇怪和蜈蚣精的公共成员,提取出父类—怪物类 2)利用继承机制,实现蛇怪类和蜈蚣精类 3)攻击方法,描述攻击状态。内容包括怪物名字,生命值,攻击力 4)编写测试类,分别测试蛇怪和蜈蚣精的对象及相关方法,请用Java实现以上操作
时间: 2024-03-23 13:42:33 浏览: 24
好的,以下是我的回答:
1. 公共成员:怪物名字,生命值,攻击力,攻击方法,移动方法
父类:怪物类
2. 代码实现:
```java
class Monster {
protected String name;
protected int hp;
protected int atk;
public Monster(String name, int hp, int atk) {
this.name = name;
this.hp = hp;
this.atk = atk;
}
public void attack() {
System.out.println(name + "正在攻击,攻击力为" + atk + ",剩余生命值为" + hp);
}
public void move() {}
public String getName() {
return name;
}
public int getHp() {
return hp;
}
public int getAtk() {
return atk;
}
}
class SnakeMonster extends Monster {
public SnakeMonster(String name, int hp, int atk) {
super(name, hp, atk);
}
public void move() {
System.out.println(name + "正在曲线移动");
}
public void addHp() {
if (hp < 10) {
hp += 20;
}
}
}
class CentipedeMonster extends Monster {
public CentipedeMonster(String name, int hp, int atk) {
super(name, hp, atk);
}
public void move() {
System.out.println(name + "正在飞行移动");
}
}
```
3. 攻击方法实现:
```java
public static void attack(Monster monster) {
monster.attack();
}
```
4. 测试代码:
```java
SnakeMonster snakeMonster = new SnakeMonster("蛇怪", 50, 20);
snakeMonster.attack();
snakeMonster.move();
snakeMonster.addHp();
snakeMonster.attack();
CentipedeMonster centipedeMonster = new CentipedeMonster("蜈蚣精", 70, 30);
centipedeMonster.attack();
centipedeMonster.move();
attack(snakeMonster);
attack(centipedeMonster);
```
输出结果:
```
蛇怪正在攻击,攻击力为20,剩余生命值为50
蛇怪正在曲线移动
蛇怪正在攻击,攻击力为20,剩余生命值为50
蜈蚣精正在攻击,攻击力为30,剩余生命值为70
蜈蚣精正在飞行移动
蛇怪正在攻击,攻击力为20,剩余生命值为30
蜈蚣精正在攻击,攻击力为30,剩余生命值为70
```