私はJavaで簡単なピカチュウゲームを書いています.JProgress Barでswing.Timerを使用しています.私のコードは次のようになります:
public static void TimeBarListener(final View scr){
ActionListener updateProBar = new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
int val = scr.timeBar.getValue();
if (val <= 0) {
scr.gameOver();
scr.timer = null;
return;
}
scr.timeBar.setValue(--val);
}
};
int t = n*400;
scr.timer = new Timer(t, updateProBar);
}
ここでの「src」は、私が書いたゲームを表示するために JFrame を拡張するクラスで、「n」はレベル内のピカチュウのピースの数です。完全に機能しますが、「タイマー」を追加した後、多くの問題が発生しました。
変数「t」をレベルごとに変更しましたが、機能しないようです(値をテストしましたが、正しい値でしたが、「タイマー」が取得できなかったようです)。時間の経過が速すぎて、ピースをクリックすると速くなり、長く設定しても何も変わりませんでした.
「New Game」を2回クリックすると、さらに早くタイマーが切れました。しかし、プログラムを閉じてから再度実行すると、時間は正常に戻ります。
時間がなくなってもう一度「New Game」ボタンをクリックすると、1秒間表示されてから「ゲームオーバー画面」に戻ります。たまに動くのですが、「IndexArrayOutOfBounds」のエラーが出ます。
「一時停止」ボタンを使用したいのですが、これはタイマーを一時停止してから実行し続ける必要があることを意味します。とにかく私にできることはありますか?
私の問題はコードに基づいていると思います
if (val <= 0) {
scr.gameOver();
scr.timer = null;
return;
}
タイマーが切れると、ゲームオーバー画面が表示されます。しかし、私はこれに不慣れで、自分がどのように機能するかを理解できないため、自分で解決策を考えることができないか、問題ではないかもしれません.
皆さんからの助けが得られることを願っています。どうもありがとう :)