java - Java 游戏类:Hero vs Monsters
问题描述
你好我想解决这个问题:
你正在制作一个角色扮演游戏。首先,你需要一个扮演角色的英雄。与所有角色扮演游戏一样,英雄拥有生命值(生命)、攻击力和防御力。他还拥有经验值和出生时的名字。英雄只是四处游荡,没有任何角色扮演游戏很有趣。他们需要一些怪物来战斗。并非所有的怪物都是一样的,有些会更重地打你,有些会立即受到更多伤害(阅读:它们具有可变的攻击强度和防御力)。虽然大多数人没有名字,但他们都属于一个已知的特定种族。他们也没有经验值(因为他们注定要被击败)。不同的怪物种族有不同的魔法技能,可以增强他们的攻击或防御
• 英雄和怪物的共同点是什么?将它们组合在一起!• 制作一个带有main 方法的Game 类来测试你的角色。让他们互相攻击,看看他们是如何损失HP的!为简单起见,您可以考虑在每次攻击中,目标损失的 HP 量等于攻击者的力量。
输出:
Created hero Chuck. HP = 100, ATK = 10
Created monster of race Rock skin cyclops. HP = 30, ATK = 8
Created monster of race Fire wizard. HP = 50, ATK = 6
Chuck attacks Rock skin cyclops
Chuck's attributes: hp = 100, xp = 10
Rock skin cyclops's attributes: hp = 20
Rock skin cyclops starts using magic
Chuck attacks Rock skin cyclops
Chuck's attributes: hp = 100, xp = 20
Rock skin cyclops's attributes: hp = 15
Fire wizard attacks Chuck
Fire wizard's attributes: hp = 50
Chuck's attributes: hp = 94, xp = 20
Chuck attacks Fire wizard
Chuck's attributes: hp = 94, xp = 30
Fire wizard's attributes: hp = 40
我试图解决这样的问题:
界面:
public interface RpgGame {
void attack(Character character);
}
字符类:
public class Character {
private int HP;
private int ATK;
private int defense;
public Character(int HP, int ATK, int defense) {
this.HP = HP;
this.ATK = ATK;
this.defense = defense;
}
public void setATK(int ATK) {
this.ATK = ATK;
}
public int getATK() {
return ATK;
}
public void setDefense(int defense) {
this.defense = defense;
}
public int getDefense() {
return defense;
}
public void setHP(int HP) {
this.HP = HP;
}
public int getHP() {
return HP;
}
}
英雄等级:
public class Hero extends Character implements RpgGame {
private int XP;
private String name;
public Hero(int HP, int ATK, int defense, int XP, String name) {
super(HP, ATK, defense);
this.XP = XP;
this.name = name;
System.out.println("Created hero " + name + "," + "HP = " + HP + " , " + "ATK = " + ATK);
}
public void setXP(int XP) {
this.XP = XP;
}
public int getXP() {
return XP;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void attack(Character character) {
if(character.getHP() < 0) {
System.out.println("Monster is dead");
}else {
this.XP += getATK();
int monsterHp = character.getHP();
monsterHp -= getATK();
character.setHP(monsterHp);
}
}
}
怪物等级:
public class Monster extends Character {
private String race;
public Monster(int HP, int ATK, int defense, String race) {
super(HP, ATK, defense);
this.race = race;
}
public void setRace(String race) {
this.race = race;
}
public String getRace() {
return race;
}
}
火精灵类:
public class FireWizard extends Monster {
public FireWizard(int HP, int ATK, int defense,String race) {
super(HP, ATK, defense,race);
System.out.println("Created monster of Fire Wizard, " + "HP = " + HP + " , " + "ATK = " + ATK);
}
public void usingMagic() {
}
}
RockCyclop类:
public class RockCyclop extends Monster {
public RockCyclop(int HP, int ATK, int defense,String race) {
super(HP, ATK, defense,race);
System.out.println("Created monster of " + race + "," + " HP = " + HP + " , " + "ATK =" + ATK);
}
}
游戏类:
public class Game {
public static void main(String[] args) {
Hero chuck = new Hero(100, 10, 50, 0, "Chuck");
RockCyclop rock = new RockCyclop(30, 8, 40, "Rock skin cyclops");
FireWizard wizard = new FireWizard(50, 6, 40, "Fire Wizard");
}
} \
我不确定如何使用界面中的攻击方法使程序正常工作..以及如何正确使用它来发送字符。例如,如果我想访问 character.getRace() 我不能因为种族不在角色中,只是在怪物中。当我需要新角色时,我试图尊重开放封闭原则来扩展类。
解决方案
推荐阅读
- javascript - 从 discord.js 中的传入消息中获取命令
- javascript - Google 表格 - 脚本编辑器 数据验证生成器 - 格式化过滤日期列表
- php - 如何选择在 table1 中有值但在 table2 中为 NULL 的字段表?
- python - 模拟 NamedTemporaryFile 写入和关闭文件
- php - Hypens 打破 Laravel 动态路由
- powerbi - 在 Power Query 中应用条件(根据每个 Consol ID 筛选最早日期) - PowerBI
- tkinter - Tkinter 通过循环将条目值添加到列表中
- html - 一个元素在电话大小的另一个元素上弹出
- python - 在最后一项上打印没有结束分隔符
- python - Discord.py 按钮突然使机器人完全停止工作,没有引发错误或异常