Cute project. All those nested IF/ELSE blocks in SINGLE-LINE RUN give me a headache, though. There are several ways you could avoid that.
First way: STOP THIS BLOCK.
and so on.
Second way: "Multi-branched conditional" library.
and so on.
Third way (more effort): data-directed programming. You create a list like this:
Then you write a MATCH block that takes a string like "move () steps" and another string like "move 20 steps" and sees if they match, with "()" in the pattern matching anything in the user's input. When it finds a match, it doesn't just report True; it reports a list of all the input values given by the user. And finally you can just