赞
踩
闪避率和暴击率同理但是没有写
- /**
- * 玩家类
- * 属性 名字 类型 生命值 防御值 攻击力
- * 方法 自我介绍 pk 斗殴
- */
- public class Player {
- //分装:把属性设为private,提供公共的get和set方法,提高安全性
- private String name; //姓名
- private String type; //类型 战士 法师
- private int hp; //生命值
- private int defense; //防御值
- private int attack; //攻击力
- private int baoji; //暴击率
- private double miss; //闪避率
- private String[] zhuanbei;
-
-
-
- // 一般定义了有参的构造器,一定也要定义一个无参的
- //有参
-
- public Player(String name, String type, int hp, int defense, int attack, int baoji, double miss, String[] zhuanbei) {
- this.name = name;
- this.type = type;
- this.hp = hp;
- this.defense = defense;
- this.attack = attack;
- this.baoji = baoji;
- this.miss = miss;
- this.zhuanbei = zhuanbei;
- }
-
- //无参
- public Player() {
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public int getHp() {
- return hp;
- }
-
- public void setHp(int hp) {
- this.hp = hp;
- }
-
- public int getDefense() {
- return defense;
- }
-
- public void setDefense(int defense) {
- this.defense = defense;
- }
-
- public int getAttack() {
- return attack;
- }
-
- public void setAttack(int attack) {
- this.attack = attack;
- }
-
- public double getBaoji() {
- return baoji;
- }
-
- public void setBaoji(int baoji) {
- this.baoji = baoji;
- }
-
- public double getMiss() {
- return miss;
- }
-
- public void setMiss(double miss) {
- this.miss = miss;
- }
-
- public String[] getZhuanbei() {
- return zhuanbei;
- }
-
- public void setZhuanbei(String[] zhuanbei) {
- this.zhuanbei = zhuanbei;
- }

- /**
- * 描述自己的属性
- */
- public void introduce(){
- System.out.println("我叫" + name + ",是一个" + type);
- System.out.println(",生命值高达" + hp + ",防御值" + defense + ",攻击力" + attack);
- }
- public boolean rateCheck(int rate){
- float ran = random.nextFloat() * 101; //[0,101)
- if (ran < rate) //当随机的数小于既定的rate则判定触发
- return true;
- else
- return false;
- }
- public int baojishanghai(int baojilv, int attack){
- int bjtest = 0; //暴击伤害
- boolean isBaojilv = rateCheck(baojilv); //判断是否触发暴击
- if (isBaojilv){
- System.out.println("触发暴击");
- bjtest = attack * 2; //当触发暴击时,伤害为2倍的基伤并无视防御
- }
- return bjtest; //返回暴击伤害
- }
- /**
- * 掉落并不是百分百掉落
- */
- public void fall(int fallRate, int len, String arr[]){
- int i = 0;
- Boolean fall = rateCheck(fallRate); //每个玩家都有自己的掉落率,判断是否触发掉落
- if (fall){
- i = (int)random.nextFloat() * len; //如果掉落,则在装备数组里随机掉落一个
- System.out.println("掉落" + arr[i]);
- }
- }
- /**
- * pk
- * 我方开始的战斗
- * @param p 敌对玩家
- */
- public void pk(Player p){
- int flag = 0; //标识
- Rate bj = new Rate(); //new一个计算暴击掉落的类的对象
- while(true){
- //显示当前战斗人员的信息
- this.introduce();
- p.introduce();
- int bjsh = 0; //暴击伤害
- // 定义一个标记 0 我方攻击 1 敌方攻击
- if (flag == 0){
- //战斗 我方攻击力减去敌方防御力
- int harm = this.attack - p.defense;
- bjsh = bj.baojishanghai(this.baoji,this.attack); //判断是否暴击,如果发生暴击则计算暴击伤害
- if (bjsh > 0) //上一步如果发生暴击,则暴击伤害>0
- harm = bjsh; //造成的伤害为暴击伤害
- System.out.println(p.name + "掉血" + harm);
- p.hp -= harm; //让敌方生命值-伤害值
- flag = 1; //改变标记
- }else {
- //战斗 敌方攻击力减去我方防御力
- int harm = p.attack - this.defense;
- bjsh = bj.baojishanghai(p.baoji,p.attack);
- if (bjsh > 0)
- harm = bjsh;
- System.out.println(this.name + "掉血" + harm);
- this.hp -= harm; //让敌方生命值-伤害值
- flag = 0; //改变标记
- }
-
- /**
- * 死亡机制 当一个人血量为零,则pk结束
- */
- if (p.hp <= 0){
- System.out.println("我方击败" + p.name);
- bj.fall(50,p.zhuanbei.length,p.zhuanbei);
- break;
- }
- if (this.hp <= 0){
- System.out.println(p.name + "击败" + this.name);
- bj.fall(50,this.zhuanbei.length,this.zhuanbei);
- break;
-
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。