Ristmik 1. Klassikaline algoritm Tänava ületamine

Käivitamiseks vajuta Tühiku klahvi. Projekti saab alla laadida lingilt Ristmik_3.sb.
Projekt demonstreerib paralleelsete protsesside sünkroniseerimist tänava ületamise algoritmi abil.
Pois ületab fooriga reguleeritavat ristmiku. Ristisuunas sõidavad autod. Nii pois kui ka auto(d) ületavad ristmiku ainult rohelise tule ajal

Objektid:
   pois (4 kostüümi käimise imiteerimiseks),    auto (5 kostüümi, autode vahetamiseks),
   foor1 ja foor2, mõlemal 4 kostüümi: roheline, kollane, punane, kollane

 

Skriptid

Foor1
f1

Foor2
f2

Foorid töötavad sünkroonselt. Tulede muutmiseks kasutatakse kostüüme:
    1 - roheline, 2 - kollane, 3 - punane, 4 - kollane.
Juhtivaks on foor1. Käivitamisel valitakse juhuarvude abil esimene tuli. Edasi lõputus korduses vahetatakse järjest (ringiratast) kostüüme (tulesid) sagedusega 3 sek. Peale tule (kostüümi) vahetamist saadab foor1 teate Vaheta, mille võtab vastu foor2. See valib oma tule (kostüümi), arvestades foor1 tuld. Alguses valitakse foor2-e jaoks kollane tuli, kui sagedamini esinev. Käsuga võta omistatakse muutjale kn foor1 kostüümi number ning kasutades selle väärtust, muudetakse värvi (kui vaja), vastavalt foor1 tulele.

Auto
au

Lõputult korratakse järgmisi tegevusi

  auto viiakse algpunkti (koordinaadid
   pildilt ) ja tehakse nähtavaks
  auto liigub stopp jooneni (pildi järgi)
  käsk oota kuni jätab auto seisma kuni
    foor2-s tuleb roheline tuli
  auto liigub pildi parempoolse servani
  auto peidetakse viivuks (2...4 sek) ja
  vahetakse kostüüm (imiteeritakse
    autode vahetust)

ja kõik kordub uuesti

Pois
fp

 

Põhimõteliselt tegutseb pois sama moodi nagu auto. Erinevus tuleb sellest, et poisi jaoks (käimise imiteerimiseks) kasutatakse kostüümi vahetust peale igat sammu. Sellepärast ei saa kasutada (nagu auto jaoks) käsku liigu X sek, mis viib objekti sujuvalt antud pukti. Siin on sujuv liikumine kostüümide vahetusega realiseeritud alamskripti Mine abil. Sihtkoha määramiseks kasutatakse muutuja piir abil poisi X-koordinaate, mis võetakse (silma järgi) pildilt. Tänava ääreni piir = -70, majani piir = 165