Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 塔防暴徒健康_Java - Fatal编程技术网

Java 塔防暴徒健康

Java 塔防暴徒健康,java,Java,我正在做一个塔防游戏,当涉及到随着等级的增加,更强壮的怪物的健康时,我遇到了一个巨大的问题。我现在将健康设置为mobSize,我的意思是,健康栏与mob的大小成比例。这显然不适用于更高级别,因为怪物保持相同的大小并变得更强,但我的绘制方法做到了这一点: public void draw(Graphics g) { if(inGame) { if(Screen.level == 1){ g.drawImage(Screen.tileset_mob[1], x

我正在做一个塔防游戏,当涉及到随着等级的增加,更强壮的怪物的健康时,我遇到了一个巨大的问题。我现在将健康设置为mobSize,我的意思是,健康栏与mob的大小成比例。这显然不适用于更高级别,因为怪物保持相同的大小并变得更强,但我的绘制方法做到了这一点:

public void draw(Graphics g) {
    if(inGame) {
        if(Screen.level == 1){
        g.drawImage(Screen.tileset_mob[1], x, y, width, height, null);
        //Health Bar
        g.setColor(new Color(180, 180, 50));
        g.fillRect(x, y -(healthSpace + healthHeight) , width, healthHeight);      

        g.setColor(new Color(255, 0, 0));
        g.fillRect(x, y -(healthSpace + healthHeight) , mobshealth , healthHeight);

        g.setColor(new Color (0, 0, 0));
        g.drawRect(x, y -(healthSpace + healthHeight), mobshealth - 1, healthHeight -1);
        }

这显然只是从健康栏的宽度中移除,健康栏被设置为暴民的健康。我的问题是,我想制造一个更强大的暴民,随着等级的增加,他们从健康酒吧带走的东西会更少。有什么建议吗?非常感谢你

逻辑实体的属性与其视觉表示无关,相反

换句话说,您不应该关心与绘图或GUI有关的任何事情,而是将您的Mob类设置为逻辑类,而不是它的可视化表示允许某种类型的强度倍增因子应用于其大小属性,然后在其getStrength方法中返回。可视化表示将简单地反映此方法返回的值

i、 e.,:

// strengthScaleFactor is a double which increases at higher levels
public int getStrength() {
   return (int) (getMobSize() * strengthScaleFactor);
}
暴徒力量的视觉表示,健康栏,可以计算并使用标准化的力量水平,即上述方法的结果除以返回最大力量getMaxStrength?的其他方法

在这里一直思考。

想想MVC

//Model fields
//HP, MAXHP

//Controller method
float getHPPercent()
{
return HP/HPMax(float);
}

//View

int HPBoxWidthInPixels
Draw()
{
float percent = controller.getHPPercent();
Rect HPBox.x = Math.RoundToInt(HPBoxWidthInPixels *percent);
}

只是想澄清一下,你想让拥有不同最大生命值的暴徒的健康栏保持相同的大小吗?是的,这正是我想要的!