Java 为了满足关于回合制游戏的详细要求,我必须在代码中添加什么?

Java 为了满足关于回合制游戏的详细要求,我必须在代码中添加什么?,java,java.util.scanner,Java,Java.util.scanner,游戏以初始化英雄开始。英雄有4种属性:力量、敏捷、耐力和健康。默认情况下,生命值设置为50,耐力设置为25,但力量和敏捷必须通过滚动一个12面骰子、一个10面骰子和一个8面骰子来初始化。我很难将最高值指定给力量,将敏捷性设置为其他两个值的总和 一轮应该由每个玩家选择一个动作并计算造成的伤害组成。每个玩家必须为他们的英雄选择一个移动(攻击或防御)。每一步都需要耐力,所以如果英雄负担不起耐力消耗,他必须休息 移动详细信息: 攻击和休息不提供防御,所以如果你在这些状态下受到攻击,你将受到全部伤害。 休

游戏以初始化英雄开始。英雄有4种属性:力量、敏捷、耐力和健康。默认情况下,生命值设置为50,耐力设置为25,但力量和敏捷必须通过滚动一个12面骰子、一个10面骰子和一个8面骰子来初始化。我很难将最高值指定给力量,将敏捷性设置为其他两个值的总和

一轮应该由每个玩家选择一个动作并计算造成的伤害组成。每个玩家必须为他们的英雄选择一个移动(攻击或防御)。每一步都需要耐力,所以如果英雄负担不起耐力消耗,他必须休息

移动详细信息: 攻击和休息不提供防御,所以如果你在这些状态下受到攻击,你将受到全部伤害。 休息可以增加生命值,从而减轻伤害,但它与阻塞不同 阻挡提供防御,所以如果英雄在阻挡时受到攻击,伤害可以避免。 如果阻塞值大于或等于攻击值,则攻击被闪避。 否则,攻击和阻挡之间的区别就是伤害

攻击-掷20面骰子。攻击值是力量加上掷骰。如果英雄不能达到耐力消耗(6),他必须休息,攻击值为零。 防御-掷一个20面骰子。防御价值是敏捷加上掷骰。如果英雄不能达到耐力消耗(4),他必须休息,攻击值为零 休息-当一名球员试图进攻/防守但体力不足时,掷6面骰、8面骰和10面骰。为健康添加最高值。把另外两个加起来就是耐力。这里没有体力消耗

最终目标是编写一个类来测试所有内容: 创建一个新的战地管理器,使用战地管理器设置2个新英雄。打印每个英雄的统计信息。使用英雄作为输入参数调用round方法。打印每个英雄的统计信息,使用英雄作为输入参数调用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());
}
}
最后一节课

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;
}
}

我知道我的代码需要一个扫描器,可能还需要一个循环,以应对宣布获胜者所需的多轮挑战。我将如何着手实现代码的所有这些规则?我已经做了非常基本的工作,但是提示用户输入对我来说很困难。任何帮助都会很好,但越详细越好。

“提示用户输入对我来说很困难。”但是想象一下,当你完成它时,通过自己的研究,你会感到多么满意!我知道这是最佳路线,但我时间紧迫。我看到大多数人都在看这堵文字墙,并假设我要求他们做一个完整的项目,但我认为我已经接近完成我已经拥有的。除了研究用户提示之外,关于这个代码我还应该查什么?我建议你只读一点关于游戏设计的知识,也看看这个问题的答案,把问题分解成可管理的部分。如果感到不知所措,这总是一个开始。编写一个大约15行的测试程序来处理输入——只需提示输入,将其解析为片段,然后打印出片段。工作到满意为止。你需要10到15分钟。然后把你学到的东西融入到你的大计划中。在你的其他问题上做到这一点。真正的编程是一个非常迭代的过程,有时你会编写一些小的辅助程序来找出如何使某些东西工作。即使40年过去了,我仍然这样做是为了解决一些问题。
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;
}
}