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

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

来源:萌宠菠菠乐园 时间:2026-01-24 22:36

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

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 31n亲密值: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;

}

}

相关知识

电子宠物(用IO流序列化保存宠物信息)
filmolike:我的宠物专案资源
JAVA宠物信息管理系统开发教程【MVC+JCF+IO流】
IO流
java IO流总结
通过电子宠物交友用的即时通讯系统及其方法
电子宠物机(电子宠物机怎么用)
不要当男人的电子宠物七流小说免费阅读
不要当男人的电子宠物七流
电子宠物下载1.1.0最新版

网址: 电子宠物(用IO流序列化保存宠物信息) https://www.mcbbbk.com/newsview1342227.html

所属分类:萌宠日常
上一篇: 仓鼠出海
下一篇: 我要养仓鼠

推荐分享