archive-name: listings.rand-usr.com/books/haunted_house_2.basic
found at: page 42
last-modified: jan 28, 2026

----------------------------------- START -------------------------------------

5 REM ******************
10 REM casa encantada
11 REM 18 bytes de codigo maquina almacenados en la linea 5
20 GOSUB 6500: REM inicializar
30 GOSUB 2000: REM fondo
40 GOSUB 2500: REM castillo
50 GOSUB 4500: REM arboles
60 GOSUB 5000: REM oscuridad
70 LET n=5: GOSUB 1500: REM rayo
80 LET m=1300
90 FOR b=0 TO 29
100 GOSUB 500: REM murcielago
110 GOSUB 1000: REM bruja
120 if b=29 THEN PRINT AT 1,29;"   ": REM esp, esp, esp
130 NEXT b
140 LET n=5: GOSUB 1500: REM rayo
150 GOSUB 5500: REM fuego
160 GOSUB 6000: REM calavera
170 STOP
500 REM mucielago
510 IF m<150 THEN LET xm=xm+1: GOTO 530
520 LET m=m-8: LET a=m*PI/180:
LET xm=16+INT (4.5*SIN (a)):
LET ym=4+INT (3.5*COS (a))
530 PAPER 0: INK 7: PRINT AT ym,xm;"R": REM (R)
535 PAUSE 3
540 PRINT AT ym,xm;"S": REM (S)
545 PAUSE 3
550 PRINT AT ym,xm;" ": REM esp
560 RETURN
1000 REM bruja
1010 PAPER 0: INK 7
1020 PRINT AT 1,b;" IJ": GOSUB 500: REM esp,(I),(J)
1030 PRINT AT 1,b;" KL": GOSUB 500: REM esp,(K),(L)
1040 PRINT AT 1,b;" MN": GOSUB 500: REM esp,(M),(N)
1050 PRINT AT 1,b;" OPQ": REM esp,(O),(P),(Q)
1060 RETURN
1500 REM rayo
1510 FOR l=1 TO n
1520 INK 0: PLOT 255,170: DRAW -39,-40: DRAW 10,0: DRAW -29,-40
1530 POKE 23761,7: RANDOMIZE USR 23760
1540 INK 6: PRINT AT 3,3;"G";AT 4,3 ;"H": REM (G);(H)
1545 PAUSE 5
1550 POKE 23761,1: RANDOMIZE USR 23760
1560 INK 6: PRINT AT 3,3;"G";AT 4,3;"H": REM (G);(H)
1570 INK 0: PLOT 255,170: DRAW -39,-40: DRAW 10,0: DRAW -29,-40
1575 PAUSE 1
1580 NEXT l
1590 RETURN
2000 REM fondo
2010 PAPER 4: INK 0: CLS
2020 FOR r=1 TO 100
2030 LET x=INT (RND*255): LET y=INT (RND*80): PLOT x,y
2040 NEXT r: PAPER 5
2050 FOR y=0 TO 12: FOR x=0 TO 31
2060 PRINT AT y,x;" ": REM esp
2070 NEXT x: NEXT y
2080 INK 0
2090 PLOT 0,72: DRAW 255,0: LET i=4
2100 FOR p=39 TO 0 STEP -2
2110 PLOT 130*SIN (p/30),p: DRAW i,0: LET i=i+2
2120 NEXT p
2130 RETURN
2500 REM castillo
2510 LET x1=10: LET x2=21: LET y1=10: LET y2=16: LET lad=400: GOSUB 3000: REM bloque frontal
2520 LET x1=8: LET x2=10: LET y1=6: LET y2=11: LET lad=100: GOSUB 3000: REM bloque torre izda.
2530 LET x1=21: LET x2=23: LET y1=6: LET y2=11: LET lad=100: GOSUB 3000: REM bloque torre dcha.
2540 LET xs=75: LET ys=159: GOSUB 3500: REM segmento tejado torre izda.
2550 LET xs=179: LET ys=159: GOSUB 3500: REM segmento tejado torre dcha.
2560 FOR r=88 TO 103
2570 PLOT 88,r: DRAW 79,0
2580 NEXT r
2590 FOR b=12 TO 20 STEP 2: PRINT AT 11,b;"8": NEXT b: REM (8)
2600 LET x=68: LET y=102: GOSUB 4000
2610 LET x=76: LET y=88: GOSUB 4000
2620 LET x=182: LET y=102: GOSUB 4000
2630 LET x=174: LET y=88: GOSUB 4000
2640 LET x=96: LET y=56: GOSUB 4000
2650 LET x=157: LET y=56: GOSUB 4000
2660 PRINT AT 15,15;"88";AT 16,15;"88": REM (8),(8);(8),(8)
2670 RETURN
3000 REM bloque
3010 FOR y=y2 TO y1 STEP -1: FOR x=x1 TO x2
3020 PAPER 2: PRINT AT y,x;" ": REM espacio
3030 NEXT x: NEXT y
3040 LET x1=x1*8: LET x2=x2*8: LET y1=y1*8: LET y2=y2*8
3050 FOR y=y2 TO y1 STEP -2
3060 INK 0: PLOT x1,168-y: DRAW (x2-x1)+7,0
3070 NEXT y
3080 FOR m=1 TO lad
3090 LET a=INT (RND*(x2-x1+7)+x1): LET b=168-INT (RND*(y2-y1)+y1): PLOT a,b
3100 NEXT m
3110 RETURN
3500 REM segmento
3510 LET r=39: INK 3
3520 FOR t=160 TO 200
3530 LET a=t*PI/180: LET x=r*SIN (a): LET y=r*COS (a)
3540 PLOT xs,ys: DRAW x,y
3550 NEXT t
3560 RETURN
4000 REM ventana
4010 INK 0: FOR w=y TO y+10: PLOT x,w: DRAW 3,0
4011 NEXT w
4020 RETURN
4500 REM arboles
4510 PAPER 4: INK 0: OVER 1
4520 FOR t=1 TO 30
4530 LET x=INT (RND*29): LET y=13+INT (RND*7)
4540 IF (x>8 AND x<22 AND y<17) THEN GOTO 4530
4550 PRINT AT y,x;"AB";AT y+1,x;"CD";AT y+2,x;"EF": REM (A),(B);(C),(D);(E),(F)
4560 NEXT t
4570 OVER 0: PAUSE 200
4580 RETURN
5000 REM oscuridad
5010 POKE 23761,1: RANDOMIZE USR 23760
5020 PAPER 0: INK 6: PRINT AT 3,3;"G";AT 4,3;"H": REM (G);(H)
5030 PAUSE 100
5040 RETURN
5500 REM fuego
5510 DIM f(2,6): INK 6: PAPER 0
5520 FOR g=1 TO 6
5530 READ y,x: LET f(1,g)=y: LET f(2,g)=x
5540 NEXT g
5550 LET n=0
5560 FOR t=1 TO 6
5570 LET n=n+1
5580 FOR d=1 TO 30
5590 FOR j=1 TO n
5600 PRINT AT f(1,j),f(2,j);"T": REM (t)
5610 PRINT AT f(1,j),f(2,j);" ": REM espacio
5620 NEXT j: NEXT d: NEXT t
5630 FOR y=2 TO 11: FOR x=7 TO 23
5640 PRINT AT y,x;" ": REM espacio
5650 NEXT x: NEXT y
5660 RETURN
6000 REM calavera
6010 INK 0
6020 FOR s=270 TO 450 STEP 2
6030 LET a=s*PI/180: LET x=40*SIN (a)
6040 LET y=40*COS (a): PLOT 127,135: DRAW x,y
6050 NEXT s: LET x1=87: LET x2=80
6060 FOR y=135 TO 87 STEP -1
6070 PLOT x1,y: DRAW x2,0: LET x1=x1+.3: LET x2=x2-.6
6080 NEXT y
6090 PAPER 0: PRINT AT 6,13;"  ";AT 6,17;"  ": REM esp,esp;esp,esp
6100 PRINT AT 8,15;"  ": REM espacio,espacio
6110 PRINT AT 10,14;"   ": REM espacio,espacio,espacio
6120 FOR y=81 TO 169 STEP 8: FOR x=87 TO 167 STEP 8
6130 IF POINT (x,y)=1 THEN PAPER 0: INK INT (RND*(7))+1: FLASH 1: PRINT AT 22-y/8,x/8-1;"6": FLASH 0: REM (6)
6140 NEXT x: NEXT y
6150 RETURN
6500 REM inicializar
6510 FOR a=65368 TO 65527: READ d: POKE a,d: NEXT a
6520 REM introducir codigo maquina en la sentencia REM de la linea 5
6530 FOR i=23760 TO 23777: READ d: POKE i,d: NEXT i
6540 RETURN
7000 DATA 16,129,73,40,16,80,48,9: REM arbol (A)
7010 DATA 128,32,74,134,164,68,204,30: REM arbol (B)
7020 DATA 5,38,178,27,31,15,3,3: REM arbol (C)
7030 DATA 48,96,192,192,194,244,152,128: REM arbol (D)
7040 DATA 1,1,1,3,3,7,31,51: REM arbol (E)
7050 DATA 192,192,192,128,128,128,224,252: REM arbol (F)
7060 DATA 8,16,48,32,96,96,233,224: REM luna (G)
7070 DATA 240,254,127,113,48,54,31,6: REM luna (H)
7080 DATA 1,2,6,230,19,255,17,226: REM bruja (I)
7090 DATA 0,0,0,128,240,128,0,0: REM bruja (J)
7100 DATA 0,0,1,57,4,31,4,56: REM bruja (K)
7110 DATA 64,128,128,160,252,224,64,128: REM bruja(L)
7120 DATA 0,0,0,14,1,7,1,14: REM bruja (M)
7130 DATA 16,32,96,104,63,248,16,32: REM bruja (N)
7140 DATA 0,0,0,3,0,1,0,3: REM bruja (O)
7150 DATA 4,8,24,154,79,254,68,136: REM bruja (P)
7160 DATA 0,0,0,0,192,0,0,0: REM bruja (Q)
7170 DATA 0,0,0,66,36,24,24,0: REM murcielago (R)
7180 DATA 0,0,0,0,0,255,24,0: REM murcielago (S)
7190 DATA 8,128,65,2,150,68,40,40: REM llamas (T)
7500 REM datos codigos maquina
7510 DATA 62,0,33,0,88,6,24,197,6,32
7520 DATA 119,35,16,252,193,16,246,201
7530 REM datos posicion ventanas
7540 DATA 10,22,8,23,14,19,14,12,10,9,8,8

----------------------------------- NOTES -------------------------------------

substitute any " AB" character for its corresponding graphics mode UDG key at lines: 530,540,1020,1030,1040,1050,1540,2590,4550,5600, except for lines 2590 and 6130 use system UDG

original listing typo: line 520 missing ":"

----------------------------------- SOURCE ------------------------------------

source original (not found)
title: "write your own program" advanced graphics - haunted house
genre: book
publisher: aladdin books ltd.
author: marcus milton
year: 1985
isbn: unknown

source (spanish edition)
title: aprende a programar: animacion
genre: book
publisher: e.g. anaya
author: angel garcia garcia (trans.)
year: 1986
isbn: 84-7525-361-X

Archive-name: listings.rand-usr.com/books/haunted_house.basic