package virtualpet;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Scanner;
/**
 * 虚拟宠物类
 * @author liuhu
 *
 */
public class VirPet {
    //前三个为全局变量
    public static VirPet p = new VirPet(100, 0, 100, "我在睡觉..."); // 数据初始化4r0/
    public static int count = 0;
    public static boolean judgeStop = false;
    
    public String name = "Tommy";
    public int Happiness;
    public int Hungry;
    public int Health;
    public String status;
    // 构造方法
    public VirPet(int Happiness,int Hungry,int Health,String status) {
        this.Happiness = Happiness;
        this.Hungry = Hungry;
        this.Health = Health;
        this.status = status;
    }
    
    private void printInfo(int data) {
        for(int i = 1;i <= (data / 2);i++) {
            System.out.print("*");
        }
        for(int i = (data / 2 + 1);i <= 50;i++) {
            System.out.print("-");
        }
    }
    
    public void sleep() {
        this.status = "我在睡觉...";
//        System.out.println(this.status);
    }
    
    public void wake() {
        this.status = "我醒着但我很无聊...";
//        System.out.println(this.status);
    }
    
    public void walk() {
        this.status = "我在散步...";
        System.out.println(this.status);
    }
    
    public void play() {
        this.status = "我在玩耍...";
        System.out.println(this.status);
    }
    
    public void feed() {
        this.status = "我在吃饭...";
        System.out.println(this.status);
    }
    
    public void seeDoctor() {
        this.status = "我在看医生...";
        System.out.println(this.status);
    }
    
    public void curStatus() {
        System.out.println("\n当前时间:" + count);
        System.out.println("我当前的状态:" + this.status);
        System.out.print("Happiness : Sad");
        printInfo(this.Happiness);
        System.out.println("Happy(" + this.Happiness + ")");
        System.out.print("Hungry :   Full");
        printInfo(this.Hungry);
        System.out.println("Hungry(" + this.Hungry + ")");
        System.out.print("Health :   Sick");
        printInfo(this.Health);
        System.out.println("Health(" + this.Health + ")");
    }
    
    public void orderWakePet(String order) {
        if(order.equals("walk")) {
            walk();
        }else if(order.equals("play")) {
            play();
        }else if(order.equals("feed")) {
            feed();
        }else if(order.equals("seedoctor")) {
            seeDoctor();
        }else if(order.equals("letalone")) {
            wake();
            System.out.println(this.status);
        }else {
            System.out.println("我不懂你在说什么");
        }
    
    }
    
    public void orderSleepPet(String order) {
        if(order.equals("letalone")) {
            sleep();
            System.out.println(this.status);
        }else {
            System.out.println("你确定要吵醒我吗?我在睡觉,你要是坚持吵醒我,我会不高兴的!(y表示是/其他表示不是)");
            Scanner s = new Scanner(System.in);
            String ans = s.nextLine();
            if(ans.equals("y")) {
                if(order.equals("walk")) {
                    walk();
                }else if(order.equals("play")) {
                    play();
                }else if(order.equals("feed")) {
                    feed();
                }else if(order.equals("seedoctor")) {
                    seeDoctor();
                }else {
                    System.out.println("我不懂你在说什么");
                }
            }
        }
    }
    
    // 从文件中读取数据
    public void readFromPath() throws Exception {
        File file = new File("D:\\java\\eclipse\\demo\\src\\virtualpet\\Data.txt");
        if(!file.exists()) { // 如果文件不存在,则创建并初始化
            file.createNewFile();
            writeToPath();
        }
        
        
        FileReader r = new FileReader("D:\\java\\eclipse\\demo\\src\\virtualpet\\Data.txt");
        BufferedReader br = new BufferedReader(r);
        char[] c = new char[50];
        int len = 0;
        String s = null;
        while((len = br.read(c)) != -1) {
            s= new String(c, 0, len);
        }
        String[] str = s.split(" ");
        int[] a = new int[4];
        for(int i = 0;i < 4;i++) {
            a[i] = Integer.parseInt(str[i]);
        }
        
        count = a[0];
        Happiness = a[1];
        Hungry = a[2];
        Health = a[3];
        status = str[4];
        br.close();
        r.close();
    }
    
    // 保存宠物数据到文件中
    public void writeToPath() throws Exception {
        FileWriter w = new FileWriter("D:\\java\\eclipse\\demo\\src\\virtualpet\\Data.txt");
        
        BufferedWriter bw = new BufferedWriter(w);
        
        bw.write(count + " ");
        bw.write(Happiness + " ");
        bw.write(Hungry + " ");
        bw.write(Health + " ");
        bw.write(status + " ");
        
        bw.flush();
        
        bw.close();
        w.close();
    }

public static void main(String[] args) {
        // 先读取数据
        try {
            p.readFromPath();
        } catch (Exception e1) {
            e1.printStackTrace();
        }
        System.out.println("我的名字叫Tommy,一只可爱的猫咪....");
        System.out.println("你可以和我一起散步玩耍,你也可以给我好吃的东西,带我去看病,也可以让我发呆....");
        System.out.println("Commands:");
        System.out.println("1.walk:散步");
        System.out.println("2.play:玩耍");
        System.out.println("3.feed:喂我");
        System.out.println("4.see doctor:看医生");
        System.out.println("5.letalone:让我独自一人");
        System.out.println("6.status:查看我的状态");
        System.out.println("7.bye:不想看到我\n");
        
        // 时钟的线程
        new Thread(new Runnable() {
            
            private int rangeData(int num) {
                if(num > 100) {
                    num = 100;
                }else if(num < 0) {
                    num = 0;
                }
                return num;
            }
            
            @Override
            public void run() {
                if(count == 23) {
                    p.sleep();
                }else if(count == 7) {
                    p.wake();
                }

if(p.status.equals("我在散步...")) {
                    p.Hungry += 3;
                    p.Health += 1;
                }else if(p.status.equals("我在玩耍...")) {
                    p.Hungry += 3;
                    p.Happiness += 1;
                }else if(p.status.equals("我在吃饭...")) {
                    p.Hungry -= 3;
                }else if(p.status.equals("我在看医生...")) {
                    p.Health += 4;
                }else if(p.status.equals("我在睡觉...")) {
                    p.Hungry += 1;
                }else if(p.status.equals("我醒着但我很无聊...")) {
                    p.Hungry += 2;
                    p.Happiness -= 1;
                }
                
                if((!p.status.equals("我在睡觉...")) && count < 8) {
                    p.Happiness -= 4;
                }
                
                if(p.Happiness < 20) {
                    p.Health -= 1;
                }
                
                if(p.Hungry > 80 || p.Hungry < 20) {
                    p.Health -= 2;
                }
                
                p.Hungry = rangeData(p.Hungry);
                p.Health = rangeData(p.Health);
                p.Happiness = rangeData(p.Happiness);
                
//                System.out.println(count);
                
                count += 1;
                if(judgeStop == false) {
                    if(count < 24) {
                        try {
                            Thread.sleep(5000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        run();
                    }else {
                        count = 0;
                        try {
                            Thread.sleep(5000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        run();
                    }
                }
                
            }
        }).start();
        
        // 宠物的线程
        new Thread(new Runnable() {
            
            @Override
            public void run() {
                while(true) {
                    System.out.print("你想做什么:");
                    Scanner s = new Scanner(System.in);
                    String ans = s.next();
                    if(ans.equals("bye")) {
                        try {
                            p.writeToPath();
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        judgeStop = true;
                        System.out.println("记得来找我!Bye...");
                        break;
                    }else if(ans.equals("status")) {
                        p.curStatus();
                    }else {
                        if(count >= 8) {
                            p.orderWakePet(ans);
                        }else {
                            p.orderSleepPet(ans);
                        }
                    }
                }
                
                
            }
        }).start();
        
        
    }
}

虚拟宠物猫(java)相关推荐

  1. 【虚拟宠物猫 Python】

    虚拟宠物猫 Python 要求 代码 要求 编写一个虚拟宠物猫的游戏,具体实现功能如下: Tommy 的一天分成 24 个部分,每一部分称为一个"滴答",它在第 8 个滴答(8 点 ...

  2. Java学习(86)Java集合——案例:宠物猫信息管理(HashSet增删改查)

    案例:宠物猫信息管理(HashSet增删改查) 需求分析 1. 功能需求 2. 属性 3. 方法 创建宠物猫Cat类,定义构造方法,定义get/set方法 主方法内定义宠物猫对象,将宠物猫对象放入Ha ...

  3. Java学习(90)Java集合排序——Comparator接口介绍、案例:对宠物猫分别按名字升序、年龄降序进行排列

    Java集合排序--Comparator接口介绍.案例:对宠物猫分别按名字升序.年龄降序进行排列 Comparator接口介绍 1. Comparator接口: 2. Comparator接口中的co ...

  4. java学习4:案例:宠物猫信息管理

    案例:宠物猫信息管理 需求: --添加和显示宠物猫信息 --查找某只宠物猫信息并输出 --修改宠物猫信息 --删除宠物猫信息 类: 属性 --名字 name --年龄 month --品种 speci ...

  5. (附源码)基于Spring Boot的宠物猫店管理系统的设计与实现 毕业设计140909

    springboot宠物猫店管理系统的设计与实现 摘 要 在信息飞速发展的今天,网络已成为人们重要的信息交流平台.宠物猫店管理系统公司每天都有大量的信息需要通过网络发布,为此,本人开发了一个基于B/S ...

  6. 虚拟宠物以AR形式来到你身边

    几年前,一款名为<精灵宝可梦Go>的LBS AR引爆全球玩家,从此掀起了一股LBS游戏的热潮.它并不是普通的游戏,它的 特色是需要玩家亲自到各种户外环境,才能收集补给和捕捉小精灵,有的人通 ...

  7. ios 摇一摇不走响应方法_猫咪不和主人亲近?这几种方法让它变得黏人,赶都赶不走|猫|宠物猫|主人...

    现代人逐渐把猫狗当成伴侣动物.它们都是毛茸茸的,但除此之外,它们之间似乎没有其他相似之处.换句话说,猫不是狗!猫是一个非常独特的物种,不同于其他动物和其他动物.每只猫都有自己的好恶. 说了这么多,只要 ...

  8. ▷Scratch课堂丨【编程趣味卡11】虚拟宠物

    授权转载 | Geekid 原文作者 | Mr.炎 原文标题 | 少儿编程 教程丨Scratch编程趣味卡 - 11.虚拟宠物 标签:难度初级:适合年龄段:8+: Scratch介绍 Scratch融 ...

  9. 虚拟宠物手机游戏《我的安吉拉2》上线华为AppGallery;Airbiquity宣布将扩张到非汽车市场 | 全球TMT...

    大公司动向 热门虚拟宠物手机游戏<我的安吉拉>的续作<我的安吉拉 2>已在华为AppGallery全球上线.该游戏的第一个版本已大获成功,下载量达到数百万次.这款由虚拟宠物手机 ...

最新文章

  1. flask-blueprint的简单使用
  2. 20180530更新
  3. html filter 在线预览,HTML Filter
  4. latex表格名的引用问题
  5. Redis 阶段总结
  6. GoogleTest测试C++代码
  7. 模糊神经网络算法matlab,模糊神经网络算法原理
  8. 算法设计与分析第四章习题解答与学习指导(第2版)屈婉婷 刘田 张立昂 王捍贫编著 清华大学出版社
  9. “Computer_Breaker”旁的“惊险”旅程——JSOI2021受虐记
  10. 关于电信重组(华为中兴观察员出品,必属精品)
  11. 医学院交换去计算机学院,2017年北京协和医学院阜外心血管病医院823计算机原理考研强化模拟题...
  12. 岁月温柔-18 妈妈在市ICU第8天
  13. 7-1 用格里高利公式求给定精度的PI值
  14. 华为手机设置微信气泡
  15. SparseArray与ArrayMap
  16. 做裂变新增全靠运气吗?绝对不是哦!
  17. 普氏分析在生信中的应用
  18. SSL P2325 最小转弯
  19. A-Z,a-z,0-9的unicode编码表
  20. 卫星热分析实例仿真001:篮球太空中的温度

热门文章

  1. 百度淘宝关键词排名系统【胖虎图图-互动点击专家】
  2. scrapy爬虫案例-----赶集网
  3. 庖丁解牛:USB 驱动开发技术彻底解密
  4. JSP/Servlet基础——登录成功后返回之前的页面
  5. 关于JS中addEventListener的使用
  6. USB3.0芯片FT601Q简介及FPGA实现
  7. C语言差异化定价编码,不同平台的差异化会员定价方案
  8. 软件测试开发的工作内容以及如何自学软件测试
  9. 【README】Linux系统编程必读:本专栏内容提要以及系统调用接口总结
  10. 网站服务器年费属于什么费用,云服务器属于什么费用