Menu
CoddyTech

Revisão - Semáforo

Parte da seção Lógica e fluxo do Journey de GDScript da Coddy. Lição 41 de 78.

challenge icon

Desafio

Fácil

Simule um semáforo. No nível superior do script, declare um enum chamado TrafficLight com as opções RED, YELLOW e GREEN, e escreva três funções que usem match para avaliar o sinal:

  • get_driver_action(light) retorna "Stop" para vermelho, "Caution" para amarelo e "Go" para verde
  • get_wait_time(light) retorna 30 para vermelho, 3 para amarelo e 25 para verde
  • get_next_light(light) retorna o próximo sinal: vermelho muda para verde, verde muda para amarelo e amarelo muda para vermelho

O programa lê duas linhas: o nome do primeiro sinal (RED, YELLOW ou GREEN) e quantos sinais exibir (um número inteiro, 1 ou mais). Para cada sinal, imprima seu nome, sua ação e seu tempo de espera; em seguida, passe para o próximo sinal. Por fim, imprima a soma de todos os tempos de espera.

Para as entradas RED e 4, a saída é:

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

Experimente você mesmo

extends Node

# Declare o enum TrafficLight aqui

# Escreva get_driver_action(), get_wait_time() e get_next_light() aqui

func _ready():
	var first := OS.read_string_from_stdin()
	var count := int(OS.read_string_from_stdin())
	# Mostre os semáforos e o tempo total de espera
	pass

Todas as lições de Lógica e fluxo

Pratique por conta própria: Compilador de GDScript online