Costruire il simulatore di un sistema costituito da 3 lucciole. Inizialmente, le lucciole lampeggiamo ciascuna con una frequenza (costante) propria.
L'analisi estende i concetti di base includendo la reattività a stimoli ambientali variabili:
Timer generato casualmente (tra 1000ms e 3000ms).startSync che impone un periodo uniforme a tutte le istanze.La sfida principale risiede nella gestione della transizione bidirezionale tra comportamento autonomo e coordinato basata su eventi asincroni.
Il sistema viene modellato con tre tipi di attori nel contesto ctxfirefly:
Distanza < DMIN emette l'evento startSync, altrimenti emette stopSync.dynamicOnly. Gestisce la preemption del timer locale tramite la ricezione degli eventi del sonar, permettendo il passaggio immediato tra i due stati.Event startSync : startSync(PERIOD) // Forza la sincronizzazione su un periodo P Event stopSync : stopSync(0) // Ripristina il comportamento random Dispatch cellstate : cellstate(X,Y,COLOR) // Aggiornamento visuale per la Grid
La lucciola implementa una macchina a stati capace di reagire agli eventi del sonar durante l'attesa del prossimo flash:
Transition t0
whenTimeVar Timer -> flash // Ciclo di lampeggio corrente
whenEvent startSync -> handleStartSync // Passaggio a modo sincronizzato
whenEvent stopSync -> handleStopSync // Ritorno a modo random
GIT repo: https://github.com/gianluca-varisco/issLab2026