Here's a bit of code which might give you some ideas to build from:
<values>
/ currentdigit = 0
/ allowablekeys = "2,3,4,5,6,7"
/ lastresponse = 0
</values>
<text mydigit>
/ items = ("<%values.currentdigit%>")
</text>
<counter randomdigit>
/ select = replacenorepeat(1-6)
</counter>
<trial maintrial>
/ ontrialbegin = [values.currentdigit=counter.randomdigit.selectedvalue]
/ ontrialend = [values.lastresponse=trial.maintrial.response]
/ stimulusframes = [1=mydigit]
/ validresponse = (2,3,4,5,6,7,8,9,10)
/ iscorrectresponse = [trial.maintrial.response==values.currentdigit+1]
/ branch = [if (contains(values.allowablekeys, values.lastresponse)==false) trial.repeattrial]
</trial>
<trial repeattrial>
/ ontrialend = [values.lastresponse=trial.repeattrial.response]
/ stimulusframes = [1=mydigit]
/ validresponse = (2,3,4,5,6,7,8,9,10)
/ iscorrectresponse = [trial.repeattrial.response==values.currentdigit+1]
/ branch = [if (contains(values.allowablekeys, values.lastresponse)==false) trial.repeattrial]
</trial>
<block myblock>
/ trials = [1-12=maintrial]
</block>