学习内容:
利用Java基础知识做个练习
前言
学习 JAVA 大数据:“钱”景无限
文章目录
一:游戏场景
二:构建YingXiong类
三:构建Test03类
一:游戏场景:
我方三个游戏人物,分别去攻击对方的一个游戏人物
已知:1.这三个游戏人物都有名字分别是:貂蝉,刘备,关羽
2.对方游戏人物为:曹操
3.游戏人物有3个属性:
* 名字,血量(统一100),攻击
* 且貂蝉的攻击力为10
* 刘备攻击力为20
* 关羽攻击力为50
二:构建YingXiong类
//与test03做个程序
public class YingXiong {
/*
* 属性有吗?有的话有哪些?
* 1.名字--name
* 2.血量--hp
* 3.伤害值--hartValue
*/
private String name;
private int hp=100;
private int hartValue;
/*
* 生成getter和setter方法
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHp() {
return hp;
}
public void setHp(int hp) {
this.hp = hp;
}
public int getHartValue() {
return hartValue;
}
public void setHartValue(int hartValue) {
this.hartValue = hartValue;
}
/*
* 方法有吗?有的话有哪些?
* 1.英雄攻击英雄
* 参数: 被攻击的英雄
* 返回值:被攻击的英雄受伤的声音--"啊"
*/
public String attack(YingXiong a) {
/*
* 被打的英雄的血量= 被打的英雄的血量- 出手者的伤害值
*/
a.hp = a.hp-this.hartValue;
return "啊";
}
}
三:构建Test03类
import java.util.Arrays;
import java.util.Random;
public class Test03 {
public static void main(String[] args) {
/*
* 1.创建四个对象,分别给他们取名,给他们设置伤害值以及血量
*/
YingXiong y1= new YingXiong();
YingXiong y2= new YingXiong();
YingXiong y3= new YingXiong();
YingXiong y4= new YingXiong();
y1.setName("貂蝉");
y1.setHartValue(10);
y2.setName("刘备");
y2.setHartValue(20);
y3.setName("关羽");
y3.setHartValue(50);
y4.setName("曹操");
y4.setHartValue(80);
/*
* 因为曹操是老怪,因此血量是200
* 所有要单独设置血量
*/
y4.setHp(200);
/*
* 把我方英雄集中在一起
*/
YingXiong[] arrYx = {y1,y2,y3};
//我方英雄集体去攻击老怪曹操
/*
* 遍历(foreach 即高级for循环)
* 一个一个的访问
*/
for (YingXiong i:arrYx) {
i.attack(y4);
}
//打印 曹操老怪的血量
System.out.println("曹操的血量剩余:"+y4.getHp());
/*
* 老怪反杀
* 老怪随机选一个英雄攻击
* 知识点:我们通过技术得到数组0,1,2中的任意一个,则需要求0-2的随机数
* 第一:知道哪些类可以产生随机数
* 第二:去百度随机数的方法或查API
*/
int a = new Random().nextInt(3);
y4.attack(arrYx[a]);
System.out.println("被伤害的是:"+arrYx[a].getName());
System.out.println(arrYx[a].getName()+"剩余血量为"+arrYx[a].getHp());
/*
* 第一轮:
* 打曹操肯定是曹操还活着
* 不知道曹操干了谁
* 第二轮:
* 打曹操肯定还是曹操还活着
* 不知道曹操干了谁
* 假如干的都是同一个人,则英雄数组要缩减容量
* 第三轮:
* ......
*
*/
/*
* 第2轮:
* a.曹操攻击同一个人;
* b.曹操按顺序攻击
* c.曹操随机攻击
*/
for (YingXiong i:arrYx) {
i.attack(y4);
}
System.out.println("曹操的血量剩余:"+y4.getHp());
int b = new Random().nextInt(3);
/*
* 如果随机是同一个人,则这个人血量没有,则被干掉
* 数组换新的长度和成员
* 如果不是同一个人,则数据还是原数组
*/
/*
* y4.attack(arrYx[b]);
* System.out.println("被伤害的是:"+arrYx[b].getName());
* System.out.println(arrYx[b].getName()+"剩余血量为"+arrYx[b].getHp());
*/
if (a==b) {
System.out.println(arrYx[b].getName()+"被曹操干死了");
/*
* 数组缩容:
* 1.新建一个2个长度的数组
* 2.把2个长度的数组赋值给arrYx
* 3.判断活着的存入arrYx
*/
YingXiong[] arr = {null,null};
int j= 0;//表示arr的下标
for (int i = 0;i<arrYx.length;i++){
if(a != i) {
arr[j]=arrYx[i];
j++;
System.out.println("还活着的有:");
System.out.println(arrYx[i].getName());
}
}
arrYx = arr;
System.out.println(Arrays.toString(arrYx));
}else {
System.out.println(arrYx[b].getName()+"被曹操砍到了");
}
}
}