-1

私はタワーディフェンスゲームに取り組んでおり、レベルが上がるにつれてより強いモブの健康を修正することになると、大きな問題に直面しています。現在、ヘルスをmobSizeに設定しています(つまり、ヘルスバーはmobのサイズに比例します)。モブは同じサイズのままで強くなるので、これは明らかに高いレベルでは機能しませんが、私のdraw()メソッドはこれを行います:

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

これは明らかに、暴徒のヘルスとして設定されているヘルスバーの幅から削除されます。私の問題は、レベルが上がるにつれてヘルスバーから離れることが少なくなる、より強力な暴徒を作りたいということです。助言がありますか?どうもありがとう!

4

2 に答える 2

3

論理エンティティのプロパティは、その視覚的表現とは何の関係もありませんが、まったく逆です。

言い換えると、描画やGUIとは何の関係もありませんが、Mobクラス(視覚的表現ではなく論理クラス)で、サイズ属性に適用できるある種の強度乗数係数を使用できるようにする必要があります。その後、そのgetStrength()メソッドで返されます。視覚的表現は、このメソッドによって返される値を単に反映します。

すなわち:

// strengthScaleFactor is a double which increases at higher levels
public int getStrength() {
   return (int) (getMobSize() * strengthScaleFactor);
}

getMaxStrength()暴徒の強さの視覚的表現である「ヘルスバー」は、正規化された強さのレベルを計算して使用できます。これは、最大の強さ(おそらく?)を返す他の方法で割った上記の方法の結果です。

ここでMVCを考えてみてください。

于 2012-08-20T01:40:50.837 に答える
0

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);
}
于 2012-08-20T01:56:31.437 に答える