Der mainloop darf eigentlich nicht unterbrochen werden für eine saubere Ablauf. Prinzip ist das die Mainloop standig durchlaufen werd. Wen etwas passiert soll eine Function aufgerufen und bearbeitet werden, dan wieder zu Mainloop. Die blockierende Functionen(mSleep, delay...) haben das Nachteil das alles andere was auch noch in Mainloop derin ist, nicht mehr bearbeitet wird !!
Scheint kompliziert zu sein, aber sieht mal die Beispielen an die schon functionieren.

für ihre Frage :
In mainloop
if (getBumberLeft()) move(100,BWD,50,0);

Jetzt ist naturlich wichtig das in das andere Teil von Mainloop diese Move nicht wiederum gegengesprochen wird !!