新建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+"金币");
} }
以上即宠物大作战游戏