Na naši spletni strani imamo vsaj eno
instanco razreda Animator, ki predstavlja sceno,
pravzaprav kanvas, po katerem rišemo statične slike v ozadju
in dinamične, animirane predmete v ospredju. Simulacija teče
v diskretnih korakih. in pri tem običajno povečuje števec tStep. Animacija poteka
tako, da korakoma povečujemo (ali zmanjšujemo) čas
tStep in v vsakem koraku preračunavamo simulirani
model in osvežujemo zaslon. Pri vsakokratnem klicu metode UpdateScene () se izvede zaporedje funkcij: updateAnimation1(); // usually static elements before computations in step if((running)&&(!doSingleStep)) tStep++; updateAnimation2(); // usually computation before visualization updateAnimation3(); // scene visualization after computation |
![]() |
Drug pomemben razred je Component,
katerega instance so predmeti na simulirani sceni. To so
običajno različne računalniške naprave in osebe. Komponente
imajo svoje ime in položaj na sceni, predvsem pa imajo
dodeljeno podobo (sprite), kot to srečamo v različnih
računalniških igrah. Kako je komponenta prikazana, pove njej
dodeljena slika, ki jih najdemo v direktoriju "images". Komponente so dinamični predmeti na sceni, kar pomeni, da njihov položaj določamo z računanjem ali pa z vlečenjem z miško (če to dovolimo). Vsaki komponenti je torej prirejena ustrezna slika (ikona) in oznaka (opis). Komponente imajo na sceni svoj položaj, ki ga lahko med potekom simulacije tudi spreminjamo. Komponente imajo tudi attribut "isDraggable". Če tega nastavimo na true, lahko tako komponento izberemo s klikom miške in jo tudi premikamo po sceni (morda zaradi boljšega pregleda). Položaj ikone in oznake vsake komponente lahko prirejamo s parametri shapeDx, shapeDy, nameDx, nameDy, relativno na virtualni položaj komponente na sceni) (kakor ga uporabljamo pri naslavljanju komponente) Iz razreda Component sta izpeljana razreda Person in Asset, ki ju uporabljamo za tvorbo instanc osebkov in naprav (tipično računalnikov in drugih komponent računalniškega omrežja). Ta dva razreda imata dodatne lastnosti, ki so pač specifične za osebke oziroma za različne računalniške naprave. Vsaki komponenti izrazreda Asset (torej oprema) pripada še nekaj "računalniških" lastnosti: IP, isInfected, antiVirus, connected, ... . Ker sceno predstavlja množica osebkov in naprav, so instance teh osebkov oziroma naprav pomnjene v poljih persons oziroma assets. Ti polji uporabljamo v zankah preko vseh osebkov ali vseh naprav. |
![]() |
Sporočila so instance razreda Message. in pomnjena v
polju messages. Nastajajo med simulacijo in zaradi
vidnosti potekajo (se širijo od izvorne k ciljni
komponenti) nekaj časovnih korakov (odvisno od nastavljene
hitrosti širjenja, kar določimo s simulacijskim parametrom messageSpeed). Tudi po dosegu ciljne komponente (ta trenutek pomni obvestilo v spremenljivki timeDelivered) si morda želimo, da še nekaj časa vidimo sled sporočila (od izvorne do ciljne komponente). To nastavljamo s spremenljivko messageTrackDuration. To spremenljivko lahko nastavljamo tudi vsakemu obvestilu posebej. Instance obvestil lahko tudi verižimo in jih pomnimo v polju nextMsgs. Tako veriženo obvestilo po svojem zaključku sproži naslednje in tako lahko ponazorimo potovanje sporočila po omrežju od ene naprave do druge. |
![]() |
Vsi navedeni
tipi dogodkov še niso implementirani !.
Slika predstavlja nekoliko poenostavljen UML
diagram javanskega strežnega programa. Večina logike je v
razredu CGCenter. (tu poteka vzpostavitev strežne
vtičnice WebSocket, pošiljanje sporočil odjemalcem in
razpoznavanje njihovih odgovorov.) Za vsako tvorjeno sceno odpre program novo instanco razreda Scene in pri prijavi udeležencev odpre v tej sceni instanco iz razreda Participant. Instanca razreda Watchdog sama po sebi nima drugega pomena kot stalno preverjanje, ali so predavatelj (vodja igre) in udeleženci še aktivni. Po določernem času, če so vsi udeleženci izstopili iz svojih spletnih strani, program tako sceno ukine. |
![]() |