1

迷路を作成し、3 つの「ロボット」をプログラミングして、さまざまな戦略を使用して迷路を移動するプロジェクトを終了しました。私の実装に含まれるクラスは次のとおりです。

  • 3 つのサブクラスを持つ抽象クラス Robot
  • 迷路の論理演算を処理する Maze クラス
  • 迷路をグラフィカルに表示し、ロボットが迷路を移動する様子を示す JFrame クラス

最後に、以下のみを含むメイン メソッドを持つエントリ ポイントがあります。

    Maze m = new Maze();
    MazeFrame mf = new MazeFrame(m);
    RightHandRobot mr = new RightHandRobot(m, mf);
    mr.go(m);

これは完全に機能します - 迷路が GUI に表示され、ロボットが最後に到達するまで迷路を移動するのを見ることができます - 望ましい効果です。

私の問題は次のとおりです。JFrame の上部には 3 つのボタンがあり、それぞれがロボット タイプの 1 つのインスタンスを作成し、その go メソッドを呼び出す ActionListener を備えています。これにより、「終了セル」に到達するまで移動します。これらのボタンの 1 つをクリックすると、ロボットが作成されて移動を開始します (各移動で実行される println ステートメントで確認できます) が、ロボットが GUI で移動していることを確認できません。GUI は、ロボットがゴールに到達したとき (つまり、go() メソッドが完了したとき) にのみ更新され、その時点でロボットがたどったパス全体が表示されます。

ロボットがメイン メソッドで作成されると GUI が正しく更新されるのに、JFrame クラスで作成されると更新されないのはなぜですか?

この問題を解決するために、どのコードを参照する必要があるかわかりません。必要なコードをお知らせください。

4

1 に答える 1

2

この に示すように、 を使用しjavax.swing.Timerてアニメーションのペースを調整しますFleetPanel。各ティックで、タイマーのリスナーは実行中のロボットのみをレンダリングする必要があります。

画像

于 2013-04-03T08:44:58.567 に答える