1

私は簡単な戦闘ゲームを作成しています。相手を排除することを目的とする 2 人の反対側のプレイヤーがいます。ヘルスバーなどを作成しました。対戦相手に対して攻撃を開始するには、ユーザーは特定のボタン「攻撃」をクリックします。1 人のプレイヤーのヘルスバーがゼロになった場合、このボタンを無効にしたいです。

フレーム http://sstatic.net/stackoverflow/img/Untitled.jpg

私のプログラムの構造:

メイン クラス (パブリック クラス App extends JFrame) //プライベート JButton、JPanels など

public App() //すべてのコンポーネントと登録済みリスナーのレイアウト

メイン メソッド //frame/s (メイン メソッドに複数のフレームがあります。笑)

Listener class/es //if else ステートメント (if (e.getSource == xyz))

ヘルスバーを描画する JPanel クラス

----構造の終わり

パネルクラスでこれまでに行ったことは次のとおりです(ソースコードの合計は800行のtxtファイルです):

    class HP2panel extends JPanel {

    public void damageTake() {
    if (widthHP <= 0) {   
    damageToMe = 0;
    }
    else if (widthRage >= 250) {  
    damageToMe = 175 + (int)(Math.random() * 25);
    }
    else if (widthHP > 0 && widthRage < 250) { 
    damageToMe = Math.round(1 + (int)(Math.random() * 15));
    }
    if (widthHP2 <= 0) {
    damageToMe = 0;
    }
    widthHP2 = widthHP2 - damageToMe;

    logtxt.append("\nYour HP: " + widthHP2);
    logtxt.append("\nDamage you've taken: " + damageToMe);
    repaint();
}

public void healdamageTake() {
    if (widthHP2 <= 0) {
    Heal = 0;
    }
    if (widthHP2 >= 250) {
    Heal = 0;
    }
    else {
    Heal = (int)(Math.random() * 25);
    }
    widthHP2 = widthHP2 + Heal;
    logtxt.append("\n");
    logtxt.append("\nHealed HP: " + Heal);
    repaint();
}

public void restartHP2() {
    widthHP2 = 250;
    repaint();
}

    @Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.setColor(Color.green);
    g.fillRect(0, 0, widthHP2, 16);
}


    }

HP2panel は、プレイヤー 2 のヘルスバー (fillRect) が描画されるパネル クラスです。widthHP、widthRage は、私が作成した他のパネル クラスのパラメーターです。

widthHPがゼロ以下になったら攻撃ボタンを無効にしたい。私は if ステートメントに取り組みましたが、役に立たないようでした。

それを Listener クラスに配置するか、コードの他の場所に配置するかはわかりません。

4

1 に答える 1