QB&MOUSE2.BAS OpeningScreen: COLOR 7, 1: CLS : c1 = 5: c2 = 3: s$ = " K Q B N R P " FOR i = 2 TO 17: COLOR 7, 1: LOCATE i, 10 IF i MOD 2 = 1 THEN LOCATE , 7: PRINT 9 - i \ 2; 'Print Row Numbers FOR j = 1 TO 8: COLOR c1, c2: PRINT " "; : SWAP c1, c2 'Squares NEXT j: IF i MOD 2 = 1 THEN SWAP c1, c2 'For Next Row Of Squares NEXT i: COLOR 7, 1: LOCATE 18, 12 PRINT "a b c d e f g h": PRINT 'Print Prompts COLOR 5, 7: LOCATE , 12: PRINT s$; : COLOR , 0: PRINT s$: COLOR 7, 1 PRINT " SingleClick, Left=Select Piece, Right=Put Piece(s) On Board" PRINT " Drag A Piece To Move It (Either Left Or Right Drag Will Do)" PRINT " DoubleClick, Left ON BOARD=Save, BELOW BOARD=Renew,"; PRINT " Right OR Esc=End Program" PRINT " Press Alt+Enter To Switch Between Screens"; : COLOR 5 DIM b$(3 TO 17, 12 TO 47), c(3 TO 17, 12 TO 47) click = 1: GOSUB DoubleClick 'Save Blank Screen FOR j = 11 TO 46 STEP 5: s$ = " " + MID$(" RNBQKBNR", j \ 5, 1) + " " COLOR , 0: LOCATE 3, j: PRINT s$; : LOCATE 5, j: PRINT " P "; COLOR , 7: LOCATE 15, j: PRINT " P "; : LOCATE 17, j: PRINT s$; NEXT j 'Display Pieces In Position For Start Of Game RETURN SingleClick: 'Start Here With presses=1 releases=1 IF click = 1 THEN 'Single Left Click Gets A Character From Row 20,.. col = ((cx \ 8 + 1) \ 3) * 3 + 1 '&.. Columns 13, 16, 19,-,46 cha$ = CHR$(SCREEN(20, col)) 'cha$ May Be A Letter Or A Space c1 = SCREEN(20, col, 1) \ 16 'Save Background Colour Of Letter ELSEIF click = 2 THEN 'Single Right Click Puts Piece On Chess Board GOSUB RowCol: GOSUB Test: IF t$ = "No" THEN RETURN 'Fails Test COLOR , c1: LOCATE row, col - 1: PRINT " "; cha$; " "; 'Paste Piece END IF RETURN DoubleClick: row = (dx \ 8 + 1) 'Start Here With presses=2 releases=2 IF click = 1 THEN 'Double Left Click FOR i = 3 TO 17 STEP 2: FOR j = 12 TO 47 STEP 5 'Step To All Squares IF row < 18 THEN 'Double Left Click On Board=Save All Squares b$(i, j) = CHR$(SCREEN(i, j)) 'Save All Characters c(i, j) = SCREEN(i, j, 1) \ 16 'Save All Background Colours ELSE 'Double Left Click Below Board=Restore Saved Squares COLOR , c(i, j): LOCATE i, j - 1: PRINT " "; b$(i, j); " "; END IF: NEXT j: NEXT i END IF IF click = 2 THEN press$ = CHR$(27) 'Double Right Click Ends Program RETURN DragMouseCursor: 'Start Here With presses=1 releases=0 GOSUB RowCol: cha$ = CHR$(SCREEN(row, col)) 'Piece At Start Of Drag GOSUB Test: IF t$ = "No" THEN RETURN 'Fails Test c1 = SCREEN(row, col, 1) \ 16 'Save Color Of Piece At Start Of Drag i = row: j = col 'Save Position Of Piece At Start Of Drag CALL AssemblyCode(1, 0, 0, 0): LOCATE , , 1, 0, 7 'Show Both Cursors WHILE releases < 1 'Wait For Mouse Button Release QB&MOUSE2.BAS (end) CALL AssemblyCode(3, 0, cx, dx) 'Get cx & dx During Drag GOSUB RowCol: LOCATE row, col 'Text Cursor Shows Position For Drop bx = click - 1: CALL AssemblyCode(6, bx, 0, 0): releases = bx WEND 'Exit Loop When Button Released At End Of Drag CALL AssemblyCode(2, 0, 0, 0): LOCATE , , 0 'Hide Both Cursors GOSUB Test: IF t$ = "No" THEN RETURN 'Fails Test c2 = SCREEN(row, col, 1) \ 16: IF c1 = c2 THEN RETURN 'Same Colour COLOR , c1: LOCATE row, col - 1: PRINT " "; cha$; " "; 'Paste Piece COLOR , SCREEN(i, j - 2, 1) \ 16 'Colour Of Square At Start Of Drag LOCATE i, j - 1: PRINT " "; 'Blank Out Square At Start Of Drag RETURN RowCol: row = ((dx \ 8 + 1) \ 2) * 2 + 1 'Chess Pieces In Rows 3, 5, 7 etc.. col = ((cx \ 8 + 1) \ 5) * 5 + 2 '&.. In Columns 12, 17, 22 etc RETURN Test: 't$="No" If cha$ Not K Q B N R P Or row &/Or col Off Chess Board t$ = "Yes": IF cha$ < "B" OR cha$ > "R" THEN t$ = "No" IF row < 2 OR row > 17 OR col < 10 OR col > 49 THEN t$ = "No" RETURN