2021-09-22 封装——PK类游戏


简单原理:从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());
            }
        }
    }
}

运行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值