' Super Bouncer ' v1.0 ' ' ' ' By: Adam Smith ' ' ' Mimics that favorite screen saver we all know and love... ' ' except that this one can have as many lines as you want! ' ' ' ' ' ' ' ' ' ' ' SCREEN 12 ON ERROR GOTO fmak OPEN "SUPERB.INI" FOR INPUT AS #1 INPUT #1, NumLines, LineLength CLOSE KEY 1, "Ø" ON KEY(1) GOSUB cfg KEY(1) ON COLOR 15: PRINT "[F1] configures...": SLEEP 1 DIM LineStor(1 TO NumLines, 1 TO 4, 1 TO INT(LineLength)) DIM SettLoc(1 TO NumLines, 1 TO 4) DIM SettVel(1 TO NumLines, 1 TO 4) DIM LineCounter(1 TO NumLines) DIM LineColors(1 TO NumLines) CLS RANDOMIZE TIMER FOR i = 1 TO NumLines SettLoc(i, 1) = 320 'X SettLoc(i, 2) = 240 'Y SettLoc(i, 3) = 320 'X2 SettLoc(i, 4) = 240 'Y2 SettVel(i, 1) = RND * 20 - 10 'XV SettVel(i, 2) = RND * 20 - 10 'YV SettVel(i, 3) = RND * 20 - 10 'XV2 SettVel(i, 4) = RND * 20 - 10 'YV2 LineColors(i) = INT(RND * 15) + 1 NEXT DO FOR i = 1 TO NumLines RANDOMIZE TIMER FOR j = 1 TO 4 SettLoc(i, j) = SettLoc(i, j) + SettVel(i, j) NEXT j IF SettLoc(i, 1) < 0 THEN SettVel(i, 1) = RND * 10: SettLoc(i, 1) = 0: SettVel(i, 2) = RND * 20 - 10 IF SettLoc(i, 1) > 640 THEN SettVel(i, 1) = -(RND * 10): SettLoc(i, 1) = 640: SettVel(i, 2) = RND * 20 - 10 IF SettLoc(i, 2) < 0 THEN SettVel(i, 2) = RND * 10: SettLoc(i, 2) = 0: SettVel(i, 1) = RND * 20 - 10 IF SettLoc(i, 2) > 480 THEN SettVel(i, 2) = -(RND * 10): SettLoc(i, 2) = 480: SettVel(i, 1) = RND * 20 - 10 IF SettLoc(i, 3) < 0 THEN SettVel(i, 3) = RND * 10: SettLoc(i, 3) = 0: SettVel(i, 4) = RND * 20 - 10 IF SettLoc(i, 3) > 640 THEN SettVel(i, 3) = -(RND * 10): SettLoc(i, 3) = 640: SettVel(i, 4) = RND * 20 - 10 IF SettLoc(i, 4) < 0 THEN SettVel(i, 4) = RND * 10: SettLoc(i, 4) = 0: SettVel(i, 3) = RND * 20 - 10 IF SettLoc(i, 4) > 480 THEN SettVel(i, 4) = -(RND * 10): SettLoc(i, 4) = 480: SettVel(i, 3) = RND * 20 - 10 LINE (SettLoc(i, 1), SettLoc(i, 2))-(SettLoc(i, 3), SettLoc(i, 4)), LineColors(i) LineCounter(i) = LineCounter(i) + 1 IF LineCounter(i) > LineLength THEN LineCounter(i) = 1 zz = LineCounter(i) + 1 IF zz > LineLength THEN zz = 1 FOR j = 1 TO 4 LineStor(i, j, LineCounter(i)) = SettLoc(i, j) NEXT j LINE (LineStor(i, 1, zz), LineStor(i, 2, zz))-(LineStor(i, 3, zz), LineStor(i, 4, zz)), 0 FOR tyt = 1 TO 1000 NEXT tyt NEXT i LOOP UNTIL INKEY$ <> "" SYSTEM cfg: CLS INPUT "Number of Lines"; NumLines IF NumLines < 1 THEN NumLines = 1: PRINT "Number of Lines adjusted to 1." IF NumLines > 10 THEN NumLines = 10: PRINT "Number of Lines adjusted to 10." PRINT "Number of trailing lines"; INPUT LineLength IF LineLength < 1 THEN LineLength = 1: PRINT "Line Length adjusted to 1." IF LineLength > 300 THEN LineLength = 300: PRINT "Line Length adjusted to 300." OPEN "SUPERB.INI" FOR OUTPUT AS #1 WRITE #1, NumLines, LineLength CLOSE CLS RUN RETURN fmak: IF ERR = 53 THEN OPEN "SUPERB.INI" FOR OUTPUT AS #1 WRITE #1, 3, 25 CLOSE ELSE PRINT "Unexpected error... oops!": PRINT "ERR="; ERR PRINT "Reinitialize? (Y/N)" DO a$ = UCASE$(INKEY$) LOOP UNTIL (a$ = "Y") OR (a$ = "N") IF a$ = "Y" THEN KILL "SUPERB.INI": RUN SYSTEM END IF RESUME