SCREEN 13 RANDOMIZE TIMER REM CONSTANTS AND DIMENSIONS DIM P(4, 150, 2) PI = 3.141592654# CX = 160 CY = 100 RM = 90 isStart = 0 4060 REM ART FORM 8 4070 N = INT(RND(1) * 2 + 2) 4080 HO = RND(1) * .8 + .2 4090 HI = RND(1) * HO + 1 - HO 4100 IF RND(1) - .5 > 0 THEN RO = 0: RI = 0: GOTO 4140 4110 RO = RND(1) * PI * 3 / 18 4120 IF N = 2 THEN RI = 0: IF RND(1) - .5 > 0 THEN RI = RO 4130 IF N = 3 THEN RI = RO / 2 4140 P = INT(RND(1) * 18 + 12) 4150 S = INT(P * (RND(1) * .5 + .25)) 4160 C = INT(RND(1) * 2 + 1) 4170 GOSUB 4670 4180 GOSUB 4770 4190 GOSUB 4880 4200 GOSUB chooseColor 4210 REM GRAPH ROUTINE 4220 PSET (P(1, 1, 1), P(1, 1, 2)): GOSUB Pause 4230 I = 1: L = 1: J = 1 4240 FOR K = 1 TO P + 1 4250 I = I + L: IF I > N + 1 THEN L = -1: I = I - 2 4260 J = J + S: IF J > P THEN J = J - P 4270 LINE -(P(I, J, 1), P(I, J, 2)): GOSUB Pause 4280 4290 IF I <> 1 GOTO 4250 4300 L = 1: NEXT K 4310 GOTO 4060 4660 REM INSURE THAT NO LINE DUPLICATION OCCURS 4670 I = 1: J = 1 4680 I = I + 1 4690 FOR K = 1 TO 2 * N 4700 J = J + S: IF J > P THEN J = J - P 4710 NEXT K 4720 IF I < P AND J = 1 THEN P = P + 1: GOTO 4670 4730 4740 IF I < P GOTO 4680 4750 RETURN 4760 REM DEFINE OUTSIDE HOOPS 4770 IF C = 1 THEN IX = 90: IY = 274: J = 1: K = 2: Y = CY 4780 IF C = 2 THEN IX = 130: IY = 186: J = 2: K = 1: Y = CX 4790 HO = HO * IX: RO = HO * SIN(RO): IX = 5 + RO: IY = IY - RO 4800 L = N + 1: IA = 2 * PI / P 4810 FOR I = 1 TO P: AN = I * IA: SA = SIN(AN): CA = COS(AN) 4820 P(1, I, J) = IX + RO * CA: P(1, I, K) = Y + HO * SA 4830 P(L, I, J) = IY + RO * CA: P(L, I, K) = P(1, I, K) 4840 4850 NEXT I 4860 RETURN 4870 REM DEFINE INSIDE HOOP(S) 4880 PX = IY - IX: IA = 2 * PI / P 4890 IF C = 1 THEN IX = 90: IY = CX: J = 1: K = 2: Y = CY 4900 IF C = 2 THEN IX = 130: IY = CY: J = 2: K = 1: Y = CX 4910 HI = HI * IX: RI = HI * SIN(RI) 4920 IF N = 1 THEN PX = RND(1) * PX / 6 + PX / 6: IX = IY - PX: IY = IY + PX: L = 3: M = 4 4930 IF N = 2 THEN IX = IY: L = 2: M = 4 4940 IF N = 3 THEN PX = (RND(1) * .8 - .4) * PX: IX = IY - PX: IY = IY + PX: L = 2: M = 3 4950 FOR I = 1 TO P: AN = I * IA: SA = SIN(AN): CA = COS(AN) 4960 P(L, I, J) = IX + RI * CA: P(L, I, K) = Y + HI * SA 4970 P(M, I, J) = IY + RI * CA: P(M, I, K) = P(L, I, K) 4980 NEXT I: RETURN Pause: FOR j1 = 1 TO 10000 IF INKEY$ <> "" THEN GOTO endProgram END IF NEXT RETURN chooseColor: IF RND - .5 > 0 THEN COLOR 7 ELSE IF RND - .5 > 0 OR isStart = 0 THEN COLOR 4 ELSE COLOR 0 END IF END IF 'CLS isStart = 1 RETURN endProgram: COLOR 7 END ' TODO: ' remove linenumbers ' more colors