set window 5, 20, 1000, 630 set color 64, 64, 255 draw rect 0, 601, 999, 29, true draw rect 801, 0, 199, 630, true set caret 810, 30 set color 255, 255, 255 write "MANDELBROT SET" set caret 860, 600 write "code: Tomaaz" draw line 0, 600, 800, 600 draw line 800, 0, 800, 600 set caret 10, 60 write "Press 1 to see fractal in color (faster but less details visible)" set caret 10, 100 write "Press 2 to see fractal in greyscale (slower but more details visible)" do if keydown(49) then lim = 50 break elseif keydown(50) then lim = 255 break endif wait 10 loop set caret 810, 60 write "X = (-2; 1)" set caret 810, 80 write "Y = (1; -1)" set caret 810, 180 write "zoom: 1x" set redraw false stan = 1 pow# = 1.0 przes_x# = 0.0 przes_y# = 0.0 do if stan = 1 then set color 64, 64, 255 draw rect 200, 605, 500, 20, true set color 255, 255, 255 set caret 380, 605 write "Wait..." przel_x# = 3.0 / (800.0 * pow#) przel_y# = 2.0 / (600.0 * pow#) for x = 0 to 799 for y = 0 to 599 a# = 0.0 b# = 0.0 c = 0 x2# = (przel_x# * (float(x) + (przes_x# * pow#))) - 2.0 y2# = (przel_y# * (float(y) + (przes_y# * pow#))) - 1.0 do a2# = a# * a# - b# * b# b2# = 2.0 * a# * b# a# = a2# + x2# b# = b2# + y2# z# = a# * a# + b# * b# if z# >= 4.0 then break c = c + 1 until c = lim if lim = 50 then if c = 50 set color 0, 0, 0 elseif c < 17 set color 245 - ((17 - c) * 3), 0, 0 elseif c < 33 set color 245, ((c - 16) * 16) - 16, 0 else set color 641 - (c * 12), 245, ((c - 32) * 16) endif else set color c, c, c endif draw pixel x, y next redraw next endif set color 64, 64, 255 draw rect 200, 605, 500, 20, true set color 255, 255, 255 if pow# = 1.0 or pow# = 50.0 set caret 200, 605 write "To enlarge part of the fractal simply click on it" else set caret 320, 605 write "Click to start again" endif redraw do if mousex() > 1 and mousex() < 800 and mousey() > 1 and mousey() < 600 set color 64, 64, 255 draw rect 810, 120, 185, 20, true draw rect 810, 140, 185, 20, true set color 255, 255, 255 set caret 810, 120 write "X1 = " write (przel_x# * (float(mousex()) + (przes_x# * pow#))) - 2.0 set caret 810, 140 write "Y1 = " write -1.0 * ((przel_y# * (float(mousey()) + (przes_y# * pow#))) - 1.0) redraw endif if mousebutton(0) then break wait 10 loop if mousex() > 1 and mousex() < 800 and mousey() > 1 and mousey() < 600 set color 64, 64, 255 draw rect 810, 120, 185, 20, true draw rect 810, 140, 185, 20, true draw rect 835, 60, 170, 20, true draw rect 835, 80, 170, 20, true draw rect 810, 100, 185, 20, true set caret 810, 100 set color 255, 255, 255 set caret 837, 60 write "(" write (przel_x# * (float(mousex()) + (przes_x# * pow#))) - 2.0 write "; " write (przel_x# * (float(mousex()) + (przes_x# * pow#))) - 2.0 + 3.0 / (pow# * 50.0) write ")" set caret 837, 80 write "(" write - 1.0 * (przel_y# * (float(mousey()) + (przes_y# * pow#))) - 1.0 write "; " write -1.0 * ((przel_y# * (float(mousey()) + (przes_y# * pow#))) - 1.0) + 2.0 / (pow# * 50.0) write ")" if pow# < 51.0 przes_x# = przes_x# + float(mousex()) / pow# przes_y# = przes_y# + float(mousey()) / pow# pow# = pow# * 50.0 set color 64, 64, 255 draw rect 810, 180, 185, 20, true set caret 810, 180 set color 255, 255, 255 if pow# = 50.0 write "zoom: 50x" else write "zoom: 2500x" endif else pow# = 1.0 przes_x# = 0.0 przes_y# = 0.0 set color 64, 64, 255 draw rect 835, 60, 170, 20, true draw rect 835, 80, 170, 20, true draw rect 810, 180, 185, 20, true set color 255, 255, 255 set caret 810, 60 write "X = (-2; 1)" set caret 810, 80 write "Y = (1; -1)" set caret 810, 180 write "zoom: 1x" endif stan = 1 else stan = 0 endif redraw loop