Circulo em movimento, semáforo e threads

0 respostas
A

Estou fazendo um projeto mas ainda estou muito novo em java e gostaria de uma ajuda: O projeto é simular threads, fazendo uma ferrovia que tem duas linhas férreas à esquerda e à direita chegando a uma linha comum, tipo uma ponte que une dois lados(Uma imagem de uma ferrovia é fornecida e nós temos inserir as bolinhas e fazê-las andar pela imagem, a imagem é como o exemplo a seguir: >-<). Os threads serão bolinhas coloridas simulando trens e tem dois semáforos, um em cada lado, cada lado tem que esperar a sua vez para atravessar a linha comum. Como eu posso movimentar as bolinhas? Da esquerda para a direita usamos bolinhas de cor azul e da direita para esquerda usamos a cor vermelha. E outra coisa: como eu acendo e apago o semáforo. Segue meu projeto. Agradeço desde já pela ajuda!!!

Classe Main

public class main

{

public static void main(String[] args) {

// TODO Auto-generated method stub

FrameSimulador frame = new FrameSimulador(Simulador Ferroviário);

frame. setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

Classe FrameSimulador

public class FrameSimulador extends JFrame{

private static final long serialVersionUID = 3846863421641024113L;
public final int LARG_DEFAULT=800;
public final int ALT_DEFAULT=600;
private PainelSimulador ps;
		
public FrameSimulador(String nome) {
	
	super(nome);		
	ps = new PainelSimulador();
	ps.setLayout(null);
	add(ps);
	
  		
	getContentPane().add(ps);
				
	pack();
	Toolkit tk=Toolkit.getDefaultToolkit();
	Dimension screenSize=tk.getScreenSize();
	int sl=screenSize.width;
	int sa=screenSize.height;
	int x=sl/2-LARG_DEFAULT/2;
	int y=sa/2-ALT_DEFAULT/2;
	setBounds(x,y,LARG_DEFAULT,ALT_DEFAULT);
	setVisible(true);
	//setResizable(false);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
}

}

Classe PainelSimulador

public class PainelSimulador extends JPanel{

private static final long serialVersionUID = 6441831869676108377L;

private Image i;
public PainelSimulador(){
	
	try
	{
		i=ImageIO.read(new File("C:/Documents and Settings/Alvim Maurtas/Desktop/threads/2012-1-TF/imagem/Trem.jpg"));
	}   
	catch(IOException e)
	{
		System.out.println(e.getMessage());
		System.exit(1);
	}
	
}

public void paintComponent(Graphics g)
{
	super.paintComponent(g);
	Graphics2D g2d=(Graphics2D) g;
	

	// Desenha ferrovia
	g2d.drawImage(i, 0, 0, 800, 600, null);  
	
	// Desenha o círculo AZUL
	Ellipse2D tremazul;
	tremazul=new Ellipse2D.Double(40,258,15,15);
	g2d.setPaint(Color.BLUE);
	g2d.fill(tremazul);
	
	// Desenha o círculo VERMELHO
	Ellipse2D tremverm;
	tremverm=new Ellipse2D.Double(745,355,15,15);
	g2d.setPaint(Color.RED);
	g2d.fill(tremverm);
	
	// Desenha Sinal a Esquerda
	Rectangle2D sinalleft=new
	Rectangle2D.Double(110,205,25,40);
	g2d.setPaint(Color.BLACK);
	g2d.fill(sinalleft);
	
	// Desenha circulos interna ao retângulo
	Ellipse2D sredleft;
	sredleft=new Ellipse2D.Double(114,208,15,15);
	g2d.setPaint(Color.RED);
	g2d.fill(sredleft);
	
	Ellipse2D sgreenleft;
	sgreenleft=new Ellipse2D.Double(114,225,15,15);
	g2d.setPaint(Color.GREEN);
	g2d.fill(sgreenleft);
	
	// Desenha Sinal a Direita
	Rectangle2D sinalright=new
	Rectangle2D.Double(680,390,25,40);
	g2d.setPaint(Color.BLACK);
	g2d.fill(sinalright);
	
	// Desenha circulos interna ao retângulo
	Ellipse2D sredright;
	sredright=new Ellipse2D.Double(684,393,15,15);
	g2d.setPaint(Color.RED);
	g2d.fill(sredright);
	
	
	Ellipse2D sgreenright;
	sgreenright=new Ellipse2D.Double(684,410,15,15);
	g2d.setPaint(Color.GREEN);
	g2d.fill(sgreenright);	
	
		
	}

}

Criado 10 de abril de 2012
Respostas 0
Participantes 1