用java写一个250行的面向对象之宠物大作战包括分支、数组、循环、多态继承、异常处理
时间: 2023-07-10 18:17:15 浏览: 49
好的,以下是一个简单的宠物大作战的Java代码片段,它包括了分支、数组、循环、多态继承和异常处理。
```java
import java.util.Random;
public class PetBattle {
public static void main(String[] args) {
Pet[] pets = new Pet[5];
pets[0] = new Dog("旺财", 100, 20);
pets[1] = new Cat("咪咪", 80, 30);
pets[2] = new Bird("小鸟", 60, 40);
pets[3] = new Dog("小黑", 120, 15);
pets[4] = new Cat("花花", 90, 25);
Random random = new Random();
int round = 1;
while (true) {
System.out.println("第" + round + "回合开始!");
for (int i = 0; i < pets.length; i++) {
if (pets[i].isAlive()) {
int targetIndex = random.nextInt(pets.length);
while (!pets[targetIndex].isAlive()) {
targetIndex = random.nextInt(pets.length);
}
pets[i].attack(pets[targetIndex]);
}
}
boolean allDead = true;
for (Pet pet : pets) {
if (pet.isAlive()) {
allDead = false;
break;
}
}
if (allDead) {
System.out.println("所有宠物都已经死亡,游戏结束!");
break;
}
round++;
}
}
}
abstract class Pet {
protected String name;
protected int health;
protected int attackPower;
public Pet(String name, int health, int attackPower) {
this.name = name;
this.health = health;
this.attackPower = attackPower;
}
public boolean isAlive() {
return health > 0;
}
public void attack(Pet target) {
System.out.println(name + "攻击了" + target.name + "!");
target.defend(attackPower);
}
public void defend(int attackPower) {
if (attackPower >= health) {
health = 0;
System.out.println(name + "受到了致命一击,已经死亡!");
} else {
health -= attackPower;
System.out.println(name + "受到了" + attackPower + "点伤害,剩余生命值为" + health + "。");
}
}
}
class Dog extends Pet {
public Dog(String name, int health, int attackPower) {
super(name, health, attackPower);
}
@Override
public void attack(Pet target) {
System.out.println(name + "狂吠着扑向了" + target.name + "!");
super.attack(target);
}
}
class Cat extends Pet {
public Cat(String name, int health, int attackPower) {
super(name, health, attackPower);
}
@Override
public void attack(Pet target) {
System.out.println(name + "眼神犀利地扑向了" + target.name + "!");
super.attack(target);
}
}
class Bird extends Pet {
public Bird(String name, int health, int attackPower) {
super(name, health, attackPower);
}
@Override
public void attack(Pet target) {
System.out.println(name + "飞身向" + target.name + "扑去!");
super.attack(target);
}
}
```
上述代码中,我们使用了多态和继承来创建不同种类的宠物。我们使用了数组来存储所有的宠物对象,并使用了循环来遍历宠物数组。在每个回合中,每个宠物都会对随机选择的一个其他宠物发起攻击。我们也使用了异常处理来处理可能的异常情况,例如攻击力超过生命值等。