私はクラスのために小さなテキストベースのゲームを書いています。ナビゲーションはシンプルで、プレーヤーはボタンをクリックして別の部分に入ることができます。これらの部分はすべて、独自のコードブロックに分割されています。これまでに設定したパーツは2つだけで、それぞれがボタンを介して相互にアクセスできます。基本的に:
private void level1() {
//Stuff here, player clicks a button which runs "level2();"
}
private void level2() {
//Stuff here, player clicks a button which runs "level1();"
}
これで問題なく動作しますが、1と2の間を何度かクリックすると、プログラムの実行が非常に遅くなります。タスクマネージャは、約700MBのメモリ使用量を報告します。
私が欠けていることは本当に明白な何かがあると確信しています。ユーザーが多くのボタンを何度もクリックでき、プログラムにそれほど多くのリソースを使用させない方法を探しています。助けていただければ幸いです。
編集:もう少しコード。Choice1-3はボタンの名前です。変数はプログラムの先頭ですでに宣言されており、初期化部分で設定されています。これらは、Scene1や2などのコードの各ブロックで変更されます。
private void setScene1() // TITLE SCREEN
{
TITLE.setText("Title Label");
main.setText("Main text body for the game.");
choice1.setText("Play");
choice1.setBounds(10, 600, 996, 91); // This makes choice1 as large as
// all three buttons combined.
choice2.setEnabled(false);// There's only one option anyway.
choice3.setEnabled(false);
choice2.setVisible(false);
choice3.setVisible(false);
choice1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
setScene2();
}
});
}
private void setScene2() // CHARACTER GENERATION SCENE
{
TITLE.setText("Character Generation");
main.setEnabled(false); // Disable & Hide the main text window, as
// Chargen requires a nicer looking interface.
main.setVisible(false);
choice2.setEnabled(true);
choice2.setVisible(true);
choice1.setBounds(10, 600, 996, 34); //Resizing the bottom portion to fit two buttons
choice2.setBounds(10, 645, 996, 34);
choice1.setText("Continue");
choice1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// Nothing here for now
}
});
choice2.setText("Back to the Title Screen");
choice2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
main.setEnabled(true);
main.setVisible(true);
setScene1();
}
});
}