Galera,
alguém ja fez algum exercicio de semáforo,algo do tipo?
caso alguém ja fez queria tirar umas dúvidas.
Galera,
alguém ja fez algum exercicio de semáforo,algo do tipo?
caso alguém ja fez queria tirar umas dúvidas.
Acho que todo mundo que já estudou ciência da computação fez.
By the way… isso é assunto de Java Avançado, não básico.
ok vini!
vou postar cada passo que eu fiz,só fiz mas não testei nd ainda!
aqui o temporizador.class
public class Temporizador
{
public void esperar(int paramInt)
{
try
{
Thread.sleep(paramInt * 1000);
}
catch (Exception localException)
{
}
}
}
Aqui class.Lampada
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JFrame;
public class Lampada
{
private boolean aceso;
private Color cor;
private int raio = 20;
private int posicaoX;
private int posicaoY;
private static Lampada.Janela janela = null;
public Lampada() {
this.aceso = false;
this.cor = Color.green;
if (janela == null) {
janela = new Lampada.Janela();
}
janela.adicionarLampada(this);
}
public void posicionar(int paramInt1, int paramInt2) {
this.posicaoX = paramInt1;
this.posicaoY = paramInt2;
janela.repaint();
}
public void acenderVerde() {
acender(0);
}
public void acenderAmarelo() {
acender(1);
}
public void acenderVermelho() {
acender(2);
}
public void apagar() {
this.aceso = false;
janela.repaint();
}
private void acender(int paramInt) {
this.aceso = true;
switch (paramInt)
{
case 0:
this.cor = Color.green;
break;
case 1:
this.cor = Color.yellow;
break;
default:
this.cor = Color.red;
}
janela.repaint();
}
private class Janela extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
private int posicaoX = 0; private int posicaoY = 0; private int largura = 800; private int altura = 600;
private ArrayList lampadas = new ArrayList<Lampada>();
Janela() {
setDefaultCloseOperation(3);
setBounds(this.posicaoX, this.posicaoY, this.largura, this.altura);
setVisible(true);
}
public void adicionarLampada(Lampada paramLampada) {
this.lampadas.add(paramLampada);
}
public void paint(Graphics paramGraphics) {
Dimension localDimension = getSize();
paramGraphics.setColor(Color.white);
paramGraphics.fillRect(0, 0, localDimension.width, localDimension.height);
Iterator localIterator = this.lampadas.iterator();
while (localIterator.hasNext())
{
Lampada localLampada = (Lampada)localIterator.next();
int i = localLampada.posicaoX;
int j = localLampada.posicaoY;
int k = localLampada.raio * 2;
int l = localLampada.raio * 2;
int i1 = i + 2;
int i2 = j + 2;
int i3 = k - 4;
int i4 = l - 4;
if (localLampada.aceso) {
paramGraphics.setColor(localLampada.cor);
paramGraphics.fillOval(i1, i2, i3, i4);
}
else {
paramGraphics.setColor(Color.black);
paramGraphics.fillOval(i1, i2, i3, i4);
}
paramGraphics.setColor(Color.black);
paramGraphics.drawRect(i, j, k, l);
}
}
}
public static boolean access$300(Lampada localLampada) {
return false;
}
public static Color access$400(Lampada localLampada) {
return null;
}
public static int access$000(Lampada localLampada) {
return 0;
}
public static int access$100(Lampada localLampada) {
return 0;
}
public static int access$200(Lampada localLampada) {
return 0;
}
}
Aqui class main
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JFrame;
class Janela extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
private int posicaoX = 0; private int posicaoY = 0; private int largura = 800; private int altura = 600;
private ArrayList lampadas = new ArrayList();
Janela(Lampada paramLampada) {
setDefaultCloseOperation(3);
setBounds(this.posicaoX, this.posicaoY, this.largura, this.altura);
setVisible(true);
}
public void adicionarLampada(Lampada paramLampada) {
this.lampadas.add(paramLampada);
}
public void paint(Graphics paramGraphics) {
Dimension localDimension = getSize();
paramGraphics.setColor(Color.white);
paramGraphics.fillRect(0, 0, localDimension.width, localDimension.height);
Iterator localIterator = this.lampadas.iterator();
while (localIterator.hasNext())
{
Lampada localLampada = (Lampada)localIterator.next();
int i = Lampada.access$000(localLampada);
int j = Lampada.access$100(localLampada);
int k = Lampada.access$200(localLampada) * 2;
int l = Lampada.access$200(localLampada) * 2;
int i1 = i + 2;
int i2 = j + 2;
int i3 = k - 4;
int i4 = l - 4;
if (Lampada.access$300(localLampada)) {
paramGraphics.setColor(Lampada.access$400(localLampada));
paramGraphics.fillOval(i1, i2, i3, i4);
}
else {
paramGraphics.setColor(Color.black);
paramGraphics.fillOval(i1, i2, i3, i4);
}
paramGraphics.setColor(Color.black);
paramGraphics.drawRect(i, j, k, l);
}
}
}
alguem?opniões bem vindas!
essa foi muito boa mesmo!! :lol: :lol: :lol:
han!!
Faltou as dúvidas. E, se por semáforo você quer dizer desenhar um semáforo, e não os semáforos de Threads, talvez o fórum para essa dúvida seja o de interface gráfica.
bom vini as duvidas são da seguinte maneira
1 -Suponha que cada bloco de 3 lâmpadas seja um semáforo. Desta forma, temos dois semáforos.
e que estes são os semáforos de um cruzamento. Assim, quando um semáforo estiver vermelho, o outro deverá estar verde, e vice-e-versa.
2 - ai Teria que fazer um loopinfinito, de forma que cada semáforo fique 5 segundos na cor verde (enquanto o outro fica na cor vermelha).
Quando um sinal for passar da cor verde para a cor vermelha, ele deverá permanecer 2 segundos na cor amarela. Durante este período, o outro lado ainda permanece na cor vermelha e só deve mudar para verde quando o primeiro sinal se tornar vermelho.
seria mais ou - isso!
quanto ao meu codigo se esta atendendo isso!
cara vc conseguiu resolver seu problema?
não brother ainda não resolvi não!