我正在製作一個主類,一個戰鬥類,一個怪物類,一個玩家類等的Java遊戲......我的統計數據顯示在main類框架。按下按鈕會創建一個新的戰鬥框架,並顯示統計數據。戰鬥結束後,統計數據會有所不同(例如,玩家的生命值比被怪物擊中前低)。戰鬥幀消失後,我需要將這些統計數據的變化反映回主框架。Java初學者:讓一個班級知道另一個班級已經完成
告訴主要班級戰鬥結束並刷新統計數據的最佳方式是什麼?代碼如下。顯然這是一項正在進行的工作,還有其他一些不相關的課程。
啓動一個戰鬥主類的部分(即,創建一個新的戰鬥對象,它是一個JFrame):
...
public class BattleFrame extends JFrame implements ActionListener
{
Monster newMonster = new Monster();
...
public BattleFrame()
...
public void displayStats()
{
monsterLabel.setText("<html>Type: " + newMonster.getMonsterName()
+ "<br>Health: " + newMonster.getHealth()
+ "<br>Attack: " + newMonster.getAttackName()
+ "<br>Attack Damage: " + newMonster.getAttackDamage());
playerLabel.setText("<html>Player: " + DarkWorld.user.getPlayerName()
+ "<br>Health: " + DarkWorld.user.getHealth()
+ "<br>Attack Damage: " + DarkWorld.user.getAttackDamage()
+ "<br>Level: " + DarkWorld.user.getLevel()
+ "<br>Experience: " + DarkWorld.user.getExperience());
}
...
if(newMonster.getHealth() <= 0)
{
...
JOptionPane.showMessageDialog(null, "You killed the monster! You found a " + newItem.getItemName()
+ ". It has been added to your inventory.");
dispose();
}
if(DarkWorld.user.getHealth() <= 0)
{
//if player dies (health reaches zero), the game is over - need to make game end
displayStats();
JOptionPane.showMessageDialog(null, "The monster killed you!");
dispose();
}
}
...
}
編輯::
public class DarkWorld extends JFrame implements ActionListener
{
...
public DarkWorld()
{
...
public void createInfoLabel()
{
infoLabel.setText("<html>Player: " + DarkWorld.user.getPlayerName()
+ "<br>Health: " + DarkWorld.user.getHealth()
+ "<br>Attack Damage: " + DarkWorld.user.getAttackDamage()
+ "<br>Level: " + DarkWorld.user.getLevel()
+ "<br>Experience: " + DarkWorld.user.getExperience());
}
...
if(source == monsterButton)
{
BattleFrame battle = new BattleFrame();
final int WIDTH = 700;
final int HEIGHT = 500;
battle.setSize(WIDTH, HEIGHT);
battle.setVisible(true);
}
...
}
對戰類的部分試過簡化這裏的代碼,以便更清楚我在問什麼。
上課沒有完成! – Juvanis
我懷疑這是一個術語問題,但ivaonic是正確的。你的意思是「主要」功能嗎?在這種情況下,程序在結束時結束,並且沒有什麼可以做的。 – ApproachingDarknessFish
我不確定你的意思,對不起。主要班級應該在整個過程中堅持下來,每當按下按鈕時就會打電話給戰鬥班。 – Jeremy