REM set screen, set random, dimension wipe-pointsvariables CLS : SCREEN 12: CLS : RANDOMIZE TIMER DIM WX(4, 15), WY(4, 15) DIM WXX(4, 15), WYY(4, 15) REM set various variables R = 5: RR = 4: Z = 2: ZZ = 3 MAX1 = INT(RND * 50) + 50: MAX2 = INT(RND * 75) + 75 COLOR1 = INT(RND * 7) + 9: COLOR2 = INT(RND * 7) + 9 REM set number of lines in polygon 1 (max 15) W = 15 REM set number of lines in polygon 2 (max 15) WW = 7 REM calculate vert. & horz. steps for all cornerpoints FOR I = 1 TO 4 STAPX(I) = INT(RND * R) + Z: STAPY(I) = INT(RND * R) + Z X(I) = INT(RND * 640): Y(I) = INT(RND * 480) STAPXX(I) = INT(RND * RR) + ZZ: STAPYY(I) = INT(RND * RR) + ZZ XX(I) = INT(RND * 640): YY(I) = INT(RND * 480) NEXT MAINLOOP: LINE (X(1), Y(1))-(X(2), Y(2)), COLOR1 LINE (X(2), Y(2))-(X(3), Y(3)), COLOR1 LINE (X(3), Y(3))-(X(4), Y(4)), COLOR1 LINE (X(4), Y(4))-(X(1), Y(1)), COLOR1 LINE (XX(1), YY(1))-(XX(2), YY(2)), COLOR2 LINE (XX(2), YY(2))-(XX(3), YY(3)), COLOR2 LINE (XX(3), YY(3))-(XX(4), YY(4)), COLOR2 LINE (XX(4), YY(4))-(XX(1), YY(1)), COLOR2 REM swap all cornerpoints 1 step forward FOR J = 1 TO 4 FOR I = 15 TO 2 STEP -1 WX(J, I) = WX(J, I - 1) WY(J, I) = WY(J, I - 1) WXX(J, I) = WXX(J, I - 1) WYY(J, I) = WYY(J, I - 1) NEXT REM pick new corners for polygon 1 WX(J, 1) = X(J): X(J) = X(J) + STAPX(J) IF X(J) > 639 THEN STAPX(J) = -(INT(RND * R) + Z) IF X(J) < 1 THEN STAPX(J) = INT(RND * R) + Z WY(J, 1) = Y(J): Y(J) = Y(J) + STAPY(J) IF Y(J) > 479 THEN STAPY(J) = -(INT(RND * R) + Z) IF Y(J) < 1 THEN STAPY(J) = INT(RND * R) + Z REM pick new corners for polygon 2 WXX(J, 1) = XX(J): XX(J) = XX(J) + STAPXX(J) IF XX(J) > 639 THEN STAPXX(J) = -(INT(RND * RR) + XZ) IF XX(J) < 1 THEN STAPXX(J) = INT(RND * RR) + ZZ WYY(J, 1) = YY(J): YY(J) = YY(J) + STAPYY(J) IF YY(J) > 479 THEN STAPYY(J) = -(INT(RND * RR) + ZZ) IF YY(J) < 1 THEN STAPYY(J) = INT(RND * RR) + ZZ NEXT REM wipe last polygon 1 LINE (WX(1, W), WY(1, W))-(WX(2, W), WY(2, W)), 0 LINE (WX(2, W), WY(2, W))-(WX(3, W), WY(3, W)), 0 LINE (WX(3, W), WY(3, W))-(WX(4, W), WY(4, W)), 0 LINE (WX(4, W), WY(4, W))-(WX(1, W), WY(1, W)), 0 REM wipe last polygon 2 LINE (WXX(1, WW), WYY(1, WW))-(WXX(2, WW), WYY(2, WW)), 0 LINE (WXX(2, WW), WYY(2, WW))-(WXX(3, WW), WYY(3, WW)), 0 LINE (WXX(3, WW), WYY(3, WW))-(WXX(4, WW), WYY(4, WW)), 0 LINE (WXX(4, WW), WYY(4, WW))-(WXX(1, WW), WYY(1, WW)), 0 GOSUB COUNTER GOTO MAINLOOP COUNTER: COUNTER1 = COUNTER1 + 1: IF COUNTER1 = MAX1 THEN GOSUB SETCOLOR1 COUNTER2 = COUNTER2 + 1: IF COUNTER2 = MAX2 THEN GOSUB SETCOLOR2 I$ = INKEY$: IF I$ <> "" THEN SCREEN 0: CLS : END RETURN SETCOLOR1: COLOR1 = INT(RND * 7) + 9 IF COLOR1 = COLOR2 THEN GOTO SETCOLOR1 MAX1 = INT(RND * 50) + 50 COUNTER1 = 1: RETURN SETCOLOR2: COLOR2 = INT(RND * 7) + 9 IF COLOR2 = COLOR1 THEN GOTO SETCOLOR2 MAX2 = INT(RND * 75) + 75 COUNTER2 = 1: RETURN