Menu
CoddyTech

Repaso: semáforo

Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 41 de 78.

challenge icon

Desafío

Fácil

Simula un semáforo. En el nivel superior del script, declara un enum llamado TrafficLight con las opciones RED, YELLOW y GREEN, y escribe tres funciones que usen cada una un match sobre la luz:

  • get_driver_action(light) devuelve "Stop" para rojo, "Caution" para amarillo y "Go" para verde
  • get_wait_time(light) devuelve 30 para rojo, 3 para amarillo y 25 para verde
  • get_next_light(light) devuelve la luz que viene después: rojo pasa a verde, verde pasa a amarillo y amarillo pasa a rojo

El programa lee dos líneas: el nombre de la primera luz (RED, YELLOW o GREEN) y cuántas luces mostrar (un número entero, 1 o más). Para cada luz, imprime su nombre, su acción y su tiempo de espera; después, pasa a la siguiente luz. Por último, imprime la suma de todos los tiempos de espera.

Para las entradas RED y 4, la salida es:

RED: Stop for 30 seconds
GREEN: Go for 25 seconds
YELLOW: Caution for 3 seconds
RED: Stop for 30 seconds
Total wait: 88 seconds

Pruébalo tú mismo

extends Node

# Declara el enum TrafficLight aquí

# Escribe get_driver_action(), get_wait_time() y get_next_light() aquí

func _ready():
	var first := OS.read_string_from_stdin()
	var count := int(OS.read_string_from_stdin())
	# Muestra los semáforos y el tiempo total de espera
	pass

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de GDScript online