'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...        es.geocities.com/jm00092
'
'______________________________________________________________________
'
'
'        <!> CONSISTE EN LLEVAR LOS CUADROS AZULES A LA DERECHA
'
'
DECLARE SUB activabotones (c!)
DECLARE SUB mueveizquierda ()
DECLARE SUB muevederecha ()
DECLARE SUB pabajo (col!)
DECLARE SUB parriba (col!)
RANDOMIZE TIMER
DIM SHARED mov1(1 TO 1500)
DIM SHARED mov2(1 TO 100)


SCREEN 12
PALETTE 4, 50
PALETTE 12, 63

LINE (0, 0)-(640, 480), 7, BF
LINE (18, 18)-(620, 420), 0, BF

LINE (20, 450)-STEP(18, 18), 12, BF
LINE (600, 450)-STEP(18, 18), 9, BF

FOR h = 40 TO 580 STEP 20
   LINE (h, 450)-STEP(18, 18), 8, BF
   FOR v = 20 TO 380 STEP 40
      IF RND < .5 THEN LINE (h, v)-STEP(18, 38), 7, BF
   NEXT
NEXT


FOR n = 1 TO 10
   h = (INT(RND * 14) + 2) * 20
   v = (INT(RND * 10) + .5) * 40
   IF POINT(h + 5, v + 15) = 0 THEN
      LINE (h + 2, v + 13)-STEP(14, 14), 9, BF
   ELSE
      n = n - 1
   END IF
NEXT

FOR n = 1 TO 10
   h = (INT(RND * 14) + 2) * 20
   v = (INT(RND * 10) + .5) * 40
   IF POINT(h + 285, v + 15) = 0 THEN
      LINE (h + 282, v + 13)-STEP(14, 14), 12, BF
   ELSE
      n = n - 1
   END IF
NEXT

muevederecha
mueveizquierda
activabotones (9)

col = 39
LINE (col, 449)-STEP(20, 20), 15, B

DO
  
   WHILE INKEY$ <> "": WEND
  
   DO
      kbd$ = UCASE$(INKEY$)
   LOOP WHILE kbd$ = ""

   LINE (col, 449)-STEP(20, 20), 7, B
   movido = 0
  
   SELECT CASE kbd$
   CASE CHR$(0) + "H"
   IF POINT(col + 8, 458) = 14 THEN
      parriba col
      movido = 1
   END IF
   CASE CHR$(0) + "P"
   IF POINT(col + 8, 458) = 14 THEN
      pabajo col
      movido = 1
   END IF
   CASE CHR$(0) + "K": col = col - 20
   CASE CHR$(0) + "M": col = col + 20
   CASE CHR$(27): END
   END SELECT

   IF movido = 1 THEN muevederecha: mueveizquierda: activabotones (9)

   IF col < 19 THEN col = 599
   IF col > 599 THEN col = 19
   LINE (col, 449)-STEP(20, 20), 15, B
   LOCATE 1, 1: PRINT FRE(-2)
LOOP

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
SUB activabotones (c)

FOR h = 40 TO 580 STEP 20
DRAW "c6bm" + STR$(h + 6) + "," + STR$(458) + "r8h4g3brp6,6"
DRAW "c6bm" + STR$(h + 6) + "," + STR$(461) + "r8g4h3brp6,6"
FOR v = 20 TO 380 STEP 40
IF POINT(h + 10, v + 20) = c THEN
   DRAW "c14bm" + STR$(h + 6) + "," + STR$(458) + "r8h4g3brp14,14"
   DRAW "c14bm" + STR$(h + 6) + "," + STR$(461) + "r8g4h3brp14,14"
   EXIT FOR
END IF
NEXT
NEXT

END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
SUB muevederecha

FOR v = 380 TO 20 STEP -40
FOR h = 580 TO 40 STEP -20

IF POINT(h + 10, v + 20) = 9 THEN
   
   hh = h
   vv = v
   DO
     
      WHILE POINT(hh + 10, vv + 60) = 0
         LINE (hh + 2, vv + 13)-STEP(14, 14), 0, BF
         vv = vv + 40
         LINE (hh + 2, vv + 13)-STEP(14, 14), 9, BF
         IF vv > 380 THEN vv = 20
      WEND
     
      IF POINT(hh + 30, vv + 20) = 0 THEN
         LINE (hh + 2, vv + 13)-STEP(14, 14), 0, BF
         hh = hh + 20
         LINE (hh + 2, vv + 13)-STEP(14, 14), 9, BF
         IF hh > 580 THEN SOUND 1000, 1
      END IF
   LOOP UNTIL POINT(hh + 30, vv + 20) <> 0 AND POINT(hh + 10, vv + 60) <> 0
END IF

NEXT
NEXT

END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
SUB mueveizquierda

FOR v = 380 TO 20 STEP -40
FOR h = 40 TO 580 STEP 20

IF POINT(h + 10, v + 20) = 12 THEN
  
   hh = h
   vv = v
   DO
    
      WHILE POINT(hh + 10, vv + 60) = 0
         LINE (hh + 2, vv + 13)-STEP(14, 14), 0, BF
         vv = vv + 40
         LINE (hh + 2, vv + 13)-STEP(14, 14), 12, BF
         IF vv > 380 THEN vv = 20
      WEND
    
      IF POINT(hh - 10, vv + 20) = 0 THEN
         LINE (hh + 2, vv + 13)-STEP(14, 14), 0, BF
         hh = hh - 20
         LINE (hh + 2, vv + 13)-STEP(14, 14), 12, BF
         IF hh < 40 THEN SOUND 1000, 1
      END IF
   LOOP UNTIL POINT(hh - 10, vv + 20) <> 0 AND POINT(hh + 10, vv + 60) <> 0
END IF

NEXT
NEXT

END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
SUB pabajo (col)

FOR n = 1 TO 20
GET (col + 1, 20)-STEP(18, 397), mov1
GET (col + 1, 418)-STEP(18, 1), mov2

PUT (col + 1, 22), mov1, PSET
PUT (col + 1, 20), mov2, PSET

NEXT

END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
SUB parriba (col)

FOR n = 1 TO 20
GET (col + 1, 22)-STEP(18, 397), mov1
GET (col + 1, 20)-STEP(18, 1), mov2

PUT (col + 1, 20), mov1, PSET
PUT (col + 1, 418), mov2, PSET

NEXT

END SUB

