BBC BASIC for Windows
Programming >> Graphics and Games >> "Munching squares"
http://bb4w.conforums.com/index.cgi?board=graphics&action=display&num=1478045674

"Munching squares"
Post by David Williams on Nov 2nd, 2016, 12:14am

Code:
      REM Munching squares (slow version)

      W% = 512
      VDU 23,22,W%;W%;8,16,16,0 : OFF

      FOR X% = 0 TO W%-1
        FOR Y% = 0 TO W%-1
          B% = (X% EOR Y%) AND 255
          COLOUR 7, B%, B%>>1, 255-B%
          PLOT 2*X%, 2*Y%
        NEXT
      NEXT

      REPEAT UNTIL INKEY(1)=0
      END
 



Code:
      REM Munching squares (fast version)

      SetPixel% = FNSYS_NameToAddress("SetPixel")
      H% = @memhdc%

      W% = 512
      VDU 23,22,W%;W%;8,16,16,0 : OFF

      FOR X% = 0 TO W%-1
        FOR Y% = 0 TO W%-1
          B% = (X% EOR Y%) AND 255
          C% = &10000*(255-B%) OR &100*(B%>>1) OR B%
          SYS SetPixel%, H%, X%, W%-Y%-1, C%
        NEXT
      NEXT

      SYS "InvalidateRect", @hwnd%, 0, 0

      REPEAT UNTIL INKEY(1)=0
      END

      DEFFNSYS_NameToAddress(f$):LOCALP%:DIMP%LOCAL5:[OPT 0:call f$:]:=P%!-4+P%
 



Based on the Liberty BASIC program listed at Rosetta Code:

http://rosettacode.org/wiki/Munching_squares


David.
--

Re: "Munching squares"
Post by michael on Nov 2nd, 2016, 02:43am

Big speed difference.