主题:屏幕页显示技术的再研究
下面的程序在纯DOS中用QB运行发现一个有趣的问题:如果在QB中加载UCDOS汉字显示系统,运行程序时,移动小球时画面中的文字闪烁,不能与动画同步显示。在QB中不加载UCDOS汉字显示系统,移动小球时虽然画面中的文字显示是乱码,但这一条乱码能够与动画同步显示,不闪烁。这是什么原因,请各位高手指点!!!
'这是用屏幕页技术显示的画面,左右箭头可移动小球
SCREEN 9, , 1, 0 '设定1页为非当前页,0页为当前页
LET y = 300
DO
CLS 1 '1页清屏
CIRCLE (y, 150), 50, 14 '画小球
LINE (50, 190)-(550, 190), 12
LINE (50, 110)-(550, 110), 12
LOCATE 6, 30
COLOR 7
PRINT "这是用屏幕面技术显示的画面"
PCOPY 1, 0 '将1页的内容复制到0页,实现动画
DO
LET k$ = INKEY$
LOOP UNTIL k$ = CHR$(27) OR k$ = CHR$(0) + CHR$(77) OR k$ = CHR$(0) + CHR$(75)
SELECT CASE k$
CASE CHR$(27)
EXIT DO
CASE CHR$(0) + CHR$(77) '右移小球
LET y = y + 10
IF y > 500 THEN LET y = 110
CASE CHR$(0) + CHR$(75) '左移小球
LET y = y - 10
IF y < 110 THEN LET y = 500
END SELECT
LOOP
END
'这是用屏幕页技术显示的画面,左右箭头可移动小球
SCREEN 9, , 1, 0 '设定1页为非当前页,0页为当前页
LET y = 300
DO
CLS 1 '1页清屏
CIRCLE (y, 150), 50, 14 '画小球
LINE (50, 190)-(550, 190), 12
LINE (50, 110)-(550, 110), 12
LOCATE 6, 30
COLOR 7
PRINT "这是用屏幕面技术显示的画面"
PCOPY 1, 0 '将1页的内容复制到0页,实现动画
DO
LET k$ = INKEY$
LOOP UNTIL k$ = CHR$(27) OR k$ = CHR$(0) + CHR$(77) OR k$ = CHR$(0) + CHR$(75)
SELECT CASE k$
CASE CHR$(27)
EXIT DO
CASE CHR$(0) + CHR$(77) '右移小球
LET y = y + 10
IF y > 500 THEN LET y = 110
CASE CHR$(0) + CHR$(75) '左移小球
LET y = y - 10
IF y < 110 THEN LET y = 500
END SELECT
LOOP
END