我看到你有回复一个JAVA游戏的问题
答案:1 悬赏:30 手机版
解决时间 2021-04-01 16:29
- 提问者网友:感性作祟
- 2021-04-01 10:19
我看到你有回复一个JAVA游戏的问题
最佳答案
- 五星知识达人网友:躲不过心动
- 2021-04-01 11:28
哦,我看到你留言了, 找到了以前写的代码,你参考下吧.
//人物属性包括生命,攻击,防御,运气,人物随机吃血瓶,当一方的生命为0时游戏结束。
class Hero {//定义一个角色类,拥有基础属性和战斗的方法
public String id;// 角色名
public int total;// 总血量
public int hp;// 血
public int att;// 攻击
public int def;// 防御
public int luck;// 运气
public Hero(String id, int hp, int att, int def, int luck) {
this.id = id;
this.hp = hp;
this.att = att;
this.def = def;
this.luck = luck;
this.total = hp;// 初始血值赋值给总血量
}
//定义回血的方法
public void addHp(int point) {
if (hp + point <= total) {
hp = hp + point;
} else {
point = total - hp;
hp = total;
}
System.out.println(" 运气事件:" + id + "吃了血瓶增加了" + point + "点生命值");
}
//判断英雄是否存活
boolean isAlive() {
return hp > 0;
}
//如果需要每局战斗前都显示自己的血量,那么可以调用这个函数
public String sayHp() {
return id + "生命值" + hp;
}
//输出的样式
@Override
public String toString() {
return id + "初始状态:" + "血:" + hp + "攻:" + att + "防:" + def + "运气:" + luck;
}
//战斗的方法
void startAtt(Hero hero) {
int luckAtt = (int) (Math.random() * 10) * luck;//随机的攻击力0~10乘以运气值
int tempAtt = att + luckAtt;//总攻击力= 基础攻击+随机的运气攻击
hero.hp = hero.hp + hero.def - tempAtt;//剩余血量= 现在的血+防御- 伤害
System.out.println(id + "对" + hero.id + "造成了" + tempAtt + "点伤害");
if (!hero.isAlive()) {
System.out.println(id + "取得了胜利");
} else {
//如果角色还存在,那么有一定几率触发回血事件
int x = (int) (Math.random() * 20 + 1);
if (x <= hero.luck) {
hero.addHp(x * 5);//回血量随机
}
}
}
}
//控制攻击的类
class DuelControl {
Hero h1;
Hero h2;
public DuelControl(Hero h1, Hero h2) {//初始化
this.h1 = h1;
this.h2 = h2;
}
//开始战斗
void beginDuel() {
System.out.println("*********" + h1.id + "和" + h2.id + "进入了角斗场" + "*********");
System.out.println(h1 + "
" + h2);//输出初始状态
int i = 0;//循环次数
while (h1.isAlive() && h2.isAlive()) {//循环条件,两个角色都还有血
i++;
System.out.println("===========第" + i + "回合=============");
h1.startAtt(h2);//先让h1攻击h2
if (!h2.isAlive()) {
break;
}
try {
Thread.sleep(1000);// 暂停1000毫秒=1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
h2.startAtt(h1);//再让h2攻击h1
if (!h1.isAlive()) {
break;
}
}
}
}
//测试类
public class GameDemo {
public static void main(String[] args) {
System.out.println("");
System.out.println("");
System.out.println("
");
Hero lucy = new Hero("lucy", 1000, 290, 60, 8);
Hero jcak = new Hero("jcak", 1200, 200, 120, 10);
new DuelControl(lucy, jcak).beginDuel();
}
}来自:求助得到的回答
//人物属性包括生命,攻击,防御,运气,人物随机吃血瓶,当一方的生命为0时游戏结束。
class Hero {//定义一个角色类,拥有基础属性和战斗的方法
public String id;// 角色名
public int total;// 总血量
public int hp;// 血
public int att;// 攻击
public int def;// 防御
public int luck;// 运气
public Hero(String id, int hp, int att, int def, int luck) {
this.id = id;
this.hp = hp;
this.att = att;
this.def = def;
this.luck = luck;
this.total = hp;// 初始血值赋值给总血量
}
//定义回血的方法
public void addHp(int point) {
if (hp + point <= total) {
hp = hp + point;
} else {
point = total - hp;
hp = total;
}
System.out.println(" 运气事件:" + id + "吃了血瓶增加了" + point + "点生命值");
}
//判断英雄是否存活
boolean isAlive() {
return hp > 0;
}
//如果需要每局战斗前都显示自己的血量,那么可以调用这个函数
public String sayHp() {
return id + "生命值" + hp;
}
//输出的样式
@Override
public String toString() {
return id + "初始状态:" + "血:" + hp + "攻:" + att + "防:" + def + "运气:" + luck;
}
//战斗的方法
void startAtt(Hero hero) {
int luckAtt = (int) (Math.random() * 10) * luck;//随机的攻击力0~10乘以运气值
int tempAtt = att + luckAtt;//总攻击力= 基础攻击+随机的运气攻击
hero.hp = hero.hp + hero.def - tempAtt;//剩余血量= 现在的血+防御- 伤害
System.out.println(id + "对" + hero.id + "造成了" + tempAtt + "点伤害");
if (!hero.isAlive()) {
System.out.println(id + "取得了胜利");
} else {
//如果角色还存在,那么有一定几率触发回血事件
int x = (int) (Math.random() * 20 + 1);
if (x <= hero.luck) {
hero.addHp(x * 5);//回血量随机
}
}
}
}
//控制攻击的类
class DuelControl {
Hero h1;
Hero h2;
public DuelControl(Hero h1, Hero h2) {//初始化
this.h1 = h1;
this.h2 = h2;
}
//开始战斗
void beginDuel() {
System.out.println("*********" + h1.id + "和" + h2.id + "进入了角斗场" + "*********");
System.out.println(h1 + "
" + h2);//输出初始状态
int i = 0;//循环次数
while (h1.isAlive() && h2.isAlive()) {//循环条件,两个角色都还有血
i++;
System.out.println("===========第" + i + "回合=============");
h1.startAtt(h2);//先让h1攻击h2
if (!h2.isAlive()) {
break;
}
try {
Thread.sleep(1000);// 暂停1000毫秒=1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
h2.startAtt(h1);//再让h2攻击h1
if (!h1.isAlive()) {
break;
}
}
}
}
//测试类
public class GameDemo {
public static void main(String[] args) {
System.out.println("");
System.out.println("");
System.out.println("
");
Hero lucy = new Hero("lucy", 1000, 290, 60, 8);
Hero jcak = new Hero("jcak", 1200, 200, 120, 10);
new DuelControl(lucy, jcak).beginDuel();
}
}来自:求助得到的回答
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯