Bonjour,
Pourquoi, sans qu'un événement "boutons" apparaisse, les instructions comprises dans un tel bloc sont exécutées ? A titre d'exemple, je suis très surpris des valeurs des variables affichées dans le code ci-après :
var a = 0
var b = 0
var c = 0
var k =0
k = k + 1
onevent buttons
a = a + 1
when prox.horizontal[2] > 2000 do
b = b + 1
end
onevent tap
c = c + 1
Certes ce code est provoquant et devrait logiquement commencer par un 'onevent prox'. La raison est que je me pose la question de la "meilleure" façon de décrire une machine d'états finis sous Aseba (pour l'enseignement au niveau gymnase). Le passage d'un état à un autre pouvant provenir d'un événement 'prox' ou 'tap' ou autre…
Le code de l'exemple ci-après est-il judicieux, ou faudrait-il faire différemment ?
var state = 0
#le comportement de chaque état
sub update
if state == 0 then
call leds.top(32,0,0)
else
call leds.top(0,32,0)
end
#fin du comportement
onevent prox
callsub update
when prox.horizontal[2] > 2000 do
state = 0
end
onevent buttons
callsub update # celui ci serait inutile...
when button.forward == 1 do
state = 1
end
onevent tap
callsub update
state = 0