运行代码部分截图,从角色生命值100到0 的过程
首先定义Hero类用于定义角色属性及方法
public class Hero {
String roleName;//定义角色名字
int roleBlood;//定义角色血量
String roleWeapon;//定义角色武器
}
接着是攻击方法,传入目标角色的信息,通过随机Random()方法随机造成角色伤害值,并对齐目标角色的血量做出相应的减少, 定义局部变量nowBlood,当角色攻击伤害大于目标角色血量时,直接赋予目标角色nowBlood=0,并输出相应攻击提醒。
/**
* 攻击
*传入目标角色的参数
* @param target
*/
public void attack(Hero target) {
Random random = new Random();
int harm = random.nextInt(10) + 1;//定义伤害
int nowBlood = target.roleBlood -= harm;
if (nowBlood < 0) {//当伤害大于剩余血量时,英雄剩下血量为0
nowBlood = 0;
}
System.out.println("英雄" + roleName + "用" + roleWeapon + "攻击了" + target.roleName +
",造成了" + harm + "点伤害," + target.roleName + "还剩下" + nowBlood + "点血。");
}
定义角色是否存活方法,当角色血量>0时,返回true,否则返回false;
/**
* 判断英雄血量是否大于0
* @return
*/
public boolean isLive() {
if (roleBlood > 0) {
return true;
}
return false;
}
在main方法中,实例化两个对象,并赋予两个对象不同的属性值,
Hero hero1 = new Hero();
hero1.roleName = "盖伦";
hero1.roleBlood = 100;
hero1.roleWeapon = "斧子";
Hero hero2 = new Hero();
hero2.roleName = "寒冰射手";
hero2.roleBlood = 100;
hero2.roleWeapon = "箭";
通过while循环判断当两个角色都存活时,调用attack()方法,如果有一方角色生命值小于0,则输出角色K.O.了目标角色
while (hero1.isLive() && hero2.isLive()) {
hero1.attack(hero2);//调用攻击方法
if(!hero2.isLive()){//判断血量是否小于0
System.out.println(hero1.roleName+"K.O.了"+hero2.roleName);
break;
}
hero2.attack(hero1);
if(!hero1.isLive()){
System.out.println(hero2.roleName+"K.O.了"+hero1.roleName);
break;
}
}
完整代码如下
package com.csi.lol;
import java.util.Random;
public class Hero {
String roleName;
int roleBlood;
String roleWeapon;
/**
* 攻击
*传入目标角色的参数
* @param target
*/
public void attack(Hero target) {
Random random = new Random();
int harm = random.nextInt(10) + 1;//定义伤害
int nowBlood = target.roleBlood -= harm;
if (nowBlood < 0) {//当伤害大于剩余血量时,英雄剩下血量为0
nowBlood = 0;
}
System.out.println("英雄" + roleName + "用" + roleWeapon + "攻击了" + target.roleName +
",造成了" + harm + "点伤害," + target.roleName + "还剩下" + nowBlood + "点血。");
}
/**
* 判断英雄血量是否大于0
* @return
*/
public boolean isLive() {
if (roleBlood > 0) {
return true;
}
return false;
}
}
package com.csi.lol;
import java.util.Scanner;
public class LolStart {
public static void main(String[] args) {
Hero hero1 = new Hero();
hero1.roleName = "盖伦";
hero1.roleBlood = 100;
hero1.roleWeapon = "斧子";
Hero hero2 = new Hero();
hero2.roleName = "寒冰射手";
hero2.roleBlood = 100;
hero2.roleWeapon = "箭";
while (hero1.isLive() && hero2.isLive()) {
hero1.attack(hero2);//调用攻击方法
if(!hero2.isLive()){//判断血量是否小于0
System.out.println(hero1.roleName+"K.O.了"+hero2.roleName);
break;
}
hero2.attack(hero1);
if(!hero1.isLive()){
System.out.println(hero2.roleName+"K.O.了"+hero1.roleName);
break;
}
}
}
}