电子宠物(用IO流序列化保存宠物信息)

一个简单的电子宠物,在控制台养宠物,支持电子宠物通过序列化保存到本地,可以继续养上一只

package com.pet;

import java.io.Serializable;

public class Pet implements Serializable {

	private static Pet pet = new Pet();
	private String name;
	private String sex;
	private int age;
	private int mood;
	private int strength;
	private int health;
	private int intimacy;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getMood() {
		return mood;
	}

	public void setMood(int mood) {
		this.mood = mood;
	}

	public int getStrength() {
		return strength;
	}

	public void setStrength(int strength) {
		this.strength = strength;
	}

	public int getHealth() {
		return health;
	}

	public void setHealth(int health) {
		this.health = health;
	}

	public int getIntimacy() {
		return intimacy;
	}

	public void setIntimacy(int intimacy) {
		this.intimacy = intimacy;
	}

	public Pet(String name, String sex, int age, int mood, int strength, int health, int intimacy) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.mood = mood;
		this.strength = strength;
		this.health = health;
		this.intimacy = intimacy;
	}

	private Pet() {

	}

	public static Pet getPet() {
		return pet;
	}

	public void play() {

	}

	public void eat() {

	}

	public void seeDoctor() {

	}

	public String seeDetail() {
		return null;
	}
}
package com.pet;

public class Cat extends Pet {

	private String breed;// 品种

	public Cat(String name, String sex, int age, int mood, int strength, int health, int intimacy, String breed) {
		super(name, sex, age, mood, strength, health, intimacy);
		this.setBreed(breed);
	}

	public String getBreed() {
		return breed;
	}

	public void setBreed(String breed) {
		this.breed = breed;
	}

	// 复写父类pet的方法
	@Override
	public String seeDetail() {
		String s = "我的猫  \n品种:" + breed + "\n名字:" + getName() + "\n性别" + getSex() + "\n年龄" + getAge() + "\n心情"
				+ getMood() + "\n体力值" + getStrength() + "\n健康" + getHealth() + "\n亲密度" + getIntimacy();
		return s;
	}

	@Override
	public void play() {
		System.out.println("撸猫:全属性提升");
		super.setMood(super.getMood() + 1);
		super.setStrength(super.getStrength() + 1);
		super.setHealth(super.getHealth() + 1);
		super.setIntimacy(super.getIntimacy() + 2);
	}

	@Override
	public void eat() {
		System.out.println("猫咪喂食:小鱼干:全属性提升");
		super.setMood(super.getMood() + 1);
		super.setStrength(super.getStrength() + 10);
		super.setHealth(super.getHealth() + 5);
		super.setIntimacy(super.getIntimacy() + 2);
	}

	@Override
	public void seeDoctor() {
		System.out.println("给猫咪看病:伊丽莎白帽:全属性削弱");
		// 去医院,心情很不好
		super.setMood(super.getMood() - 20);
		// 没力气
		super.setStrength(super.getStrength() - 30);
		// 大病一场
		super.setHealth(super.getHealth() - 20);
		// 塑料主仆
		super.setIntimacy(super.getIntimacy() - 20);
	}

}
package com.pet;

public class Dog extends Pet {

	private String breed;// 品种

	// 父类有含参构造,子类调用,完成属性初始化
	public Dog(String name, String sex, int age, int mood, int strength, int health, int intimacy, String breed) {
		super(name, sex, age, mood, strength, health, intimacy);
		this.breed = breed;
	}

	public String getBreed() {
		return breed;
	}

	public void setBreed(String breed) {
		this.breed = breed;
	}

	// 复写父类pet的方法
	@Override
	public String seeDetail() {
		String s = "我的狗  \n品种:" + breed + "\n名字:" + getName() + "\n性别" + getSex() + "\n年龄" + getAge() + "\n心情"
				+ getMood() + "\n体力值" + getStrength() + "\n健康" + getHealth() + "\n亲密度" + getIntimacy();
		return s;
	}

	@Override
	public void play() {
		System.out.println("狗子专有活动:接飞盘:会流失体力");
		super.setMood(super.getMood() + 2);
		super.setStrength(super.getStrength() - 5);
		super.setHealth(super.getHealth() + 5);
		super.setIntimacy(super.getIntimacy() + 3);
	}

	@Override
	public void eat() {
		System.out.println("狗子吃骨头:全属性提升");
		super.setMood(super.getMood() + 1);
		super.setStrength(super.getStrength() + 10);
		super.setHealth(super.getHealth() + 5);
		super.setIntimacy(super.getIntimacy() + 2);
	}

//	public void catchFlydisk() {
//		System.out.println("狗子专有活动:接飞盘");
//		super.setMood(super.getMood()+2);
//		super.setStrength(super.getStrength()-5);
//		super.setHealth(super.getHealth()+5);
//		super.setIntimacy(super.getIntimacy()+3);
//	}

	@Override
	public void seeDoctor() {
		System.out.println("给狗子看病:四个兽医按住:全属性削弱");
		// 去医院,心情很不好
		super.setMood(super.getMood() - 20);
		// 没力气
		super.setStrength(super.getStrength() - 30);
		// 大病一场
		super.setHealth(super.getHealth() - 20);
		// 塑料主仆
		super.setIntimacy(super.getIntimacy() - 20);
	}

}
package com.pet;

//仓鼠
public class Hamster extends Pet {

	private String breed;// 品种

	public Hamster(String name, String sex, int age, int mood, int strength, int health, int intimacy, String breed) {
		super(name, sex, age, mood, strength, health, intimacy);
		this.breed = breed;
	}

	// 复写父类pet的方法
	@Override
	public String seeDetail() {
		String s = "我的仓鼠  \n品种:" + breed + "\n名字:" + getName() + "\n性别" + getSex() + "\n年龄" + getAge() + "\n心情"
				+ getMood() + "\n体力值" + getStrength() + "\n健康" + getHealth() + "\n亲密度" + getIntimacy();
		return s;
	}

	@Override
	public void play() {
		System.out.println("仓鼠飞轮:会掉体力");
		super.setMood(super.getMood() + 1);
		super.setStrength(super.getStrength() - 3);
		super.setHealth(super.getHealth() + 1);
		super.setIntimacy(super.getIntimacy() + 2);
	}

	@Override
	public void eat() {
		System.out.println("仓鼠喂食:全属性提升");
		super.setMood(super.getMood() + 1);
		super.setStrength(super.getStrength() + 10);
		super.setHealth(super.getHealth() + 5);
		super.setIntimacy(super.getIntimacy() + 2);
	}

	@Override
	public void seeDoctor() {
		System.out.println("给仓鼠看病:全属性削弱");
		// 去医院,心情很不好
		super.setMood(super.getMood() - 20);
		// 没力气
		super.setStrength(super.getStrength() - 30);
		// 大病一场
		super.setHealth(super.getHealth() - 20);
		// 塑料主仆
		super.setIntimacy(super.getIntimacy() - 20);
	}

}
package com.pet;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Scanner;

import com.zhiyou100.User;

public class PetGame {

	public static int account=123456;
	public static int password=123456;
	public static void main(String[] args) throws Exception {
		System.out.println("************欢迎光临枫林宠物小店*************");
		System.out.println("请输入账号");
		Scanner input = new Scanner(System.in);
		Integer newaccount=input.nextInt();
		System.out.println("请输入密码");
		Integer newpassword=input.nextInt();
		if(newaccount.equals(account)&&newpassword.equals(password)) {
		PetGame perPetshop = new PetGame();
		perPetshop.start();
		}else {
			System.out.println("错误");
		}

	}

	private void start() throws Exception {
		while (true) {
			System.out.println("************请输入你需要领养的宠物*************" + "\n" + "1:狗狗" + "\n" + "2:猫" + "\n"+"3.仓鼠"+"\n"
					+ "4:继续上次的宠物" + "\n" + "0:退出");
			Scanner input = new Scanner(System.in);
			int type = input.nextInt();
			switch (type) {
			case 1:
				System.out.println("请选择狗狗的种类" + "\n" + "1:哈士奇" + "\n" + "2:萨摩耶");
				int breed = input.nextInt();
				String s = "";
				if (breed == 1) {
					s = "哈士奇";
				} else {
					s = "萨摩耶";
				}
				System.out.println("请输入性别:   \n 1.公    \n 2.母");
				int dogsex = input.nextInt();
				String sex = "";
				if (dogsex == 1) {
					sex = "公";
				} else {
					sex = "母";
				}
				System.out.println("好的,你的宠物领养完成,初始化:    \n年龄:1  \n心情:50/100   \n体力:50/100   \n健康:50/100 \n亲密值:50/100");
				System.out.println("最后一步了,给你的宠物起个名字开始游戏吧");
				String name = input.next();
				Pet dogpet = new Dog(name, sex, 1, 50, 50, 50, 50, s);
				System.out.println(dogpet.seeDetail());
				PetGame petShop = new PetGame();
				// 主菜单操作
				petShop.mainmenu(dogpet);
				break;
			case 2:
				System.out.println("请选择猫的种类" + "\n" + "1:英短" + "\n" + "2:橘猫");
				int catbreed = input.nextInt();
				String s2 = "";
				if (catbreed == 1) {
					s2 = "英短";
				} else {
					s2 = "橘猫";
				}
				System.out.println("请输入性别 1.公/2.母");
				int catsex = input.nextInt();
				String sex2 = "";
				if (catsex == 1) {
					sex2 = "公";
				} else {
					sex2 = "母";
				}
				System.out.println("好的,你的宠物领养完成,初始化:   \n年龄:1  \n心情:50/100   \n体力:50/100   \n健康:50/100 \n亲密值:50/100");
				System.out.println("最后一步了,给你的宠物起个名字开始游戏吧");
				String catname = input.next();
				Pet catpet = new Cat(catname, sex2, 1, 50, 50, 50, 50, s2);
				System.out.println(catpet.seeDetail());
				PetGame petShop3 = new PetGame();
				// 主菜单操作
				petShop3.mainmenu(catpet);
				break;
			case 3:
				System.out.println("请选择仓鼠的种类" + "\n" + "1:白色仓鼠" + "\n" + "2:黑色仓鼠");
				int hambreed = input.nextInt();
				String s3 = "";
				if (hambreed == 1) {
					s3 = "白色仓鼠";
				} else {
					s3 = "黑色仓鼠";
				}
				System.out.println("请输入性别 1.公/2.母");
				int hamsex = input.nextInt();
				String sex3 = "";
				if (hamsex == 1) {
					sex3 = "公";
				} else {
					sex3 = "母";
				}
				System.out.println("好的,你的宠物领养完成,初始化:    \n年龄:1  \n心情:50/100   \n体力:50/100   \n健康:50/100 31\n亲密值:50/100");
				System.out.println("最后一步了,给你的宠物起个名字开始游戏吧");
				String hamname = input.next();
				Pet hampet = new Hamster(hamname, sex3, 1, 50, 50, 50, 50, s3);
				System.out.println(hampet.seeDetail());
				PetGame petShop4 = new PetGame();
				// 主菜单操作
				petShop4.mainmenu(hampet);
				break;
			case 4:
				Pet mypet = readPet();
				System.out.println("欢迎回来,你的宠物状态:" + mypet.seeDetail());
				System.out.println("开始游戏");
				PetGame petShop2 = new PetGame();
				// 主菜单操作
				petShop2.mainmenu(mypet);
				break;
			default:
				System.out.println("再见...");
				return;
			}
		}
	}

	// 向上转型的pet,猫狗等等
	public void mainmenu(Pet pet) throws Exception {
		while (true) {// 有这个一步操作完才能返回此处
			System.out.println(
					"********************开始游戏********************"+"\n"
					+ "********主菜单********************" + "\n" + "请选择你要进行的操作: \n1,玩耍  \n2,喂食  \n3,看病 \n4,查看属性  \n5,退出");
			Scanner input = new Scanner(System.in);
			int choice = input.nextInt();
			switch (choice) {
			case 1:
				System.out.println("和你的宠物玩耍");
				pet.play();
				System.out.println("刷新状态" + pet.seeDetail());
				// 序列化保存宠物
				savePet(pet);
				// 读一下宠物
				readPet();
				break;
			case 2:
				System.out.println("给宠物喂食");
				pet.eat();
				System.out.println("刷新状态" + pet.seeDetail());
				// 序列化保存宠物
				savePet(pet);
				// 读一下宠物
				readPet();
				break;
			case 3:
				System.out.println("给宠物看病");
				pet.seeDoctor();
				System.out.println("刷新状态" + pet.seeDetail());
				// 序列化保存宠物
				savePet(pet);
				// 读一下宠物
				readPet();
				break;
			case 4:
				System.out.println("宠物最新状态:" + pet.seeDetail());
				// 序列化保存宠物
				savePet(pet);
				// 读一下宠物
				readPet();
				break;

			default:
				System.out.println("返回目录");
				return;
			}
		}
	}
	/**
	 * 序列化宠物
	 * 
	 * @param pet
	 * @throws IOException
	 */
	public static void savePet(Pet pet) throws IOException {
//可能需要手动建一个demo文件夹,和src同级
		ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(new File("demo/mypet.txt")));
		out.writeObject(pet);
		out.flush();
		out.close();
	}

	/**
	 * 反序列化宠物,读取生成java对象
	 * @return
	 * @throws Exception
	 */
	public static Pet readPet() throws Exception {
		ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File("demo/mypet.txt")));
		/*
		 * Object object = in.readObject();
		   User u=(User) object;
		 */
		Pet pet2 = (Pet) in.readObject();
		in.close();
		return pet2;
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值