主题:请问为什么鼠标移走后会有残留的图形呢?
DECLARE SUB clearpoint ()
DECLARE SUB getarrypos ()
DECLARE SUB mouse ()
DECLARE SUB arrytoscreen ()
DECLARE SUB ini ()
DECLARE SUB mainframe ()
SCREEN 12
CALL mainframe
TYPE regtype
ax AS INTEGER
bx AS INTEGER
cx AS INTEGER
dx AS INTEGER
bp AS INTEGER
si AS INTEGER
di AS INTEGER
flag AS INTEGER
END TYPE
DIM SHARED boxarry(-1 TO 10, -1 TO 19), inreg AS regtype, outreg AS regtype, arryposx, arryposy
CALL ini
CALL arrytoscreen
DO UNTIL outreg.bx = 2
CALL mouse
CALL getarrypos
CALL clearpoint
CALL down
CALL arrytoscreen
LOOP
END
SUB arrytoscreen
FOR x = 0 TO 9
FOR y = 0 TO 19
IF boxarry(x, y) = 1 THEN
CIRCLE (x * 20 + 110, y * 20 + 30), 9, 11
PAINT (x * 20 + 110, y * 20 + 30), 11
ELSEIF boxarry(x, y) = 2 THEN
CIRCLE (x * 20 + 110, y * 20 + 30), 9, 12
PAINT (x * 20 + 110, y * 20 + 30), 12
ELSEIF boxarry(x, y) = 3 THEN
CIRCLE (x * 20 + 110, y * 20 + 30), 9, 13
PAINT (x * 20 + 110, y * 20 + 30), 13
ELSEIF boxarry(x, y) = 4 THEN
CIRCLE (x * 20 + 110, y * 20 + 30), 9, 14
PAINT (x * 20 + 110, y * 20 + 30), 14
ELSEIF boxarry(x, y) = 0 THEN
CIRCLE (x * 20 + 110, y * 20 + 30), 9, 0
PAINT (x * 20 + 110, y * 20 + 30), 0
END IF
NEXT y
NEXT x
END SUB
SUB clearpoint
temp = boxarry(arryposx, arryposy)
IF temp = boxarry(arryposx, arryposy - 1) THEN
boxarry(arryposx, arryposy) = 0
boxarry(arryposx, arryposy - 1) = 0
END IF
IF temp = boxarry(arryposx - 1, arryposy) THEN
boxarry(arryposx, arryposy) = 0
boxarry(arryposx - 1, arryposy) = 0
END IF
IF temp = boxarry(arryposx + 1, arryposy) THEN
boxarry(arryposx, arryposy) = 0
boxarry(arryposx + 1, arryposy) = 0
END IF
END SUB
SUB down
FOR i = 19 TO 1 STEP -1
FOR j = 0 TO 9
IF boxarry(j, i) = 0 THEN
SWAP boxarry(j, i), boxarry(j, i - 1)
END IF
NEXT j
NEXT i
END SUB
SUB fillpoint
END SUB
SUB getarrypos
arryposx = (outreg.cx - 100) \ 20
arryposy = (outreg.dx - 20) \ 20
LOCATE 1, 1
PRINT arryposx; arryposy; boxarry(arryposx, arryposy)
END SUB
SUB ini
RANDOMIZE TIMER
FOR x = 0 TO 9
FOR y = 0 TO 19
boxarry(x, y) = INT((RND * 4)) + 1
NEXT y
NEXT x
END SUB
SUB mainframe
LINE (99, 19)-(301, 421), 4, B
END SUB
SUB mouse
inreg.ax = 1
CALL interrupt(&H33, inreg, outreg)
inreg.ax = 3
outreg.bx = 0
DO
CALL interrupt(&H33, inreg, outreg)
LOOP UNTIL outreg.bx = 1 OR outreg.bx = 2
END SUB
头脑不行了,没有细写,按到方块的外面会出错,按右键退出,还有一个问题不明白,为什么鼠标移走时会残留图形呢。