' ****** START INCLUDE Polygon Macro Support ****** DIM AS INTEGER StartX, StartY, PreviousX, PreviousY, LeftMostX, LeftMostY, LeftMostNear1X, LeftMostNear1Y, LeftMostNear2X, LeftMostNear2Y, LeftMostBuddyX, LeftMostBuddyY SUB DoPostLine() IF POINT(0) < LeftMostX THEN LeftMostX = POINT(0) : LeftMostY = POINT(1) : LeftMostNear1X = PreviousX : LeftMostNear1Y = PreviousY : LeftMostNear2X = -1 : LeftMostNear2Y = -1 ELSE IF LeftMostNear2X = -1 THEN LeftMostNear2X = POINT(0) : LeftMostNear2Y = POINT(1) END IF PreviousX = POINT(0): PreviousY = POINT(1) END SUB ' ****** END INCLUDE Polygon Macro Support ****** moving_x = 6 adj_x = 5 i = 0 DO CLS : b = INT(RND*15) + 1 : f = INT(RND*15) + 1 PSET (moving_x,10) : StartX = POINT(0) : StartY = POINT(1) : LeftMostX = POINT(0) : LeftMostY = POINT(1) : LeftMostNear1X = -1 : LeftMostNear1Y = -1 : LeftMostNear2X = -1 : LeftMostNear2Y = -1 : PreviousX = POINT(0) : PreviousY = POINT(1) LINE - (500,100),b : DoPostLine() LINE - (550, 120),b : DoPostLine() LINE - (30,170),b : DoPostLine() IF LeftMostNear1X = -1 THEN LeftMostNear1X = POINT(0) : LeftMostNear1Y = POINT(1) LINE - (StartX, StartY) ,b : DoPostLine() IF LeftMostNear1Y < LeftMostNear2Y THEN LeftMostBuddyX = LeftMostNear1X : LeftMostBuddyY = LeftMostNear1Y ELSE LeftMostBuddyX = LeftMostNear2X : LeftMostBuddyY = LeftMostNear2Y END IF PAINT ( (LeftMostX + LeftMostBuddyX) / 2 + IFF(LeftMostY>LeftMostBuddyY,1,-1) , (LeftMostY + LeftMostBuddyY) / 2 + 1 ),f,b CIRCLE ( (LeftMostX + LeftMostBuddyX) / 2 + IFF(LeftMostY>LeftMostBuddyY,1,-1) , (LeftMostY + LeftMostBuddyY) / 2 + 1 ),4,12 IF moving_x > 634 OR moving_x < 6 THEN adj_x = - adj_x moving_x = moving_x + adj_x i = i + 1 _DELAY 0.25 LOOP