应用QBASIC编制动画一例

Author: 刘树玉 Date: 1997-01-01

  在QBASIC中我们可以利用GET和PUT的存储功能来实现动画。
  GET和PUT的应用格式如下:
  GET (X1,Y1)-(X2,Y2),数组名
  PUT (X,Y),数组名[,粘贴格式]
  其中粘贴方式有如下五种方式:
  PSET:照原样粘贴
  PRESET:原图取反后粘贴
  AND:原图与现图作与运算后,保留共同部分,再显示
  OR:原图与现图作或运算后,保留现图(背景),再显示
  XOR:原图与现图作异或运算后,清除原图,保留现图,再显示
  其余参数的设置参见有关书籍,在此不再详述。
  假如有一字符串“清屏模拟显示”,从屏幕的左端显示出来,逐渐向右移动,到屏幕右端后弹回,又向左移动,来回循环移动,每循环一次,屏幕的背景变换一次颜色,颜色循环14次以后,程序停止运行。操作步骤如下:
  1.定义数组的IG(N)为整数型。
  2.利用UCDOS的特殊显示功能造出一个40×40点阵的汉字串,并存储到数组IG(N)和文件F.DAT中,以备其它程序调用。
  3.读数据文件F.DAT到数组IG(N)中,如果在同一个程序中有步骤2的话,则可以省略这一步。
  4.设置循环体,改变背景的颜色。
  程序清单如下:
  N=3184 “定义数组的大小”
  DIMIG(1 to N) AS INTEGER “定义数组”
  OPEN "LPT3:" FOR OUTPUT AS #2
  LOCATE 10,10:PRINT #2,CHR$(14);“[{-160|70@40,40)1(4清屏模拟显示}
  CLOSE #2
  GET(160,72)-(499,108),IG “读取数据到数组IG中”
  PUT(100,200),IG
  OPEN "F.DAT" FOR OUTPUT AS #2 “将数组写到磁盘文件F.DAT中”
  FOR I=1 TO N
  PRINT #2,IG(I)
  NEXT I
  CLOSE #2
  OPEN "F.DAT" FOR INPUT AS #1 “打开数据文件F.DAT”
  FOR I=1 TO N
  INPUT #1,IG(I)“读数据到数组IG中”
  NEXT I
  CLOSE #1
  FOR C=1 TO 14 “设置颜色循环体”
  PAINT (10,10),C “给屏幕着底色”
  X=0
  FOR I=1 TO 298 “从左到右显示”
  X=X+1
  PUT (X,100),IG,PSET
  NEXT I
  X=298
  FOR I=310 TO 14 STEP -1   “从右到左显示”
  X=X-1
  PUT (X,100),IG,PSET
  NEXT I
  NEXT C
  END
  同理,依上述方法还可以编制出各种各样的动画,诸如弹性碰撞的小球、星星、跳跃前进的画面等等,只要你巧加利用,一定会使你的程序锦上添花。