DEFINT AZ '' ' Program ANTY.BAS by David Rice, based upon the article in ' ' July 1994 Sci
DEFINT A-Z
'------------------------------------------------------------'
' Program ANTY.BAS by David Rice, based upon the article in '
' July 1994 _Scientific_American_ called "The Ultimate in '
' Anty-Particles," page 104. '
' This program demonstrates how a complex structure (called '
' "highway building" in the article) may result from very '
' simple, basic natural laws. The laws for the ant are as '
' follows: '
' On a 320 X 200 grid, an ant moves one square in any '
' of four directions. If the square it moves on is '
' black, it paints it white and changes direction to '
' the left. If it lands on a white square, it paints '
' it black and changes direction to the right. '
'------------------------------------------------------------'
DECLARE SUB Completed (AntMovedCount%)
RANDOMIZE TIMER: SCREEN 1: CLS
AntX = (320 \ 2): AntY = (200 \ 2)
AntDirection = ((RND * 4) + 1): ' for random direction
AntDirection = 1: AntMovedCount% = 0
White = 16: Black = 0
'
DATA -1,0: ' east 1
DATA 0,-1: ' north 2
DATA 1,0: ' west 3
DATA 0,1: ' south 4
DIM Directions%(1 TO 4, 1 TO 2)
FOR A% = 1 TO 4
READ Directions%(A%, 1), Directions%(A%, 2)
NEXT
DO
AntX = AntX + Directions%(AntDirection, 1)
AntY = AntY + Directions%(AntDirection, 2)
IF AntX < 0 OR AntX > 319 THEN CALL Completed(AntMovedCount%)
IF AntY < 0 OR AntY > 199 THEN CALL Completed(AntMovedCount%)
AntMovedCount% = AntMovedCount% + 1
'
IF POINT(AntX, AntY) = Black THEN
PSET (AntX, AntY), White
SELECT CASE AntDirection
CASE 1: AntDirection = 4
CASE 2: AntDirection = 1
CASE 3: AntDirection = 2
CASE 4: AntDirection = 3
END SELECT
ELSE
PSET (AntX, AntY), Black
SELECT CASE AntDirection
CASE 1: AntDirection = 2
CASE 2: AntDirection = 3
CASE 3: AntDirection = 4
CASE 4: AntDirection = 1
END SELECT
END IF
LOOP
SUB Completed (AntMovedCount%)
BEEP
A$ = INPUT$(1)
SYSTEM
E-Mail Fredric L. Rice / The Skeptic Tank
|