package com.epilogue.zuoye;
import java.util.Scanner;
public class Demo {
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("欢迎来到宠物店,请选择想要购买的宠物:1.小狗\t2.小猫");
int choice = input.nextInt();
Pet pet = null;
if (choice == 1) {
System.out.println("购买成功!");
System.out.println("为你的小狗取个名字吧");
String name = input.next();
pet = new Dog();
Home(pet, name);
} else if (choice == 2) {
System.out.println("购买成功!");
System.out.println("为你的小猫取个名字吧");
String name = input.next();
pet = new Cat();
Home(pet, name);
} else {
System.out.println("选择错误");
}
}
public static void Home(Pet pet, String name) {
pet.setName(name);// 设置初始值
pet.setHealth(100);
pet.setIntimate(0);
pet.setHunger(0);
System.out.println("当前小狗的状态:\n名字:" + pet.getName() + "健康值:"
+ pet.getHealth() + "饥饿值:" + pet.getHunger() + "亲密值:"
+ pet.getIntimate());
while (true) {
if (pet instanceof Dog) {// 父类对子类的引用
System.out.println("您想要和您的宠物做什么呢?1.喂食\t2.玩耍\t3.看家");
}
if (pet instanceof Cat) {
System.out.println("您想要和您的宠物做什么呢?1.喂食\t2.玩耍\t3.抓老鼠");
}
int i = input.nextInt();
switch (i) {
case 1:
pet.eatAble();
break;
case 2:
pet.playAble();
break;
case 3:
if (pet instanceof Dog) {
((Dog) pet).lookHome();// 自下转型
}
if (pet instanceof Cat) {
((Cat) pet).catchMouse();
}
break;
default:
System.out.println("选择错误,请重新选择");
}
}
}
}
interface Able {// 创建Able接口
void eatAble();
void playAble();
}
class Pet implements Able {// 创建一个Pet对象,继承Able接口
private String name;
private int health;
private int hunger;
private int intimate;
// 封装方法
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getIntimate() {
return intimate;
}
public void setIntimate(int intimate) {
this.intimate = intimate;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getHunger() {
return hunger;
}
public void setHunger(int hunger) {
this.hunger = hunger;
}
@Override
public void eatAble() {
health += 5;
if (health > 100) {
health = 100;
}
hunger -= 3;
if (hunger < 0) {
hunger = 0;
}
intimate += 3;
if (intimate < 0) {
intimate = 0;
}
if (intimate > 100) {
intimate = 100;
}
System.out.println(name + "的状态:\n健康值:" + health + "饥饿值:" + hunger
+ "亲密值:" + intimate);
}
// 实现接口方法
@Override
public void playAble() {
health -= 5;
if (health < 0) {
health = 0;
}
hunger += 5;
if (hunger > 100) {
hunger = 100;
}
intimate += 3;
if (intimate > 100) {
intimate = 100;
}
System.out.println(name + "的状态:\n健康值:" + health + "饥饿值:" + hunger
+ "亲密值:" + intimate);
}
}
class Dog extends Pet implements Able {
void lookHome() {// 添加Dog自己特有的方法
String name = super.getName();
int health = super.getHealth();
health -= 3;
if (health < 0) {
health = 0;
}
setHealth(health);
int hunger = super.getHunger();
hunger += 3;
if (hunger > 100) {
hunger = 100;
}
setHunger(hunger);
int intimate = super.getIntimate();
intimate -= 3;
if (intimate < 0) {
intimate = 0;
}
setIntimate(intimate);
System.out.println("看家ing。。。");
System.out.println(name + "的状态:\n健康值:" + health + "饥饿值:" + hunger
+ "亲密值:" + intimate);
}
@Override
public void eatAble() {// 实现接口方法,继承父类
super.eatAble();
System.out.println("成功喂食");
}
@Override
public void playAble() {
super.eatAble();
System.out.println("玩得很高兴");
}
}
class Cat extends Pet implements Able {
void catchMouse() {// 添加Cat自己特有的方法
String name = super.getName();
int health = super.getHealth();
health -= 3;
if (health < 0) {
health = 0;
}
setHealth(health);
int hunger = super.getHunger();
hunger += 3;
if (hunger > 100) {
hunger = 100;
}
setHunger(hunger);
int intimate = super.getIntimate();
intimate -= 3;
if (intimate < 0) {
intimate = 0;
}
setIntimate(intimate);
System.out.println("抓老鼠ing。。。");
System.out.println(name + "的状态:\n健康值:" + health + "饥饿值:" + hunger
+ "亲密值:" + intimate);
}
@Override
public void eatAble() {// 实现接口方法,继承父类
super.eatAble();
System.out.println("成功喂食");
}
@Override
public void playAble() {
super.playAble();
System.out.println("玩得很高兴");
}
}