'                                      
'                                          
'                                          
'
'                       
'                         
'                     
'                                                          /
'                                 
'                                          
'                              
'
'
'   JM. :: Hecho en Ronda
'
'  Procedente de...        es.geocities.com/jm00092
'
'______________________________________________________________________
'                                  


CONST lentitud = 0


DECLARE SUB sombra (h1!, v1!, h2!, v2!, dif!)
DECLARE SUB acerca ()
DECLARE SUB edificio (h!, v!, pisos!)
DECLARE SUB jardin (h!, v!)
RANDOMIZE TIMER
SCREEN 12
PALETTE 12, 55
inicio:
PALETTE 0, 0
CLEAR
DIM SHARED acercade(1 TO 5000)
LINE (0, 0)-(640, 200), 9, BF
LINE (0, 200)-(640, 480), 2, BF
FOR h = 240 TO 600 STEP 40
   LINE (h, 240)-(h - 210, 450)
NEXT
LINE (0, 200)-(640, 200), 15
PAINT (0, 250), 7, 15
FOR v = 240 TO 460 STEP 30
   LINE (480 - v, v)-(840 - v, v)
NEXT
PAINT (0, 250), 2, 15
LINE (0, 0)-(640, 200), 9, BF
FOR v = 380 TO 440 STEP 10
   FOR h = 540 TO 620 STEP 10
      LINE (h, v)-STEP(10, 10), 7, BF
      LINE (h, v)-STEP(10, 10), 15, B
   NEXT
NEXT
FOR v = 240 TO 420 STEP 30
   FOR h = 480 - v TO 800 - v STEP 40
      edificio h, v, INT(RND * 30) - 19
      FOR delay = 1 TO lentitud: NEXT
   NEXT
NEXT
LOCATE 30, 48: PRINT " OTRA SALIR ACERCA ";
LINE (384, 479)-(390, 479), 10
LINE (424, 479)-(430, 479), 10
LINE (472, 479)-(478, 479), 10
PALETTE 0, 63
menu:
WHILE INKEY$ <> "": WEND
DO
kbd$ = UCASE$(INKEY$)
LOOP UNTIL kbd$ = "O" XOR kbd$ = "S" XOR kbd$ = "A"
SELECT CASE kbd$
CASE "O": GOSUB inicio
CASE "A"
   acerca
   GOSUB menu
END SELECT
FOR n = 0 TO 15
   PALETTE n, 3 + (4 * n)
NEXT
COLOR 0

   SUB acerca
GET (224, 176)-(427, 297), acercade
FOR n = 187 TO 295 STEP 2
   LINE (233, n)-(427, n + 1), 8, B, &H5555
NEXT
LINE (416, 176)-STEP(0, 112), 0
COLOR 15
LOCATE 12, 29: PRINT "ͻ"
LOCATE 13, 29: PRINT "        PROGRAMA PARA "
LOCATE 14, 29: PRINT " CONSTRUIR UNA        "
LOCATE 15, 29: PRINT "   CIUDAD CIBERNTICA "
LOCATE 16, 29: PRINT "    "
LOCATE 17, 29: PRINT "   JM. Hecho en Ronda  "
LOCATE 18, 29: PRINT "ͼ"
DO: LOOP WHILE INKEY$ = ""
PUT (224, 176), acercade, PSET
END SUB

SUB edificio (h, v, pisos)
IF pisos < 1 THEN
   jardin h, v
ELSE
   FOR p = v TO (v - (19 * pisos)) STEP -19
      LINE (((h + v) / 4) + 421, (v / 3) + 301)-STEP(8, 8), 0, BF
      FOR vv = p TO p - 20 STEP -1
         PSET (h - 30, vv + 30), 0
         DRAW "c15r40c7e30l40c15g30"
         PSET (h - 30, vv + 30), 8
         PSET (h + 10, vv + 30), 8
         PSET (h + 40, vv), 8
      NEXT
      FOR hven = 2 TO 22 STEP 10
         IF p - v = 0 AND RND > .6 THEN
            IF RND > .3 THEN l = 9 ELSE l = 12
            PSET (h - hven + 1, p + 17), 4
            DRAW "c7d12c4r4"
            LINE (h - hven + 2, p + 17)-STEP(3, 11), l, BF
            IF RND > .3 THEN LINE (h - hven + 3, p + 18)-STEP(2, 8), 11, BF
         ELSE
            IF RND > .3 THEN l = 11 ELSE l = 3
            LINE (h - hven + 2, p + 17)-STEP(3, 6), l, BF
            PSET (h - hven + 1, p + 17), 4
            DRAW "c7d7c12r4c1ul3u6"
            IF RND > .3 THEN LINE (h - hven + 2, p + 17)-STEP(3, INT(RND * 5)), 7, BF
         END IF
      NEXT
      FOR hven = 2 TO 18 STEP 8
         IF RND > .3 THEN : l = 3:  ELSE : l = 8
         PSET (h + hven + 13, p - hven + 22), l
         DRAW "e3u9g3d9"
         PAINT (h + hven + 14, p - hven + 20), l, l
         PSET (h + hven + 13, p - hven + 22), 4
         DRAW "c4e3c15u9"
      NEXT
   NEXT
   tejado = INT(RND * 5) + 1
   SELECT CASE tejado
   CASE 1 TO 2
      FOR x = h TO h + 40
         LINE (x, vv)-(x - 30, vv + 30), 7
         LINE (x, vv)-(x - 15, vv + 5), 4
         LINE STEP(0, 0)-(x - 30, vv + 30), 12
      NEXT
   CASE 3 TO 4
      FOR x = h TO h + 30
         LINE (h - x + h, vv + x - h)-(h - x + h + 40, vv + x - h), 15
         LINE (h - x + h, vv + x - h)-STEP(20, -10), 12
      NEXT
      x = x - 1
      LINE (h - x + h + 20, vv + x - h - 10)-(h - x + h + 40, vv + x - h), 4
      LINE STEP(0, 0)-STEP(30, -30), 4
      LINE STEP(0, 0)-STEP(-20, -10), 4
      LINE STEP(0, 0)-STEP(-30, 30), 4
      PAINT STEP(2, 0), 4, 4
   CASE ELSE
      FOR x = h TO h + 30
         LINE (h - x + h, vv + x - h)-(h - x + h + 40, vv + x - h), 1
      NEXT
   END SELECT
   PSET (h, v), POINT(h, v): DRAW "bg30c8r40e30"
END IF
END SUB

SUB jardin (h, v) STATIC
LINE (h - 1, v + 5)-(h, v - 5), 6, BF
LINE (h + 29, v + 5)-(h + 30, v - 5), 6, BF
LINE (h - 21, v + 25)-(h - 20, v + 15), 6, BF
LINE (h + 9, v + 25)-(h + 10, v + 15), 6, BF
CIRCLE (h, v - 10), 4, 10
CIRCLE (h + 30, v - 10), 4, 10
CIRCLE (h - 20, v + 10), 4, 10
CIRCLE (h + 10, v + 10), 4, 10
PAINT (h, v - 10), 2, 10
PAINT (h + 30, v - 10), 2, 10
PAINT (h - 20, v + 10), 2, 10
PAINT (h + 10, v + 10), 2, 10
END SUB

