Klassen Light

Klassen Light ska representera en trafiksignal.

En trafiksignal karakteriseras av egenskaperna

Förloppet för en signal med period 7 och grönperiod 3 kan illustreras på detta sätt:

Tidssteg: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Intern klocka: 0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1
Färg: G G G R R R R G G G R R R R G G
För enkelhetens skull låter vi signalerna alltid starta med grönperioden.

En signal har således en intern klocka som går "cirkulärt" d.v.s. den börjar på noll och går till periodlängden varefter den börjar på noll igen.

Klassen behöver en

Observera att färgen inte behöver lagras som instansvariabel. Den egenskapen räknas lätt ut utifrån värdet på grönperioden och värdet på den interna klockan.

Demonstration:
Kod Utskrift 
def demo_light(): """Demonstrats the Light class""" a_light = Light(7, 3) for i in range(15): print(i, a_light, a_light.is_green()) a_light.step() 0 (G) True 1 (G) True 2 (G) True 3 (R) False 4 (R) False 5 (R) False 6 (R) False 7 (G) True 8 (G) True 9 (G) True 10 (R) False 11 (R) False 12 (R) False 13 (R) False 14 (G) True

Tillbaka

Valid CSS!