游戏从初始化英雄开始。英雄有4个属性:力量,敏捷,耐力和健康。默认情况下,Health设置为50,耐力设置为25,但必须通过滚动一个12面模具,一个10面模具和一个8面模具来初始化强度和敏捷性。我无法将最高值分配给力量,并将敏捷性设置为其他两个值的总和。
一轮应该包括每个玩家选择一个移动并计算所造成的伤害。每个玩家必须为他们的英雄选择一个移动(攻击或防御)。每一步都需要耐力,所以如果英雄无法承受耐力,那就必须休息。
移动细节: 攻击和休息不提供防御,所以如果你在这些状态下受到攻击,你将获得完全伤害。 休息会增加健康,减轻伤害,但与阻挡不同 阻挡提供防御,因此如果英雄在阻挡时受到攻击,则可以避免损害。 如果阻止值大于或等于攻击值,则攻击被躲避。 否则攻击和阻挡之间的区别就是伤害。
攻击 - 滚动20面骰子。攻击值是强度加上掷骰子。如果英雄无法满足耐力成本(6),则必须休息并且攻击值为零。 保卫 - 滚动20面模具。防守值是敏捷性加上掷骰。如果英雄无法满足耐力成本(4),则必须休息并且攻击值为零 休息 - 当玩家试图攻击/防守但是没有耐力时,滚动一个6面,一个8面的骰子和一个10面骰子。将最高值添加到运行状况。将其他两个的总和加到耐力中。这里没有耐力。
最终目标是编写一个类来测试所有内容: 创建一个新的BattleManager,使用BattleManager设置2个新的英雄。打印每个英雄的统计数据。使用英雄作为输入参数调用round方法。打印每个英雄的统计数据,使用英雄作为输入参数调用圆形方法。打印每个英雄的统计数据。比较两位英雄的健康状况。打印健康状况最好的英雄的名字,并宣布他们为胜利者。
public class Hero
{
private String name;
private int health;
private int strength;
private int agility;
private int stamina;
Die die1;
Die die2;
Die die3;
public Hero(String name)
{
this.name = name;
this.health = 50;
this.stamina = 25;
this.strength = 5;
this.agility = 5;
}
public void setName(String Name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setHealth(int health)
{
this.health = health;
}
public int getHealth()
{
return health;
}
public void setStrength(int strength)
{
this.strength = strength;
}
public int getStrength()
{
return strength;
}
public void setAgility(int agility)
{
this.agility = agility;
}
public int getAgility()
{
return agility;
}
public void setStamina(int stamina)
{
this.stamina = stamina;
}
public int getStamina()
{
return stamina;
}
public int addHealth()
{
if(health < 45 || health >= 0)
{
health = health + 5;
}
return health;
}
public int removeHealth()
{
if(health <= 50 || health >= 5)
{
health = health - 5;
}
return health;
}
public int addStamina()
{
if(stamina <= 20 || stamina >= 0)
{
stamina = stamina + 5;
}
return stamina;
}
public int removeStamina()
{
if(stamina <= 25 || stamina >= 5)
{
stamina = stamina - 5;
}
return stamina;
}
private void rest()
{
health = health + addHealth();
stamina = stamina + addStamina();
}
public int attack(int damage)
{
die1 = new Die(20);
die1.roll();
if(stamina <= 5)
{
rest();
}
else
{
damage = strength + die1.getValue();
stamina = stamina - 6;
}
return damage;
}
public int defend(int block)
{
die1 = new Die(20);
die1.roll();
if(stamina <= 3)
{
rest();
}
if(die1.getValue() <= 6)
{
block = getAgility() + (die1.getValue() * 2);
}
else
{
block = getAgility() + (die1.getValue());
}
stamina = stamina - 4;
return block;
}
public void printStats()
{
System.out.println("Thy hero's name is: " + getName());
System.out.println("Thy strengh is: " + getStrength());
System.out.println("Thy agility is: " + getAgility());
System.out.println("Thy stamina is: " + getStamina());
System.out.println("Thy health is: " + getHealth());
}
}
Next Class,需要更新以包含:setupHero - 将字符串(英雄的名称)作为参数。该方法使用上面的初始化指令(在英雄类中)来创建和初始化英雄对象。该方法返回已创建的英雄对象。 round - 获取两个英雄对象,返回void。允许用户选择移动,执行移动并施加伤害。打印完成后您想要的任何信息。 您可以包含任何其他您喜欢的私有方法,以帮助代码。
public class Battle_Manager
{
public static void main(String[] args)
{
Hero hA = new Hero("Ayy");
Hero hB = new Hero("Bee");
Die die1 = new Die(12);
Die die2 = new Die(8);
Die die3 = new Die(6);
die1.roll();
die2.roll();
die3.roll();
hA.printStats();
hB.printStats();
}
}
最后一堂课
import java.util.Random;
public class Die
{
private int sides;
private int dieValue;
public void roll()
{
Random r = new Random();
dieValue = (r.nextInt(sides) + 1);
}
public int getSides()
{
return sides;
}
public void setSides(int sides)
{
this.sides = sides;
}
public Die()
{
sides = 1;
dieValue = 1;
}
public Die (int sides)
{
sides = 1;
dieValue = 1;
if(sides >= 0)
{
this.sides = sides;
}
}
public int getValue()
{
int value = dieValue;
return value;
}
}
我理解我的代码需要一个扫描程序,可能还有一个循环,以对抗宣布获胜者所需的多轮。我将如何实现代码的所有这些规则?我已经完成了非常基础但是提示用户输入对我来说很困难。任何帮助都会很棒,但越详细越好。