Le robot parcourt un circuit d'hippodrome, il évite un premier objet en passant par sa gauche. Un deuxième objet est placé à l'opposé sur le circuit il l'évite encore en passant par la gauche.
Le code en Pygmy Forth ( primitives ) " MotorAV.fth" LOAD ( moteur avance ) " MotorAR.fth" LOAD ( moteur recule ) " MotorStop.fth" LOAD ( moteur s'arrête ) " initlf1.fth" LOAD ( capteur suiveur centre gauche ) " initlf2.fth" LOAD ( capteur suiveur centre droit ) " initlf3.fth" LOAD ( capteur suiveur droite ) " initlf4.fth" LOAD ( capteur suiveur gauche ) " TurnD.fth" LOAD ( tourne à gauche ) " TurnG.fth" LOAD ( tourne à droite ) " TurnGC.fth" LOAD ( tourne à gauche 90° dans le contournement ) " TurnDC.fth" LOAD ( tourne à droite 90° dans le contournement ) " SurfC.fth" LOAD ( capteur de surface central ) " SurfDW.fth" LOAD ( capteur de surface gauche )
Saute l'obstacle sur la ligne. : TO> 8 FOR MOTORAV NEXT ; ( déplacement de base ) : TO3 3 FOR TO> NEXT ; ( premier genre de déplacement ) : TO5 5 FOR TO> NEXT ; ( deuxième genre de déplacement )
: CONTOURN ( -- ) ( module de contournement ) TURNGC (commence le contournement en tournant à gauche de 90° ) TO3 ( avance de 24 pas ) TURNDC ( tourne à droite de 90° ) TO5 ( avance de 40 pas ) TURNDC ( tourne à droite de 90° ) TO3 ( avance de 24 pas ) TURNGC ( tourne à droite de 90° et reprend sa ligne ) ; ( fin du code de contournement ) : C ( -- ) CONTOURN ; ( C, raccourci )
: SLLF ( -- ) ( code principal ) BEGIN ( début de la boucle ) ( cette partie du code correspond au code HIPPODROME ) INITLF1 INITLF2 AND 0= IF MOTORAV THEN INITLF1 0= IF TURND MOTORAV ELSE MOTORAV THEN INITLF2 0= NOT IF TURNG MOTORAV ELSE MOTORAV THEN SURFC 0= NOT ( le capteur de surface détecte l'objet ) IF MOTORAR C ( si l'objet est detecté branchement sur le contournement ) THEN ( fin du branchement conditionnel ) AGAIN ( retour sur la boucle ) ; ( fin de programme )