回 帖 发 新 帖 刷新版面

主题:请问为什么鼠标移走后会有残留的图形呢?

DECLARE SUB down ()
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
头脑不行了,没有细写,按到方块的外面会出错,按右键退出,还有一个问题不明白,为什么鼠标移走时会残留图形呢。

回复列表 (共10个回复)

沙发

你的interrupt子程序怎么又没了???

板凳

SUB mouse
inreg.ax = 1
CALL interrupt(&H33, inreg, outreg)
inreg.ax = 3
outreg.bx = 0
DO

哪有  interrupt 这个sub

3 楼

上次MOZ不是说了吗,INTERRUPT是QB带的调用中断的一个函数,你在QB的帮助里能找到CALL INTERRUPT,你们不是考试吗,考得怎么样

4 楼

楼上,今天下午考,拜托

5 楼

...

6 楼

关键是在帮助里怎么找CALL INTERRUPT?在哪里?
进入帮助我当然会了,我说的是CALL INTERRUPT在帮助的什么地方???

7 楼

...

8 楼

你输入INTERRUPT再右击就进入了

9 楼

没听明白

10 楼

[quote]关键是在帮助里怎么找CALL INTERRUPT?在哪里?
进入帮助我当然会了,我说的是CALL INTERRUPT在帮助的什么地方???[/quote]
进入帮助后,输入开头字母(c),自然可以找到

我来回复

您尚未登录,请登录后再回复。点此登录或注册