新建game01包(package)

先写Dog类(class)此类用来写宠物的成员变量,方法,自动创建有参/无参的构造方法,以及getter和setter方法

package game01;
//Dog dog= new Dog();
 public class Dog {
     //private封装 对外部函数/方法不可见   对内部函数/方法可见
     //不直接对外暴露对象中属性的读写操作
     //改为对外部暴露一组setter和getter方法
     //昵称
     private String nickName;
     //品种
     private String strain;
     //实际生命值
     private Long hp;
     //最大生命值
     private Long maxHp;
     //最大怒气值
     private Integer maxAnger;
     //实际怒气值
     private Integer Anger;
     //等级
     private Integer level;
     //最大经验值
     private Long maxExp;
     //实际经验值
     private Long Exp;
     public void show(){
         System.out.println(this.nickName+"的信息");
         System.out.println("品种:"+this.strain);
         System.out.println("等级:"+this.level);
         System.out.println("生命:"+this.hp+"/"+this.maxHp);
         System.out.println("怒气:"+this.Anger+"/"+this.maxAnger);
         System.out.println("经验:"+this.Exp+"/"+this.maxExp);
         System.out.println("----------------------------------");
     }    public Dog(String nickName, String strain, Long hp, Long maxHp, Integer maxAnger, Integer anger, Integer level, Long maxExp, Long exp) {
         this.nickName = nickName;
         this.strain = strain;
         this.hp = hp;
         this.maxHp = maxHp;
         this.maxAnger = maxAnger;
         Anger = anger;
         this.level = level;
         this.maxExp = maxExp;
         Exp = exp;
     }
     public void killOk(Monster monster){
         System.out.println(this.nickName+"成功击杀"+monster.getName()+"!");
         System.out.println("获得经验值"+monster.getExp());
         this.Exp+=monster.getExp();
         if (this.Exp>=this.maxExp){
             this.level++;
             this.Exp=this.Exp-this.maxExp;
             System.out.println(this.nickName+"升到"+this.level+"级!");
         }
     }
     public void attack(){
         System.out.println(this.nickName+"普通一次!");
         this.Anger+=500;
     }
     public void angerAttack(){
         System.out.println(this.nickName+"怒气一次!");
         this.Anger=0;
     }
     public void beAttack(){
         System.out.println(this.nickName+"受到一次!");
         this.hp-=200;
     }    public Dog() {
     }    public String getNickName() {
         return nickName;
     }    public void setNickName(String nickName) {
         this.nickName = nickName;
     }    public String getStrain() {
         return strain;
     }    public void setStrain(String strain) {
         this.strain = strain;
     }    public Long getHp() {
         return hp;
     }    public void setHp(Long hp) {
         this.hp = hp;
     }    public Long getMaxHp() {
         return maxHp;
     }    public void setMaxHp(Long maxHp) {
         this.maxHp = maxHp;
     }    public Integer getMaxAnger() {
         return maxAnger;
     }    public void setMaxAnger(Integer maxAnger) {
         this.maxAnger = maxAnger;
     }    public Integer getAnger() {
         return Anger;
     }    public void setAnger(Integer anger) {
         Anger = anger;
     }    public Integer getLevel() {
         return level;
     }    public void setLevel(Integer level) {
         this.level = level;
     }    public Long getMaxExp() {
         return maxExp;
     }    public void setMaxExp(Long maxExp) {
         this.maxExp = maxExp;
     }    public String getExp() {
         if (Exp==null||Exp<10000){
             return "10000";
         }else if (Exp>=1000000&&Exp<1000000000){
             double expDb=Exp*1.0/1000000;
             return String.format("%.2f",expDb)+"M";
         }else if (Exp>=1000000000){
             double expDb=Exp*1.0/1000000000;
             return String.format("%.2f",expDb)+"B";
         }else{
             return String.valueOf(Exp);
         }
     }    public void setExp(Long exp) {
         if (exp!=null&&exp<10000){
             exp=10000L;
         }
         Exp = exp;
     }
 }

   

创建怪物类Monster,类比宠物类创建

package game01;
import java.util.Random;
public class Monster {
     private static Random random = new Random();
     private String name;
     private Integer maxHp;
     private Integer hp;
     private Integer exp;
     private Integer level;    public Monster() {
         this.maxHp= random.nextInt(5000)+5000;
         this.hp=this.maxHp;
         this.exp= random.nextInt(5000)+1000;
         this.level= random.nextInt(10)+1;
     }
     public void attack(){
         System.out.println(this.name+"普通一次!");
     }
     public void beAttack(){
         System.out.println(this.name+"受到一次!");
         this.hp-=800;
     }    public Monster(String name, Integer maxHp, Integer hp, Integer exp, Integer level) {
         this.name = name;
         this.maxHp = maxHp;
         this.hp = hp;
         this.exp = exp;
         this.level = level;
     }    public String getName() {
         return name;
     }    public void setName(String name) {
         this.name = name;
     }    public Integer getMaxHp() {
         return maxHp;
     }    public void setMaxHp(Integer maxHp) {
         this.maxHp = maxHp;
     }    public Integer getHp() {
         return hp;
     }    public void setHp(Integer hp) {
         this.hp = hp;
     }    public Integer getExp() {
         return exp;
     }    public void setExp(Integer exp) {
         this.exp = exp;
     }    public Integer getLevel() {
         return level;
     }    public void setLevel(Integer level) {
         this.level = level;
     }
     public void show(){
         System.out.println(this.name+"\tmaxHp:"+this.maxHp+"\thp: "+this.hp+"\texp:"+this.exp+"\tlevel:"+this.level);
     }
 }


 

创建Game类测试运行

package game01;
import java.util.Scanner;
public class Game {
     //Scanner 接收用户输入的类
     //sc.next();   接收字符串
     //sc.nextInt(); 接收整数
     //sc.nextDouble(); 接收浮点数
     static Scanner sc=new Scanner(System.in);
     //定义了dog类型的数组
     static Dog[] dogArr=new Dog[2];
     //定义一个Monster类型的数组
     static Monster[] monsterarr=new Monster[10];
     //定义一个金币变量
     static long money = 20000;
     public static void main(String[] args) {
         int choice =0;
         do{
             System.out.println("***********欢迎进入宠物大作战**************");
             System.out.println("1.领养宠物");
             System.out.println("2.查看宠物");
             System.out.println("3.进入训练场");
             System.out.println("4.刷新训练场");
             System.out.println("5.宠物栏扩容");
             System.out.println("6.充值");
             System.out.println("7.退出");
             System.out.println("请选择:");
             choice = sc.nextInt();
             switch (choice){
                 case 1:
                     System.out.println("**************领养宠物*************");
                     getDog();
                     break;
                 case 2:
                     System.out.println("**************查看宠物*************");
                     display();
                     break;
                 case 3:
                     System.out.println("**************进入训练场*************");
                     GoToTrain();
                     break;
                 case 4:
                     System.out.println("**************刷新训练场*************");
                     refreshTrain();
                     break;
                 case 5:
                     System.out.println("**************宠物栏扩容*************");
                     dilatation();
                     break;
                 case 6:
                     pay();
                     System.out.println("**************充值*************");
                     break;
             }
         }while (choice !=7);
         System.out.println("bye~ 游戏退出");    }
    private static void GoToTrain() {
         int count=0;
         for (int i = 0; i < monsterarr.length; i++) {
             if (monsterarr[i]==null){
                 System.out.println((i+1)+"号怪物已经死亡");
             }else{
                 monsterarr[i].show();
                 count++;
             }
         }
         System.out.println("训练场剩余怪物数量:"+count);
         if (count<=0){
             System.out.println("请刷新怪物!");
             return;
         }
         System.out.println("请选择PK的怪物编号:");
         //用户输入怪物编号
         int pkNo=sc.nextInt();
         //用户输入的编号作为索引去怪物数组取对应的怪物指针
         Monster pkMonster=monsterarr[pkNo-1];
         //显示宠物列表
         display();
         System.out.println("请选择出战的宠物编号:");
         pkNo=sc.nextInt();
         //用户输入的编号作为索引去宠物数组取对应的宠物指针
         Dog pkDog=dogArr[pkNo-1];
         //开始PK,一共pk20次
         //奇数回合:宠物打怪物,打一次怪物掉血800
         //偶数回合:怪物打宠物,打一次宠物掉血200
         //如何一方hp<0,pk结束
         for (int i = 0; i < 20; i++) {
             if (i%2==0){     //偶数回合:怪物打宠物,打一次宠物掉血200
                 pkMonster.attack();
                 pkDog.beAttack();
             }else {        //奇数回合:宠物打怪物,打一次怪物掉血800
                 if (pkDog.getAnger()==pkDog.getMaxAnger()){
                     pkDog.angerAttack();
                     pkMonster.beAttack();
                     pkMonster.beAttack();
                 }else {
                     pkDog.attack();
                     pkMonster.beAttack();
                 }
             }
             if (pkDog.getHp()<=0){
                 System.out.println(pkDog.getNickName()+"血量不足,寄!");
                 break;
             }
             if (pkMonster.getHp()<=0){
 //                System.out.println(pkMonster.getName()+"血量不足,寄!"+pkDog.getNickName()+"\t经验值+"+pkMonster.getExp()+"!");
                 pkDog.killOk(pkMonster);
                 break;
             }
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }        }
    }
    private static void refreshTrain() {
         //随机刷新10个怪物
         for (int i = 0; i < 10; i++) {
             Monster monster =new Monster();
             monster.setName("怪物"+(i+1)+"号");
             monsterarr[i]=monster;
             monster.show();
         }
         System.out.println("训练场怪物刷新成功!");
     }    public static void getDog(){
         if (money<5000){
             System.out.println("金币数量不够!");
             return;
         }
         if (dogArr[dogArr.length-1]!=null){
             System.out.println("你的宠物栏位已满");
             return;
         }
         System.out.println("请输入宠物的昵称:");
         String nickName =sc.next();
         System.out.println("请输入品种:");
         String stain =sc.next();
         Dog dog=new Dog(nickName,stain,1000L,100000L,1000,0,1000,10000L,10L);
         //dog指针 的地址存储到dogArr里面,找到数组中第一个不为null的位置存储
         for (int i = 0; i < dogArr.length; i++) {
             if (dogArr[i]==null){
                 dogArr[i]=dog;
                 break;
             }
         }
         money-=5000;
         System.out.println(nickName+"领养成功!");
     }
     public static void display(){
         //遍历dogArr数组,如果当前元素为null,输出空栏位,不为空是、,输出栏位
         for (int i = 0; i < dogArr.length; i++) {
             if (dogArr[i]==null){
                 System.out.println((i+1)+"号栏位:空");
             }else {
                 System.out.println((i+1)+"号栏位:"+dogArr[i].getNickName()+dogArr[i].getStrain());
             }
         }
     }
     public static void dilatation(){
         if (money<10000){
             System.out.println("请充值");
             return;
         }
         Dog [] newdogArr=new Dog[dogArr.length+5];
         for (int i = 0; i < dogArr.length; i++) {
             newdogArr[i]=dogArr[i];
         }
         dogArr=newdogArr;
         money-=10000;
         System.out.println("恭喜你扩容宠物栏位成功!");
     }
     public static void pay(){
         System.out.println("你现在有:"+money+"金币!");
         System.out.println("冲100000送200000!仅限今日!");
         int pay= sc.nextInt();
         if (pay==100000){
             money+=300000;
         }else {
             money+=pay;
         }
         System.out.println("你现在有:"+money+"金币");
     } }


 

以上即宠物大作战游戏