简单原理:从100多个英雄中选择一个,使用该英雄的对象。
三级目录
例如:剑圣vs寒冰
剑圣类:
属性:姓名、ID、AD、AP、HP、LV
方法:技能Q 伤害计算25/60/95/130/165+1*AD
寒冰类:
属性:同上;
方法:技能w 伤害计算20/35/50/65/80+1*AD
攻击配合逻辑:两个类在对方方法中作为参数。(寒冰攻击技能攻击剑圣类型的对象)
创建对象的代码——对象名
方法的参数:在方法中充当局部变量使用,参数在调用方法的时候传入。
参数格式: 参数类型 参数名
ps参数类型被定义为被攻击者的类型
封装
思考:
1、有没有一次性复制的方法
2、属性名太多,属性需要的数据类型过多,怎么简化
3、属性赋值,需要考虑到数据是否合法
4、对类的封装
5、访问权限范围划定
src:public
包:缺省的
类文件
类:类中{},私有的
public:共有的 private:私有的 缺省的:不写的
封装步骤:
1、 给所有的属性进行私有化
2、getter/ssetter方法
get:获取这个对象的属性值——返回值
set:设置对象的属性值——参数
3、构造方法:对象的构造
语法:方法名与类名一致
没有返回值结构
每个类都会有默认的隐式空参数 构造方法
作用:只有在创建对象的时候直接调用:一次性
通过直接传入参数,在创建对象是初始化
未封装
未封装ashe类代码
public class Ashe {
String name;
String id;
int ad;
int ap;
int hp;
int w_lv;
public void attack_w(MasterYi masterYi){
int num = 20+15*w_lv+1*ad;
masterYi.hp -= num;
System.out.println (name+"("+id+")攻击了"+masterYi.name+"("+masterYi.id+")造成了"+num+"点伤害!剑圣还剩下"+hp+"点生命值!");
}
未封装剑圣类代码
public class MasterYi {
String name;
String id;
int ad;
int ap;
int hp;
int q_lv;
public void attack_q(Ashe ashe){
int num = 25+35*q_lv+1*ad;
ashe.hp -= num;
System.out.println(name+"("+id+")攻击了"+ashe.name+"("+ashe.id+")造成了"+num+"点伤害!寒冰还剩下"+hp+"点生命值!");
}
}
未封装主方法
public class battle {
public static void main(String[] args) {
MasterYi masterYi = new MasterYi();
Ashe ashe = new Ashe();
masterYi.name = "无极剑圣";
ashe.name = "寒冰射手";
masterYi.id = "国服第一剑圣";
ashe.id = "国服第一寒冰";
masterYi.ad = 78;
ashe.ad = 77;
masterYi.ap = 150;
ashe.ap = 200;
masterYi.hp = 350;
ashe.hp = 400;
masterYi.q_lv = 2;
ashe.w_lv = 3;
while(masterYi.hp >0 && ashe.hp > 0){
ashe.attack_w(masterYi);
if(masterYi.hp > 0){
masterYi.attack_q(ashe);
if(ashe.hp < 0){
System.out.println("寒冰射手输了,她的血量是:"+ashe.hp);
}
}
else{
System.out.println("剑圣输了,他的血量是:"+masterYi.hp);
}
}
}
封装后
封装后ahse类代码
public class Ashe {
private String name;
private String id;
private int ad;
private int ap;
private int hp;
private int w_lv;
public Ashe(String name,String id,int ad,int ap,int hp,int w_lv){
this.name = name;
this.id = id;
this.ad = ad;
this.ap = ap;
this.hp = hp;
this.w_lv = w_lv;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public void setAd(int ad) {
this.ad = ad;
}
public int getAd() {
return ad;
}
public void setAp(int ap) {
this.ap = ap;
}
public int getAp() {
return ap;
}
public void setHp(int hp) {
this.hp = hp;
}
public int getHp() {
return hp;
}
public void setW_lv(int q_lv) {
this.w_lv = w_lv;
}
public int getw_lv() {
return w_lv;
}
public void attack_w(MasterYi masterYi){
int num = 20+15*getw_lv()+1*ad;
masterYi.setHp(masterYi.getHp()-num);
System.out.println (name+"("+id+")攻击了"+masterYi.getName()+"("+masterYi.getId()+")造成了"+num+"点伤害!剑圣还剩下"+hp+"点生命值!");
}
}
封装后剑圣类代码
public class MasterYi {
private String name;
private String id;
private int ad;
private int ap;
private int hp;
private int q_lv;
public MasterYi(String name,String id,int ad,int ap,int hp,int q_lv){
this.name = name;
this.id = id;
this.ad = ad;
this.ap = ap;
this.hp = hp;
this.q_lv = q_lv;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public void setAd(int ad) {
this.ad = ad;
}
public int getAd() {
return ad;
}
public void setAp(int ap) {
this.ap = ap;
}
public int getAp() {
return ap;
}
public void setHp(int hp) {
this.hp = hp;
}
public int getHp() {
return hp;
}
public void setQ_lv(int q_lv) {
this.q_lv = q_lv;
}
public int getQ_lv() {
return q_lv;
}
public void attack_q(Ashe ashe){
int num = 25+35*q_lv+1*ad;
ashe.setHp(ashe.getHp()-num);
System.out.println(name+"("+id+")攻击了"+ashe.getName()+"("+ashe.getId()+")造成了"+num+"点伤害!寒冰还剩下"+hp+"点生命值!");
}
}
封装后主方法
public class battle {
public static void main(String[] args) {
MasterYi masterYi = new MasterYi("无极剑圣","中单百年剑圣",201,0,3020,8);
Ashe ashe = new Ashe("寒冰射手","下路百年AD",301,0,2020,5);
while (masterYi.getHp() > 0 && ashe.getHp() > 0){
ashe.attack_w(masterYi);
if(masterYi.getHp() > 0){
masterYi.attack_q(ashe);
if(ashe.getHp() < 0){
System.out.println("寒冰射手输了,她的血量是"+ashe.getHp());
}
}
else{
System.out.println("剑圣输了,他的血量是"+masterYi.getHp());
}
}
}
}