我必须在此代码中添加什么才能满足基于回合制游戏的非常详细的要求?

时间:2018-05-08 12:22:15

标签: java java.util.scanner

游戏从初始化英雄开始。英雄有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;
}
}

我理解我的代码需要一个扫描程序,可能还有一个循环,以对抗宣布获胜者所需的多轮。我将如何实现代码的所有这些规则?我已经完成了非常基础但是提示用户输入对我来说很困难。任何帮助都会很棒,但越详细越好。

0 个答案:

没有答案