Simulacion de semaforo (AYUDA)

Iniciado por reeyesg, 9 Noviembre 2014, 05:18 AM

0 Miembros y 1 Visitante están viendo este tema.

reeyesg

Bnas nochees.. bnos les escriiibo porq me mandaron a hacer un proyecto de simulacion.. se hacer muy pocas cosas para lo q me piden y quisiera q me diern unas ideas para yo hacer este proyecto no les pido q me lo haga solo q me faciliten conocimientos y ayudas como qpuedo utilizar para armarlo aqui les dejo los requisitos.. ya se mas o menos la logica q debe llevar para lo del cambio de las luces pero lo otro es lo q me jode un poco

Se plantea la necesidad de Desarrollar una aplicación en Visual Basic, que permita mostrar
una simulación del proceso realizado en un semáforo.
Como entrada de datos, se debe solicitar al usuario el tiempo de duración de la
simulación.

Para el proceso de simulación se debe tomar en cuenta:
· Deben existir al menos 3 vías controladas por el semáforo en la simulación.
· El semáforo debe tener 4 luces: rojo, verde, amarillo y flecha (para cruzar), las
cuales cambiaran cada cierto tiempo (el intervalo queda a criterio del
programador)
· La asignación de la vía que tomara cada vehículo, cuando el semáforo este en
verde, debe ser seleccionada aleatoriamente.
· Se debe mostrar en pantalla el tiempo de ejecución de la aplicación, y un contador
de la cantidad de vehículos que han pasado el semáforo.
· Deberá existir un botón que permita detener la simulación antes del tiempo
establecido.
Al finalizar la simulación, se debe mostrar una caja de mensajes, con las estadísticas
finales del proceso: cantidad total de vehículos que transitaron y duración total de la
simulación.

reeyesg

#1
Código (vb) [Seleccionar]

Dim a As Integer
Dim tiempo As Integer
Private Sub Command1_Click()
a = 0
Timer1.Enabled = True
Timer1.Interval = 1000
tiempo = InputBox("Escriba el tiempo de Simulacion del Semaforo", "Simulacion de Semaforo")
Label1.Caption = tiempo

End Sub

Private Sub Timer1_Timer()
a = a + 1
If a = 1 Then
Image1.Visible = True   'Luz Roja
Image2.Visible = False  'Luz Amarilla
Image3.Visible = False  'Luz Verde
Image4.Visible = False  'Luz Roja
Image5.Visible = True   'Luz Amarilla
Image6.Visible = False  'Luz Verde
End If
If a = 7 Then
Image1.Visible = False
Image2.Visible = True
Image3.Visible = False
Image4.Visible = False
Image5.Visible = False
Image6.Visible = True
End If
If a = 12 Then
Image1.Visible = False
Image2.Visible = False
Image3.Visible = True
Image4.Visible = True
Image5.Visible = False
Image6.Visible = False
End If
If a = 14 Then
a = 0
End If
Label1.Caption = Label1.Caption - 1
If Label1.Caption < 1 Then
Timer1.Enabled = False
End If
End Sub


Eso es lo poco que e hecho.. estan lo de insertar el tiempo de cuanto durara la simulacion.. el cambio de luces.. faltaria el de mover los carros aleatoriamente.. porq ta tngo este otro codigo q es el q hara q se muevan los carros pero no se como se hara aleatorio q vayan a la derecha izquierda o derecho


Código (vb) [Seleccionar]
if(image2.visible =true or image3.visible=true) then 'cuando muestre la luz amarilla y verde se mueve

imageCarro.left=imagecarro.left+20 '20 es la velocidad q se movera el carro

elseif image1.visible=true then ' cuando se pone la luz roja

imagecarro.left=imagecarro.ledt+0 ' la velocidad es 0 porq se detiene

end if


espero su ayuda

ivancea96

Con Rnd() sacas un número aleatorio 0 <= X < 1. Puedes usarlo para aleatorizar la dirección que tomará el coche.

Te diría que tabules el código, y que le pongas nombres más intuitivos a las variables. Pero bueno, eso ya es cosa tuya.

Por cierto, en el enunciado pone que los semáforos tendrán 4 luces.

reeyesg

Cita de: ivancea96 en 11 Noviembre 2014, 23:02 PM
Con Rnd() sacas un número aleatorio 0 <= X < 1. Puedes usarlo para aleatorizar la dirección que tomará el coche.

Te diría que tabules el código, y que le pongas nombres más intuitivos a las variables. Pero bueno, eso ya es cosa tuya.

Por cierto, en el enunciado pone que los semáforos tendrán 4 luces.

sii lo de las luces lo se,, pero si uno le pone el rnd().. es para q vayan a la derecha, izquierda o siga derecho.. y ahi se podria ir pa otros lados jajajaja,, pero bueno tratare de hacerlo asi como me dices aunq no se mucho.. espero q me ayuden mas

reeyesg

Buenas vengo a revivir el post.. porq quisieraaa una ayuda ya q es lo unico q me falta
bueno quisiera mover ese shape.. aleatoriamente hacia arriba a la derecha e izquierda.. y q terminado el recorrido vuelva a su lugar podrian ayudarme porfa.. ya se como moverlos pero mas no se como hacerlo aleatorio


ivancea96

Lo de Rnd() no te sirvió?

Si tienes 3 posibilidades, multiplicas Rnd() por 3.
Así, saldrá un número del 0 al 3 (3 excluído). -> 0,1,2 -> izquierda, centro, derecha

reeyesg

La verdad no se q hacer ya.. solo hice q funcionara para q suba y cuando llegue vuelva a iniciar.. tambn hice el de q vaya a la izquierda y derecha pero no logro.. para q vuelva a su posicion inicial.. el carro se me desaparece..

Este me va bn para q vaya al centro
Código (vb) [Seleccionar]
If (Image2.Visible = True Or Image3.Visible = True) Then
    Shape1.Top = Shape1.Top - 1800

ElseIf Image1.Visible = True Then
    Shape1.Top = Shape1.Top - 0


Este es para cuando llegue cuente el carro y regrese a su posicion inicial:
Código (vb) [Seleccionar]
Private Sub Label1_Change()

If Shape1.Top = -960 Then 'posicion de llegada del carro
Label2.Caption = Label2 + 1 'Contador
Shape1.Top = 6240 'Posicion inicial del carro
End If


me va bn hasta ahiii.. pero cuando pongo los q cruzan.. el carro no me vuelve a la posicion inicial.. quisiera mas ayuda porfavor

agusdmb

xq los q cruzan nunca llegan a ser true en el predicado "Shape1.Top = -960"..

yo tambien te recomendaria q aprendas buenas practicas de programacion.. identar bien el codigo, no usar las imagenes como condiciones (si es visible o no).. eso deberia ser secundario.. las imagenes deberian depender del estado de ciertas variables, y no el programa de las imagenes

ademas en vez de tener esos ifs tan largos podrias hacer metodos q llames para "prender" o "apagar" cada una de las luces