2016-12-04 12 views
0

狭いブリッジ用のソリューションを実装する必要があります。私はJavaスレッドとGUIを初めて使用しています。 私は3つの道路と1つの橋を持っています(2つの車線を持っています).20それぞれの道路の車両はランダムに作成され、道路の光に応じてブリッジに渡されます。 ?(スリープ1秒と少しを動かす)GUIを使用したJavaマルチスレッド(トラフィックシミュレータの種類)

しかし、最初に、私はちょうどたい私はスレッドで、この道路上の車を移動させることができる方法である簡単な問題を解決する

私はそのように考えた: 単純なPaintComponent関数のオーバーライドを使って道路を作成しました(私もそのように実装されるか分かりません)。 runnableを実装する道路クラスと車両クラスを作成しました。 私はRoadクラスで20台の車両のアレイを作成し、ここに張り付いた。

これをJPanelに追加して1秒ごとに移動するにはどうすればよいですか? 私はCファミリーの背景を持っているので、この問題をどう実装するかについて全く間違っていますか?

マイコード:

パブリッククラスNarrowBridge {

public static void main(String[] args) { 



    JFrame myFrame = new JFrame(); 
    PanelSetter newPanel = new PanelSetter(); 
    myFrame.add(newPanel); 
    myFrame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    myFrame.setSize(600, 600); 
    myFrame.setTitle("Narrow Bridge Problem "); 

    myFrame.setLocationRelativeTo(null);//To centralize the jframe. 
    myFrame.setVisible(true); 

} 

}

クラスPanelSetterはJPanelの{

public Road Road1 = new Road(true); 
public Road Road2 = new Road(false); 
public Road Road3 = new Road(false); 

@Override 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 


    //Fixed Roads Drawing. 
    g.setColor(Color.BLACK); 
    g.drawLine(50, 100, 200, 100); 
    g.drawLine(50, 130, 200, 130); 

    g.setColor(Color.BLACK); 
    g.drawLine(50, 210, 200, 210); 
    g.drawLine(50, 240, 200, 240); 

    g.setColor(Color.BLACK); 
    g.drawLine(50, 320, 200, 320); 
    g.drawLine(50, 350, 200, 350); 


    //Road 1 Light. 
    if (Road1.getLight()) { 

     g.setColor(Color.GREEN); 
     g.fillOval(180, 70, 20, 20); 

    } else { 
     g.setColor(Color.RED); 
     g.fillOval(180, 70, 20, 20); 

    } 
    //Road 2 Light. 
    if (Road2.getLight()) { 
     g.setColor(Color.GREEN); 
     g.fillOval(180, 180, 20, 20); 

    } else { 
     g.setColor(Color.RED); 
     g.fillOval(180, 180, 20, 20); 

    } 
    //Road 3 Light. 
    if (Road3.getLight()) { 
     g.setColor(Color.GREEN); 
     g.fillOval(180, 290, 20, 20); 

    } else { 
     g.setColor(Color.RED); 
     g.fillOval(180, 290, 20, 20); 

    } 

} 

}

道であるが延びブーリアンライトと私が試したことがある車だけの単純なクラスです。[] vehicles = new vehicle [20]。

+0

ここに道路は何ですか?あなたのクラスを貼り付けてください – Shriram

+0

@Shriram私はそのコンテンツを追加しましたが、標準的な基本クラス以上はありません。ご協力ありがとうございます。 –

答えて

0

最後に私はJavaアプレットの助けを借りて私の問題を解決しました。 私はパラメータとしてアプレットを渡すことができ、私はpaint()関数と更新画面を呼び出しています。

関連する問題