我正在创建一个简单的战斗游戏。有两名对方球员的目标是消灭对方;我创建了健康栏等。要对对手发起攻击,用户单击某个按钮“攻击”。如果一名玩家的生命值达到零,我希望禁用此按钮。
框架 http://sstatic.net/stackoverflow/img/Untitled.jpg
我的程序结构:
main class (public class App extends JFrame) //私有的JButtons、JPanels等
public App() //所有组件的布局和注册的监听器
main 方法 //frame/s (我的 main 方法中有不止一帧。哈哈)
Listener class/es //if else 语句 (if (e.getSource == xyz))
绘制健康条的 JPanel 类/es
----结构结束
这是我到目前为止在面板类上所做的(总源代码是一个 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 的 healthbar(fillRect) 的面板类。widthHP、widthRage 是我制作的其他面板类的参数。
一旦widthHP变为零或小于,我希望禁用攻击按钮。我已经研究过 if 语句,但它似乎没用。
我不知道我是否要将它放在我的 Listener 类或我的代码中的其他任何地方。