私は簡単な戦闘ゲームを作成しています。相手を排除することを目的とする 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 クラスに配置するか、コードの他の場所に配置するかはわかりません。