SUBROUTINE PDLMOV # # THIS SUBROUTINE CONTROLS THE MOTION OF THE PLAYER'S PADDLE. # IMPLICIT INTEGER (A-Z) INCLUDE SY:UVT100.DAT INCLUDE SY:BRKOUT.CMN # # NEWDIR IS SET BY THE UNSOLICITED INPUT AST ROUTINE, INPAST, # WHENEVER THE PLAYER HITS A KEY ON THE KEYBOARD. IF NONZERO, # IT INDICATES THE DIRECTION THE PADDLE IS TO BE MOVED. # IF (NEWDIR > 0) [ IF (NEWDIR == LEFT) #MOVE TO LEFT PDLY = PDLY - 1 ELSE IF (NEWDIR == RIGHT) #MOVE TO RIGHT PDLY = PDLY + 1 NEWDIR = 0 #CLEAR MOTION INDICATOR IF (PDLY < LMAR) [ #DO NOT MOVE OUT OF BOUNDS PDLY = LMAR RETURN ] ELSE IF (PDLY+2 > RMAR) [ PDLY = RMAR - 2 RETURN ] # # DISPLAY PADDLE AT NEW LOCATION. THE PADDLE IS THREE COLUMNS WIDE. # TO ELIMINATE THE NEED TO ERASE THE OLD PADDLE LOCATION, FIVE # CHARACTERS, INCLUDING A SPACE ON EACH END, ARE OUTPUT. HOWEVER, # IF THE PADDLE IS AT THE EDGE OF THE PLAYING AREA, THE LEFT OR # RIGHT SPACE CANNOT BE DISPLAYED. # IF (PDLY > LMAR .AND. PDLY+2 < RMAR) [ CALL UVT100(CUP,BMAR,PDLY-1) CALL GETADR(PRL,PDLCHR) PRL(2) = 5 ] ELSE [ IF (PDLY == LMAR) [ CALL UVT100(CUP,BMAR,LMAR) CALL GETADR(PRL,PDLCHR(2)) ] ELSE [ CALL UVT100(CUP,BMAR,RMAR-3) CALL GETADR(PRL,PDLCHR) ] PRL(2) = 4 ] CALL WTQIO(IOWVB,5,2,,,PRL) PRL(2) = 1 ] ELSE #IF NO PADDLE MOTION, HOME CURSOR CALL UVT100(CUP,1,1) #TO ELIMINATE ANNOYING CURSOR FLICKER RETURN #AROUND BALL. END