'=========================================================================== ' Subject: BOUNCING FACES Date: 02-12-97 (15:23) ' Author: Nick Kochakian Code: QB, QBasic, PDS ' Origin: NickK@worldnet.att.net Packet: MISC.ABC '=========================================================================== '---------------------------------------------------------------------------- 'Face bounce ' '1/20/97 - 2/12/97 '1997 By: - Nick Kochakian - ' ' 'My e-mail: nickK@worldnet.att.net '---------------------------------------------------------------------------- DEFINT A-Z CLS RANDOMIZE TIMER DELY = 999'The delay FACES = 50 'The number of faces on the screen at a time fx = FACES 'X location fy = FACES 'Y location fcf = FACES 'Foreground color fcb = FACES 'Background color FACC = FACES 'Type of face dir = FACES 'Face direction DIM x(fx) DIM y(fy) DIM cf(fcf) DIM cb(fcb) DIM FAC(FACC) DIM d(dir) fx = 1 fy = 1 fcf = 1 fcb = 1 FACC = 1 dir = 1 'Place the faces in their random spots for the first time FOR I = 1 TO FACES x(fx) = INT(RND * 23) + 1 y(fy) = INT(RND * 80) + 1 cf(fcf) = INT(RND * 15) + 1 cb(fcb) = INT(RND * 7) + 1 FAC(FACC) = INT(RND * 2) + 1 IF FAC(FACC) < 1 THEN FAC(FACC) = 1 d(dir) = INT(RND * 8) + 1 LOCATE x(fx), y(fy): COLOR cf(fcf), cb(fcb): PRINT CHR$(1) fx = fx + 1 fy = fy + 1 fcf = fcf + 1 fcb = fcb + 1 dir = dir + 1 FACC = FACC + 1 NEXT I fx = 1 fy = 1 fcf = 1 fcb = 1 FACC = 1 dir = 1 'The main loop DO LOCATE x(fx), y(fy): COLOR 0, 0: PRINT CHR$(FAC(FACC)): COLOR cf(fcf), cb(fcb) IF d(dir) = 1 THEN x(fx) = x(fx) - 1 IF d(dir) = 2 THEN y(fy) = y(fy) + 1: x(fx) = x(fx) + 1 IF d(dir) = 3 THEN x(fx) = x(fx) + 1 IF d(dir) = 4 THEN y(fy) = y(fy) - 1 IF d(dir) = 5 THEN y(fy) = y(fy) - 1: x(fx) = x(fx) - 1 IF d(dir) = 6 THEN y(fy) = y(fy) + 1: x(fx) = x(fx) - 1 IF d(dir) = 7 THEN y(fy) = y(fy) - 1: x(fx) = x(fx) + 1 IF d(dir) = 8 THEN y(fy) = y(fy) + 1 IF x(fx) < 1 THEN x(fx) = 1: GOSUB RERAND: IF x(fx) > 23 THEN x(fx) = 23: GOSUB RERAND: IF y(fy) < 1 THEN y(fy) = 1: GOSUB RERAND: IF y(fy) > 80 THEN y(fy) = 80: GOSUB RERAND: LOCATE x(fx), y(fy): COLOR cf(fcf), cb(fcb): PRINT CHR$(FAC(FACC)) fx = fx + 1 fy = fy + 1 fcf = fcf + 1 fcb = fcb + 1 FACC = FACC + 1 dir = dir + 1 FOR I = 1 TO DELY NEXT I IF fx > FACES THEN fx = 1 IF fy > FACES THEN fy = 1 IF fcf > FACES THEN fcf = 1 IF fcb > FACES THEN fcb = 1 IF FACC > FACES THEN FACC = 1 IF dir > FACES THEN dir = 1 LOOP UNTIL INKEY$ <> "" END RERAND: d(dir) = INT(RND * 8) + 1 IF d(dir) = 1 THEN d(dir) = 3 IF d(dir) = 2 THEN d(dir) = 5 IF d(dir) = 4 THEN d(dir) = 8 IF d(dir) = 6 THEN d(dir) = 7 IF d(dir) = 8 THEN d(dir) = 4 IF d(dir) = 7 THEN d(dir) = 6 RETURN