REM +-------------------------------------+ REM | | REM | "Imaginary Dots" optical illusion | REM | | REM +-------------------------------------+ REM Disable the Escape key REM (or rather, prevent it from causing a trappable error if pressed) *ESC OFF ON ERROR PROCError : QUIT REM Setup a full screen display GWL_STYLE = -16 HWND_TOPMOST = -1 WS_VISIBLE = &10000000 WS_CLIPCHILDREN = &2000000 WS_CLIPSIBLINGS = &4000000 SYS "GetSystemMetrics", 0 TO xscreen% SYS "GetSystemMetrics", 1 TO yscreen% SYS "SetWindowLong", @hwnd%, GWL_STYLE, WS_VISIBLE + \ \ WS_CLIPCHILDREN + WS_CLIPSIBLINGS SYS "SetWindowPos", @hwnd%, HWND_TOPMOST, 0, 0, xscreen%, yscreen%, 0 VDU 26 : COLOUR 15,0,0,0 : CLS : OFF REM Get the window width and height REM (in this case, the variables xscreen% and yscreen% contain REM the width and height, respectively, of the full screen) WinW% = xscreen% WinH% = yscreen% REM Calculate some values k% = 12 p = k%*PI q = p/(WinW%-1) REM Calculate the grid cell width and height CellW% = WinW%/k% CellH% = WinH%/k% REM Draw a single grid cell GCOL 1 *REFRESH OFF FOR Y% = 0 TO CellH%-1 u = p*Y%/(WinH%-1) FOR X% = 0 TO CellW%-1 REM Calculate the greyscale intensity (in the range 0 to 255) I% = INT(255 * ABS(SINu * SIN(X%*q))) COLOUR 1, I%, I%, I% PLOT 2*X%, 2*Y% NEXT NEXT REM Copy the grid cell to fill the entire program window/screen FOR Y%=0 TO WinH% DIV CellH% FOR X%=0 TO WinW% DIV CellW% RECTANGLE 0, 0, 2*WinW%, 2*CellH% TO 2*X%*CellW%, 2*Y%*CellH% NEXT NEXT *REFRESH REM Exit when user presses Escape or some other key, REM or clicks a mouse button MOUSE OFF *REFRESH ON PROCWait QUIT DEF PROCWait LOCAL B%, X%, Y%, quit% REM Flush the keyboard buffer *FX 21,0 quit% = FALSE REPEAT MOUSE X%, Y%, B% IF INKEY(0)<>-1 OR B%<>0 THEN quit% = TRUE WAIT 1 : REM A delay necessary to prevent 100% CPU usage :-) UNTIL quit% ENDPROC DEF PROCError *REFRESH ON MOUSE ON : CLS : ON : VDU 7 : COLOUR 7 : PRINT '" "; REPORT : PRINT " at line "; ERL PRINT ''" Press a key or click a mouse button to exit"; PROCWait ENDPROC
|
*ESC OFF MODE 10 : OFF COLOUR 7,148,148,148 ScrW%=@vdu%!208 ScrH%=@vdu%!212 S%=80 : REM grid spacing T%=18 : REM grid line thickness O%=S%DIV2 : REM grid origin offset *REFRESH OFF GCOL 7 FOR Y%=0 TO ScrH% STEP S% FOR X%=0 TO ScrW% STEP S% RECTANGLE FILL 2*(X%-O%), 0, 2*T%, 2*ScrH% RECTANGLE FILL 0, 2*(Y%-O%), 2*ScrW%, 2*T% NEXT NEXT GCOL 15 FOR Y%=0 TO ScrH% STEP S% FOR X%=0 TO ScrW% STEP S% K% = O% - T%DIV2 CIRCLE FILL 2*(X%-K%), 2*(Y%-K%), 2*0.8*T% NEXT NEXT *REFRESH *REFRESH ON REPEAT UNTIL INKEY(1)=0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|