def main(): dim, calles, vacios, casas = leer_mapa('mapa fix.txt') app = QtGui.QApplication([]) grilla_simulacion = GrillaSimulacion(app, *dim) estado_inicial(grilla_simulacion, calles, casas) # grilla_simulacion.agregar_ambulancia(1, 1, 0, True) # grilla_simulacion.agregar_auto(2, 2, 90, False) # grilla_simulacion.agregar_casa(3, 3) # grilla_simulacion.agregar_cuartel_bomberos(4, 4) # grilla_simulacion.agregar_carro_bomba(5, 5, 180, True) # grilla_simulacion.agregar_comisaria(6, 6) # grilla_simulacion.agregar_enfermo(20, 5) # grilla_simulacion.agregar_hospital(8, 8) # grilla_simulacion.agregar_incendio(9, 9) # grilla_simulacion.agregar_patrulla(10, 10, 0, False) # grilla_simulacion.agregar_robo(11, 11) # grilla_simulacion.agregar_taxi(12, 13, 0, True) # grilla_simulacion.quitar_imagen(3, 3) # for i in range(1, 21): # grilla_simulacion.agregar_calle(i, 13) # grilla_simulacion.agregar_calle(13, i) grilla_simulacion.actualizar() grilla_simulacion.show() app.exec_()
def main(): # Aquí se inicializa el sistema de ventanas de PyQt4. Es importante # tener claro que aquí aún NO se muestra la ventana de la simulación. app = QtGui.QApplication([]) # Inicializamos la ventana propiamente tal, aún sin mostrarla. Le pasamos # una referencia al objeto instanciado más arriba para poder actualizar # la interfaz en cada cambio realizado. grilla_simulacion = GrillaSimulacion(app, 30) # Mostramos la ventana. grilla_simulacion.show() # Como la simulación es por eventos discretos (muy rápida), es # recomendable esperar algún intervalo de tiempo entre actualizaciones # de la interfaz. Es importante detallar en el README.md si se decide for i in range(1, 21): grilla_simulacion.agregar_calle(i, 13) grilla_simulacion.agregar_calle(13, i) for x in range(1, 21): for y in range(1, 31): # Esto es equivalente a llamar a grilla_simulacion.agregar_auto nuevo_auto = rnd.choice([ grilla_simulacion.agregar_convertible, grilla_simulacion.agregar_sedan, grilla_simulacion.agregar_pickup ]) nuevo_auto(x, y, 0, y % 2 == 0) # Además existe el parámetro `tiempo_intervalo` de `GrillaSimulacion` que # controla el intervalo de tiempo entre actualizaciones. Por defecto parte # con un valor igual a 0, para inicializar la iterfaz rápido, pero luego # deben modificarlo para que la simulación muestre los cambios a una # velocidad más amigable. grilla_simulacion.tiempo_intervalo = 0.5 for x in range(1, 21): for y in range(1, 31): grilla_simulacion.quitar_imagen(x, y) grilla_simulacion.actualizar() # Bloqueamos el thread principal para que la ventana permanezca abierta. # Cuando se cierra la ventana, el thread principal se libera y se termina # la ejecución del programa. app.exec_()