'
'
'   Procedente de   
'
'             es.geocities.com/jm00092
'
'
'

DECLARE SUB ENTRADA ()
DECLARE SUB CUBO (X!, Y!, LADO!, c!, ca!, CS!, CL!, P!)
RANDOMIZE TIMER
SCREEN 12

ENTRADA
VIDAS = 5
DO
cubos = 0
ED = ED + 1
CLS
PRINT "þþþ BLOKAL.BAS þþþ"
PRINT
PRINT "EDIFICIO:"; ED
PRINT "   VIDAS:"; VIDAS
PRINT "  PUNTOS:"; Puntos

FOR H = 150 TO 550 STEP 50
FOR V = 100 TO 300 STEP 50
CUBO H, 400 - V, 50, 1, 7, 15, 8, 6
 
NEXT
NEXT
      
    SLEEP 5
 
FOR H = 117 TO 550 STEP 50
FOR V = 100 TO 300 STEP 50
CUBO H, 433 - V, 50, 1, 7, 15, 8, 5
NEXT
NEXT

      SLEEP 5

FOR H = 84 TO 500 STEP 50
FOR V = 100 TO 300 STEP 50
CUBO H, 466 - V, 50, 1, 7, 15, 8, 4
NEXT
NEXT

    SLEEP 5

FOR H = 51 TO 500 STEP 50
FOR V = 100 TO 300 STEP 50
CUBO H, 499 - V, 50, 1, 7, 15, 8, 4
NEXT
NEXT

    SLEEP 5

FOR H = 18 TO 450 STEP 50
FOR V = 100 TO 300 STEP 50
CUBO H, 532 - V, 50, 1, 7, 15, 8, 4
NEXT
NEXT
 
    VIEW PRINT 29 TO 30
    DO
    LOCATE 29, 10: INPUT ; "¨ CUANTOS BLOQUES HAY ?: ", res$
    LOOP UNTIL VAL(res$) > -1 AND VAL(res$) < 226 AND VAL(res$) - FIX(VAL(res$)) = 0
    SELECT CASE VAL(res$)
    CASE 0: PRINT cubos: END
    CASE IS = cubos:  Puntos = Puntos + cubos: SOUND 400, 5
    CASE ELSE: VIDAS = VIDAS - 1: Puntos = Puntos - 300: PRINT cubos: SOUND 100, 5
    END SELECT
    VIEW PRINT

LOOP UNTIL VIDAS = 0

' DIBUJA UN CUBO EN PERSPECTIVA CABALLERA
'     ANTES DESPEJA EL LUGAR QUE VA A OCUPAR PARA EVITAR ERRORES
'
'    X e y :POSICIàN DE LA ESQUINA ANTERIOR INFERIOR IZQUIERDA
'    LADO :LONGITUD DE LA ARISTA
'      (LA SUB CALCULA AUTOMµTICAMENTE LA PROPORCIàN PARA LA PERSPECTIVA)
'    C: COLOR DE LAS ARISTAS
'    CA: COLOR DE LA CARA ANTERIOR
'    CS: COLOR DE LA CARA SUPERIOR
'    CL: COLOR DA LA CARA LATERAL
'    P: PROBABILIDAD DE NO DIBUJAR EL CUBO = 1/P  (1 = NO LO DIBUJA NUNCA)
'
'
 SUB CUBO (X, Y, LADO, c, ca, CS, CL, P)
 SHARED cubos
D = INT(RND * P) + 1
IF D = P THEN : EXIT SUB


PSET (X, Y), c
FOR S = 0 TO 2 * (LADO / 3)
LINE (X + S, Y - S)-(X + S + LADO, Y - S - LADO), ca, BF
NEXT
PSET (X, Y), c
 
LINE STEP(0, 0)-STEP(LADO, 0 - LADO), c, B
LINE STEP(0, 0)-STEP(LADO * 2 / 3, 0 - ((LADO * 2) / 3)), c
LINE STEP(0, 0)-STEP(0, LADO), c
LINE STEP(0, 0)-STEP(0 - (LADO * 2 / 3), (LADO * 2) / 3), c
LINE STEP(0 - LADO, 0 - LADO)-STEP(LADO * 2 / 3, 0 - ((LADO * 2) / 3)), c
LINE STEP(0, 0)-STEP(LADO, 0), c
PAINT STEP(0 - LADO / 3, LADO / 4), CS, c
PAINT STEP(0, LADO), CL, c

cubos = cubos + 1
 
END SUB

SUB ENTRADA

FOR H = 0 TO 550 STEP 50
FOR V = 0 TO 50 STEP 50             'ABAJO
CUBO H, 480 - V, 50, 1, 7, 15, 8, 0
NEXT
NEXT



FOR H = 0 TO 50 STEP 50
FOR V = 180 TO 380 STEP 50              'IZQUIERDA
CUBO H, 560 - V, 50, 1, 7, 15, 8, 0
NEXT
NEXT

FOR H = 500 TO 550 STEP 50
FOR V = 50 TO 300 STEP 50                'DERECHA
CUBO H, 480 - V, 50, 1, 7, 15, 8, 0
NEXT
NEXT

FOR H = 0 TO 550 STEP 50
FOR V = 350 TO 400 STEP 50                'ARRIBA
CUBO H, 480 - V, 50, 1, 7, 15, 8, 0
NEXT
NEXT

LOCATE 10, 20: PRINT "Bienvenido a þþþ BLOKAL.BAS þþþ"
LOCATE 12, 22: PRINT "         Juego de contar bloques"
LOCATE 13, 22: PRINT "             Hecho en RONDA"
LOCATE 14, 22: PRINT "   Cada secci¢n COMPLETA del edificio"
LOCATE 15, 22: PRINT "        tiene 5 x 9 = 45 bloques."
LOCATE 16, 22: PRINT "    Las pausas son de cinco segundos."
LOCATE 17, 22: PRINT "   Por acertar sumas puntos = bloqes."
LOCATE 18, 22: PRINT "Por fallar restas 300 puntos y una vida."

LOCATE 21, 40: PRINT "Pulse una tecla >>>>"

DO: LOOP WHILE INKEY$ = ""

END SUB

