A.14 Interkapti la uzulajn agojn

XLOGO povas interagi kun la uzulo dum la rulado de programo, per klavaro kaj muso.

A.14.1 Interago kun la klavaro

Oni povas do ricevi tekston de l’ uzulo dum ruli la programon, per 3 primitivoj: klave?, litleg kaj leg.

klave?


Donu “vera” aŭ “malvera” laŭ ĉu oni premis klavon aŭ ne post la komenco de ruli la programon.

litleg








A =⇒ 65 B =⇒ 66 C =⇒ 67 ktp... Z =⇒ 90
=⇒-37 -226 (NumKla) =⇒-38 -224 = ⇒-39 -227 =⇒-40 -225
Esk =⇒ 27 F1 =⇒-112 F2 =⇒-113 ... F12 =⇒-123
Uskl =⇒-16 Spaco =⇒ 32 Stir =⇒-17 Enig =⇒ 10






Tabelo A.2: Kelkaj valoroj de klavoj

Se vi havas dubon pri la vorto redonata de klavo, sufiĉas tajpi: s litleg. L’ interpretilo tiam atendos ke vi premos klavon, poste donos la rilatan valoron.

leg, legu listo1 vor2


Afiŝu dialogfenestron kies titro estu listo1. L’ uzulo povas tiam enigi respondon en tekstokampo; la respondon oni konservos kiel vorton aŭ liston (se l’ uzulo tajpos plurajn vortojn) en la variablon vor2 kiam ŝli validigos aŭ klakos la butonon Akceptu.

A.14.2 Kelkaj ekzemploj uzi

pour juna  
 leg [Kiom vi aĝas?] "aĝo  
 provizu "aĝo :aĝo  
 se :aĝo<18 [s [Vi estas malplenkreskulo]]  
 se aŭ :aĝo=18 :age>18 [s [Vi estas plenkreskulo]]  
 se :aĝo>99 [s [Mi respektu!!]]  
fino  
 
por ralio  
    se klave?  
        [provizu "sig litleg  
         si :sig=-37 [mdn 90]  
         si :sig=-39 [dn  90]  
         si :sig=-38 [an  10]  
         si :sig=-40 [man 10]  
         si :sig=27  [haltu]]  
    ralio  
fino  
# Kontrolu la testudon per la klavaro, haltigu per Esk

A.14.3 Interkapti iujn musajn eventojn

Por tio, oni havas tri primitivojn: musleg, muse? kaj mussit.

musleg, muson_legu


Haltigu la programon ĝis musa evento okazas. Estas museventoj: movi la muson aŭ klaki iun butonon ĝian. Okazinte l’ evento, musleg donas nombron ebligantan karakterizi l’ eventon. Jen la diversaj kodoj asociitaj al la diversaj eventoj:

La butonoj estas numeritaj de maldekstre al dekstre (principe...).

mussit, mussituon


Donu liston enhavantan la koordinatojn de la muso dum la lasta interkaptita evento.

muse?


Donu “vera” aŭ “malvera” laŭ ĉu oni agis aŭ ne per la muso post la komenco ruli la programon.

A.14.4 Kelkaj uzekzemploj

En tiu unua proceduro, la testudo sekvas la muson kiam ĝi moviĝas sur la desegnejo.

por ekzemplo1  
# Se oni movas la muson, loku sin al la novan situon  
se musleg=0 [sitp mussit]  
ekzemplo1  
fino

En tiu dua proceduro, estas la sama principo krom ke necesas klaki la maldekstran butonon musan por movi la testudon sur la desegnejo.

por ekzemplo2  
se musleg=1 [sitp mussit]  
ekzemplo2  
fino

En tiu tria ekzemplo, ni kreos du butonojn. Tiu maldekstra ebligos grafiki kvadraton je 40 mul 40 al la dekstro; tiu dekstra, malgrandan cirklon al la maldekstro. Finfine, se oni klakos la trian butonon de la muso, la programo haltos.

por butono  
# kreu ortangulan butonon je 50 mul 100 farbita je salmakoloro  
ripetu 2 [an 50 dn 90 an 100 dn 90]  
dn 45 l an 10 ml skolp [255 153 153]  
plenigu mal 10 mdn 45 ml skolp 0  
fino  
 
por lanĉu  
ev butono l skolp [150 0] ml butono  
l skolp [ 30   20] ml etikedu "Kvadrato  
l skolp [180   20] ml etikedu "Cirklo  
l skolp [  0 -100] ml  
muso  
fino  
 
por muso  
# Konservu la rezulton de musleg en la variablon ev  
provizu "ev musleg  
# Konservu la unuan koordinaton de la muso en la variablon x  
provizu "x eron 1 mussit  
# Konservu la duan koordinaton de la muso en la variablon y  
provizu "y eron 2 mussit  
# Se oni klakus la maldekstran butonon  
se :ev=1 & :x>0 & :x<100 & :y>0 & :y<50 [kvadrato]  
# Se oni klakus la dekstran butonon  
se :x>150 & :x<250 & :y>0 & :y<50  
         [si :ev=1 [cirklo]  
          si :ev=3 [haltu]]  
muso  
fino  
 
por cirklo  
ripetu 90 [an 1 mdn 4] mdn 90 l  an 40 dn 90 ml  
fino  
 
por kvadrato  
ripetu 4 [an 40 dn 90] dn 90 an 40 mdn 90  
fino

PIC

A.14.5 Uzi grafikajn konsistaĵojn

XLOGO ebligas ankaŭ aldoni kelkajn grafikajn konsistaĵojn (butonon, malvolveblan menuon...) al la desegnejo. Ĉar tiaj konsistaĵoj rilatas al grafikaj uzulaj interfacoj, ĉiu primitivo por tiu afero komenciĝas per la prefikso «GUI».

Krei konsistaĵon

Por manipuli tiajn grafikajn objektojn, antaŭ ĉio necesas krei ilin, aldoni al ili iujn atributojn, kaj poste afiŝi ilin.

Atribui atributojn al konsistaĵo

gui_koordinatojn vor1 listo2


Ebligas loki la grafikan elementon sur la deziratan situon en la desegnejo. Ekzemple, por loki la antaŭan butonon al punkto kun koordinatoj (20;100), skribu:

 gui_koordinatojn "b [20 100]

Se la situo de la konsistaĵo ne estas indikita, la konsistaĵo estos lokita apriore je la supra maldekstra angulo de la desegnejo.

gui_forigu vor1


Forviŝu grafikan elementon. Ekzemple, por forigi la antaŭan butonon:

 gui_forigu "b

gui_agadon vor1 listo2


Difinu agadon realigendan kiam l’ uzulo interagos kun la grafika elemento konsiderita.

# La testudo anta^uen iru 100 paŝojn se oni klakos butonon "b  
gui_agadon "b [an 100]  
 
# Por la malvolvebla menuo, ^ciu ero havas sian propran agon  
gui_agadon "m [[skrbiu "ero1]  [skribu "ero2] [skribu "ero3]]

gui_desegnu vor1


Afiŝu la grafikan konsistaĵn sur la desegnejon. Ekzemple, por montri la butonon:

 gui_desegnu "b