' {$STAMP BS2} ' {$PBASIC 2.5} FREQOUT 4, 2000, 3000 blancoIzq VAR Word blancoDer VAR Word izq VAR Word der VAR Word blanco VAR Word vuelta VAR Word counter VAR Word HIGH 6 PAUSE 3 RCTIME 6, 1, blancoIzq HIGH 3 PAUSE 3 RCTIME 3, 1, blancoDer HIGH 0 PAUSE 3 RCTIME 0, 1, blanco DEBUG "BlancoIzqA = ", CR, DEC5 blancoIzq, CR DEBUG "BlancoDerA = ", CR, DEC5 blancoDer, CR blancoIzq = blancoIzq + (blancoIzq / 3) blancoDer = blancoDer + (blancoDer / 3) blanco = blanco + (blanco / 2) DEBUG "BlancoIzq = ", CR, DEC5 blancoIzq, CR DEBUG "BlancoDer = ", CR, DEC5 blancoDer, CR PAUSE 2000 HIGH 6 PAUSE 3 RCTIME 6, 1, izq HIGH 3 PAUSE 3 RCTIME 3, 1, der DEBUG "Actual: ", CR, DEC5 izq, CR, DEC5 der DO HIGH 6 PAUSE 3 RCTIME 6, 1, izq HIGH 3 PAUSE 3 RCTIME 3, 1, der HIGH 0 PAUSE 3 RCTIME 0, 1, vuelta IF (izq <= blancoIzq) THEN GOSUB NavegaDerecha 'va hacia derecha PAUSE 100 ELSEIF (der <= blancoDer) THEN 'cuando el negro sea blanco y el blanco negro GOSUB NavegaIzquierda PAUSE 100 ELSEIF (vuelta >= blanco) THEN GOSUB Gira45 PAUSE 100 ELSE 'cuando el blanco sea blanco y negro sea blanco GOSUB NavegaFrente ENDIF LOOP NavegaFrente: LOW 15 LOW 1 PULSOUT 13, 850 PULSOUT 12, 700 PAUSE 20 RETURN NavegaDerecha: LOW 15 HIGH 1 PULSOUT 13, 750 PULSOUT 12, 800 PAUSE 20 RETURN Gira45: FOR counter = 0 TO 20 GOSUB NavegaFrente NEXT LOW 15 HIGH 1 FOR counter = 0 TO 30 PULSOUT 13, 750 PULSOUT 12, 800 PAUSE 20 NEXT RETURN NavegaIzquierda: LOW 1 HIGH 15 PULSOUT 13, 750 PULSOUT 12, 700 PAUSE 20 RETURN