私は現在、ブリックブレーカーに似たゲームを書いていますが、特定の関数が呼び出されるのをプログラムで待機させる方法を知る必要があります。
ボタン間で決定が下されるまで、プログラムを一時停止する必要があります。たとえば、ゲームが起動し、ユーザーはゲームで使用する色を選択できます。したがって、ゲームは彼の選択が行われるまで一時停止し、彼が満足している場合、プログラムは別の段階に再開する必要があります。
Swingコンポーネントを使用している場合は、ボタンにを追加して、オーバーライドされたメソッドActionListener
内で実行する必要のあるロジックを含めることができます。actionPerformed
アクションリスナーの作成方法も参照してください。
ボタン間で決定が下されるまで、プログラムを一時停止する必要があります。たとえば、ゲームが起動し、ユーザーはゲームで使用する色を選択できます。したがって、ゲームは彼の選択が行われるまで一時停止し、彼が満足している場合、プログラムは別の段階に再開する必要があります。
これにはいくつかの方法がありますが、ここでは並行プログラミングの複雑さについて詳しく説明するつもりはありません。そのための他のリソースを見つけることができます。そうは言っても、私が言いたいのは、長時間実行されるタスクを実行したり、イベントディスパッチスレッド(EDT)でスリープしたりしないでください。そうすると、UIが応答しなくなる(つまり「フリーズ」する)ためです。
プログラムを一時停止する必要があります。
ブリックブレーカーなどのゲームの場合、通常はアニメーションループがあります。ボタンを押したら、user132のアドバイスに従ってください。それが発生した場合の対処方法は、最初にループするようにコードがどのように編成されているかによって異なります。
EG The Swing Timer
、これはGUIでレンダリングをループおよび一時停止する簡単な方法です- start()
&のようなメソッドを提供しますstop()
。複数のタイマーを実行している場合(たとえば、1つはレンダリングループ用、もう1つはレベルの「カウントダウンタイマー」用)、明らかにそれらすべてを一時停止する必要があります。
詳細は、現在のコードのSSCCEで発表される可能性があります。
あなたは基本的にイベントを使用しているGUIプログラミングの分野にいます(イベント駆動型)
ある意味であなたは間違った質問をしました。
イベント運転システムでは、あなたは常に待っています。何かの出来事が起こったとき、あなたは仕事を続けます。
あなたの場合、ボタンが押されたときに何をすべきかを考える必要があります。
これがあなたが必要とする構造の種類の基本的な概要です。
import java.swing.*
public class Breaker
{
private
Listener listener;
JButton b1;
public Breaker()
{
listener = new Listener();
b1 = new JButton("b1");
b1.addActionListener(listener);
}
class Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
Component theEventer = (Component) e.getSource();
if (theEventer == b1)
{
You're stuff here
}
}
public static void main (String[] args)
{
new Breaker();
}
}