Лисья Нора

§ Код программы

fractus.gif
SCREEN 13
 
setpalette
 
f = 2.441406E-04
x0 = -1.022217#
y0 = -.3725586#
 
WHILE 1
 
fractal x0, y0, f
LOCATE 25, 1: PRINT x0; y0; f;
 
SELECT CASE getch
CASE 1: y0 = y0 + f
CASE 2: x0 = x0 + f
CASE 3: y0 = y0 - f
CASE 4: x0 = x0 - f
CASE 13: f = f / 2
CASE 8: f = f * 2
CASE 27: END
END SELECT
 
WEND
 
SUB fractal (x0, y0, f)
 
DIM xc AS DOUBLE
DIM yc AS DOUBLE
 
FOR y = -100 TO 99
FOR x = -160 TO 159
xc = f * x / 100 + x0
yc = f * y / 100 + y0
c = mandel(xc, yc)
PSET (160 + x, 100 - y), c
NEXT
NEXT
 
END SUB
 
FUNCTION getch
 
DO
 
DO: i$ = INKEY$: LOOP WHILE i$ = ""
 
k = ASC(MID$(i$, 1, 1))
IF i$ = CHR$(0) + "H" THEN k = 1
IF i$ = CHR$(0) + "M" THEN k = 2
IF i$ = CHR$(0) + "P" THEN k = 3
IF i$ = CHR$(0) + "K" THEN k = 4
 
LOOP WHILE k = 0
 
getch = k
 
END FUNCTION
 
FUNCTION mandel (cx AS DOUBLE, cy AS DOUBLE)
 
mandel = 0
x = 0
y = 0
 
FOR i = 0 TO 63
 
xt = x ^ 2 - y ^ 2 + cx
yt = 2 * x * y + cy
 
x = xt
y = yt
 
IF x ^ 2 + y ^ 2 >= 4 THEN mandel = i: EXIT FOR
 
NEXT
 
END FUNCTION
 
SUB setpalette
 
FOR i = 0 TO 63
OUT 968, i
OUT 969, i
OUT 969, i
OUT 969, i \ 2 + 32
NEXT
 
END SUB