'=========================================================================== ' Subject: RAINBOW CLOCK Date: 06-13-96 (19:09) ' Author: James McMurrin Code: QB, QBasic, PDS ' Origin: FidoNet QUIK_BAS Echo Packet: DATETIME.ABC '=========================================================================== DIM PAL(512) AS LONG, CO(7, 3), SC(2, 60), MC(2, 60), HQ(2, 60), HC(2, 12) SCREEN 13 RANDOMIZE TIMER PAL(0) = 0 'PAL(L) = A * 65536 + B * 256 + C B = 29.4: R = 52.333333# PAL(1) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = 2 FOR L = 1 TO 13 B = B - 2.1: R = R - 2 / 3 PAL(PC) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = PC + 1 NEXT L B = 0: R = 43 PAL(PC) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = PC + 1 FOR L = 1 TO 29 G = G + 1 / 3: R = R + 2 / 3 PAL(PC) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = PC + 1 NEXT L G = 10: R = 63 PAL(PC) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = PC + 1 FOR L = 1 TO 29 G = G + 53 / 30 PAL(PC) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = PC + 1 NEXT L G = 63 PAL(PC) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = PC + 1 FOR L = 1 TO 29 R = R - 2.1 PAL(PC) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = PC + 1 NEXT L R = 0 PAL(PC) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = PC + 1 FOR L = 1 TO 29 B = B + 2.1: G = G - 2.1 PAL(PC) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = PC + 1 NEXT L B = 63: G = 0 PAL(PC) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = PC + 1 FOR L = 1 TO 29 R = R + 2.1 PAL(PC) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = PC + 1 NEXT L R = 63 PAL(PC) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = PC + 1 FOR L = 1 TO 15 B = B - 2.1: R = R - 2 / 3 PAL(PC) = CINT(B) * 65536 + CINT(G) * 256 + CINT(R) PC = PC + 1 NEXT L PALETTE USING PAL(0) T$ = "RAINBOW CLOCK" B$ = "BY:úJAMES MCMURRIN" FOR L = 1 TO 40 LOCATE 1, L COLOR (L MOD 6) * 30 + 15 PRINT MID$(T$, L, 1); LOCATE 24, L PRINT MID$(B$, L, 1); NEXT L CIRCLE (160, 99), 119, 1 PAINT (160, 99), 1, 1 FOR L = 0 TO 359 STEP 6 IF (L / 30) = INT(L / 30) THEN FOR Q = -.5 TO .5 STEP .1 ROW = 99 + COS((L + Q) * 3.14159 / 180) * 100 COL = 160 + SIN((L + Q) * 3.14159 / 180) * 119 LINE (160, 100)-(COL, ROW), 0 NEXT Q 'ROW = 99 + COS(L * 3.14159 / 180) * 95 'COL = 160 + SIN(L * 3.14159 / 180) * 110 'PAINT (COL, ROW), 0, 0 ELSE ROW = 99 + COS(L * 3.14159 / 180) * 100 COL = 160 + SIN(L * 3.14159 / 180) * 119 BROW = 99 + COS(L * 3.14159 / 180) * 41 BCOL = 160 + SIN(L * 3.14159 / 180) * 49 LINE (BCOL, BROW)-(COL, ROW), 0 END IF NEXT L LINE (159, 99)-(159, 101), 0 CIRCLE (160, 99), 119, 0 CIRCLE (160, 99), 98, 0 CIRCLE (160, 99), 69, 0 CIRCLE (160, 99), 49, 0 FOR L = 3 TO 360 STEP 6 ROW = 99 - COS(L * 3.14159 / 180) * 95 SC(1, (L - 3) / 6 + 1) = ROW ROW = 99 - COS((L) * 3.14159 / 180) * 77 MC(1, (L - 3) / 6 + 1) = ROW ROW = 99 - COS((L) * 3.14159 / 180) * 55 HQ(1, (L - 3) / 6 + 1) = ROW COL = 160 + SIN(L * 3.14159 / 180) * 114 SC(2, (L - 3) / 6 + 1) = COL COL = 160 + SIN((L) * 3.14159 / 180) * 95 MC(2, (L - 3) / 6 + 1) = COL COL = 160 + SIN(L * 3.14159 / 180) * 65 HQ(2, (L - 3) / 6 + 1) = COL IF (L - 3) / 30 = INT((L - 3) / 30) THEN ROW = 99 - COS((L + 15) * 3.14159 / 180) * 25 COL = 160 - SIN((L + 15) * 3.14159 / 180) * 25 HC(1, (L - 3) / 30 + 1) = ROW HC(2, (L - 3) / 30 + 1) = COL CIRCLE (COL, ROW), 1, 8 END IF NEXT L OOFM = -1: OOHQ = -1: OOFH = -1 DO OT$ = TIME$ OFS = VAL(MID$(OT$, 7, 2)) OFM = VAL(MID$(OT$, 4, 2)) OFH = VAL(MID$(OT$, 1, 2)) OHQ = INT(OFM / 12) FOR L = 1 TO 60 PC = ((60 - OFS) + L - 1) MOD 60 + 1 PAINT (SC(2, L), SC(1, L)), PC, 0 NEXT L IF OFH <> OOFH THEN OOFH = OFH: OFS = OFH MOD 12 FOR L = 0 TO 11 PC = (11 - ((OFS + L) MOD 12)) * 5 + 121 PAINT (HC(2, L + 1), HC(1, L + 1)), PC, 0 NEXT L END IF IF OFM <> OOFM THEN OOFM = OFM FOR L = 1 TO 60 PC = ((60 - OFM) + L - 1) MOD 60 + 61 PAINT (MC(2, L), MC(1, L)), PC, 0 NEXT L END IF IF OHQ <> OOHQ THEN OOHQ = OHQ OS = (OFH MOD 12) * 5 + OHQ + 1 FOR L = 1 TO 60 PC = ((60 - OS) + L) MOD 60 + 121 PAINT (HQ(2, L), HQ(1, L)), PC, 0 NEXT L END IF DO: LOOP WHILE TIME$ = OT$ LOOP WHILE INKEY$ = ""