用BASIC语言实现的动画技术举例
11-08 12:37:21软件技巧
浏览次数:145次
标签:软件技巧大全,http://www.duosi8.com
用BASIC语言实现的动画技术举例,
正如我们在一些电视游戏上看到的那样,如碰撞、跳跃、奔跑、发射、爆炸等一系列迷人的效果,都是动画技术的应用结果。我们虽然无法运用BASIC实现那些错综复杂的大型画面,其中有分辨率的不足,也有速度不够的因素,但通过动画技术的学习,至少可以了解其设计原理,只要运用得当,同样也能制作出栩栩如生的动态游戏。
与电影、电视,尤其是与美术卡通片相似,计算机动画技术利用了计算机能高速显示图形的特点,以适应人的视觉暂停现象。例如,我们想让某一形体移动,所要作的工作只是画出该图形,接着消除它,然后在稍微不同的位置重复这一过程。 这种“显示__消除__(换形或换位)显示”的方法,就是画面活动的基本原理。从另一方面讲,即使在电影中(每秒钟放映24幅胶片)或是在电视中(每秒钟显示25帧图像),也会造成闪烁和跳跃感。实际运用里,电影技术采取了“遮挡放映法”,电视技术则采取了“隔行扫描法”,设法避免闪烁现象。我们也准备采用某种“延时”的技巧尽可能地改善屏幕动画的显示效果。
下面将以移动图形块为例,从不同角度介绍上述动画的形成原理。
[程序1] 图形块水平移动
10 SCREEN 0,1:WIDTH 40:CLS
100 FOR X=1 TO 40
110 LOCATE 10,X:PRINT "";
120 LOCATE 10,X:PRINT " ";
130 NEXT X
运动后可以看到,由于“显示__消除”过程的不断交替,图块迅速水平穿越屏幕,实现了动画。不过在显示过程中有明显的闪烁现象,这是因为显示图块和消除图块时间相等,显示时间还不足以使人产生视觉暂停效应。为此,我们应当给显示过程以适当的延时,插入下列语句:
115 FOR T=1 TO 1000:NEXT T
插入的空循环,可通过改变循环终值调整延时时间。请读者注意,由于机器的速度不一,循环终值应根据具体情况调整后设定。此时,虽然图块的运动速度减慢,但较好地消除了跳跃感。
[程序2] 图形块垂直移动
10 SCREEN 0,1:WIDTH 40:CLS
100 X=20
110 FOR Y=1 TO 24
120 LOCATE Y,X:PRINT "";
125 FOR T=1 TO 1000:NEXT T
130 LOCATE Y,X:PRINT " ";
140 NEXT Y
在编程时应注意,无论是X值还是Y值都不允许超界。
上两例循环语句的步长均为1,即速度为单一方向(水平或垂直)的常量1。如果同时考虑速度的两个分量:水平分量H,垂直分量V,且赋予不同的数值,就可产生斜率不同的斜向运动。
[程序3] 斜向移动的图形块
10 SCREEN 0,1:WIDTH 40:CLS
100 X=1:Y=1
110 V=1:H=1
120 LOCATE Y,X:PRINT "";
125 FOR T=1 TO 1000:NEXT T
130 LOCATE Y,X:PRINT " ";
140 X=X+H:Y=Y+V
150 IF X>40 OR Y>24 THEN 170
160 GOTO 120
170 END
我们很容易通过改变速度增量H或水平增量V值,产生不同的斜度效果。比如令V=1,H=2,加大了水平方向的运动速度。注意150句是必不可少的,它控制了图块的运动范围,使坐标不至于超出界限。
在[程序3]里,我们先画了图块,然后延时,再把它消除。另一种常用的方案是先在原位消除,然后在新的位置显示图块,并启用另外两个变量保存坐标值,以便循环返回时把图块消除,如下列程序所示:
[程序4] 另一种斜向运动程序方案
10 SCREEN 0,1:WIDTH 40:CLS
100 X=1:Y=1:M=1:N=1
110 H=1:V=1
120 LOCATE N,M:PRINT " ";
130 LOCATE Y,X:PRINT "";
140 N=Y:M=X
150 X=X+H:Y=Y+V
160 IF X>40 OR Y>24 THEN END
170 GOTO 120
由于图块显示后要执行若干语句,可以代替空循环的延时作用,这种方法有时显得更灵活。
假如把[程序3]作一点变形,在运动图块即将超界的时刻改变水平或垂直的运动方向,则图块将在屏幕里反弹碰撞,无休无止地运动。只要再添上场地线或桌边线,不就是一场球赛的主要情节吗?
[程序5] 反弹碰撞的图块
10 SCREEN 0,1:WIDTH 40:CLS
100 X=1:Y=1:V=1:H=1
110 LOCATE Y,X:PRINT "";
FOR I=1 TO 1000:NEXT I
130 LOCATE Y,X:PRINT " ";
140 IF X<=1 OR X>=40 THEN H=-H
150 IF Y<=1 OR Y>=24 THEN V=-V
160 X=X+H:Y=Y+V
170 GOTO 110
若再次在[程序3]基础上作些修改,不仅改变某方向上的移动位置,而且改变其移动速度,即在一方向或两方向同时引进“加速度”,该图块必然沿着曲线运动,产生变幻无穷的效果。例如,引入垂直加速度,使图块沿抛物线下落,模拟飞机扔炸弹的运动轨迹:
[程序6] 曲线运动的图块
10 SCREEN 0,1:WIDTH 40:CLS
100 X=1:Y=1
110 V=0:H=2:A=1
120 LOCATE Y,X:PRINT "";
,用BASIC语言实现的动画技术举例
正如我们在一些电视游戏上看到的那样,如碰撞、跳跃、奔跑、发射、爆炸等一系列迷人的效果,都是动画技术的应用结果。我们虽然无法运用BASIC实现那些错综复杂的大型画面,其中有分辨率的不足,也有速度不够的因素,但通过动画技术的学习,至少可以了解其设计原理,只要运用得当,同样也能制作出栩栩如生的动态游戏。
与电影、电视,尤其是与美术卡通片相似,计算机动画技术利用了计算机能高速显示图形的特点,以适应人的视觉暂停现象。例如,我们想让某一形体移动,所要作的工作只是画出该图形,接着消除它,然后在稍微不同的位置重复这一过程。 这种“显示__消除__(换形或换位)显示”的方法,就是画面活动的基本原理。从另一方面讲,即使在电影中(每秒钟放映24幅胶片)或是在电视中(每秒钟显示25帧图像),也会造成闪烁和跳跃感。实际运用里,电影技术采取了“遮挡放映法”,电视技术则采取了“隔行扫描法”,设法避免闪烁现象。我们也准备采用某种“延时”的技巧尽可能地改善屏幕动画的显示效果。
下面将以移动图形块为例,从不同角度介绍上述动画的形成原理。
[程序1] 图形块水平移动
10 SCREEN 0,1:WIDTH 40:CLS
100 FOR X=1 TO 40
110 LOCATE 10,X:PRINT "";
120 LOCATE 10,X:PRINT " ";
130 NEXT X
运动后可以看到,由于“显示__消除”过程的不断交替,图块迅速水平穿越屏幕,实现了动画。不过在显示过程中有明显的闪烁现象,这是因为显示图块和消除图块时间相等,显示时间还不足以使人产生视觉暂停效应。为此,我们应当给显示过程以适当的延时,插入下列语句:
115 FOR T=1 TO 1000:NEXT T
插入的空循环,可通过改变循环终值调整延时时间。请读者注意,由于机器的速度不一,循环终值应根据具体情况调整后设定。此时,虽然图块的运动速度减慢,但较好地消除了跳跃感。
[程序2] 图形块垂直移动
10 SCREEN 0,1:WIDTH 40:CLS
100 X=20
110 FOR Y=1 TO 24
120 LOCATE Y,X:PRINT "";
125 FOR T=1 TO 1000:NEXT T
130 LOCATE Y,X:PRINT " ";
140 NEXT Y
在编程时应注意,无论是X值还是Y值都不允许超界。
上两例循环语句的步长均为1,即速度为单一方向(水平或垂直)的常量1。如果同时考虑速度的两个分量:水平分量H,垂直分量V,且赋予不同的数值,就可产生斜率不同的斜向运动。
[程序3] 斜向移动的图形块
10 SCREEN 0,1:WIDTH 40:CLS
100 X=1:Y=1
110 V=1:H=1
120 LOCATE Y,X:PRINT "";
125 FOR T=1 TO 1000:NEXT T
130 LOCATE Y,X:PRINT " ";
140 X=X+H:Y=Y+V
150 IF X>40 OR Y>24 THEN 170
160 GOTO 120
170 END
我们很容易通过改变速度增量H或水平增量V值,产生不同的斜度效果。比如令V=1,H=2,加大了水平方向的运动速度。注意150句是必不可少的,它控制了图块的运动范围,使坐标不至于超出界限。
在[程序3]里,我们先画了图块,然后延时,再把它消除。另一种常用的方案是先在原位消除,然后在新的位置显示图块,并启用另外两个变量保存坐标值,以便循环返回时把图块消除,如下列程序所示:
[程序4] 另一种斜向运动程序方案
10 SCREEN 0,1:WIDTH 40:CLS
100 X=1:Y=1:M=1:N=1
110 H=1:V=1
120 LOCATE N,M:PRINT " ";
130 LOCATE Y,X:PRINT "";
140 N=Y:M=X
150 X=X+H:Y=Y+V
160 IF X>40 OR Y>24 THEN END
170 GOTO 120
由于图块显示后要执行若干语句,可以代替空循环的延时作用,这种方法有时显得更灵活。
假如把[程序3]作一点变形,在运动图块即将超界的时刻改变水平或垂直的运动方向,则图块将在屏幕里反弹碰撞,无休无止地运动。只要再添上场地线或桌边线,不就是一场球赛的主要情节吗?
[程序5] 反弹碰撞的图块
10 SCREEN 0,1:WIDTH 40:CLS
100 X=1:Y=1:V=1:H=1
110 LOCATE Y,X:PRINT "";
FOR I=1 TO 1000:NEXT I
130 LOCATE Y,X:PRINT " ";
140 IF X<=1 OR X>=40 THEN H=-H
150 IF Y<=1 OR Y>=24 THEN V=-V
160 X=X+H:Y=Y+V
170 GOTO 110
若再次在[程序3]基础上作些修改,不仅改变某方向上的移动位置,而且改变其移动速度,即在一方向或两方向同时引进“加速度”,该图块必然沿着曲线运动,产生变幻无穷的效果。例如,引入垂直加速度,使图块沿抛物线下落,模拟飞机扔炸弹的运动轨迹:
[程序6] 曲线运动的图块
10 SCREEN 0,1:WIDTH 40:CLS
100 X=1:Y=1
110 V=0:H=2:A=1
120 LOCATE Y,X:PRINT "";
,用BASIC语言实现的动画技术举例
- ·上一篇:迅雷出现假死怎么办
- ·下一篇:搜狗输入法日期快捷输入设定
《用BASIC语言实现的动画技术举例》相关文章
- › 使用BASIC的集成环境
- › 用BASIC语言解决逻辑推理题目
- › 用BASIC语言实现的动画技术举例
- 在百度中搜索相关文章:用BASIC语言实现的动画技术举例
热门推荐
- · 为何QQ总弹出安全登录验证2则
- · 多媒体升级时常见故障的处理
- · 利用硬盘驱动器号制作防扩散FOXPRO程序
- · 高速视频转换借力CUDA
- · 在KMPlayer中手动切换解码器
- · 如何突破IP加MAC绑定
- · 如何让ACDSee成为默认的图片浏览器
- · SnagIt连续抓以多个窗口
- · SnagIt直接截取灰度图片
- · Nero快速制作精美的光盘封面
- · 完美卸载XP快速卸载顽固软件
- · VoptXP测试驱动器性能
- · VirturlDriver让虚拟光驱开机时自动加载
- · 通过递归调用来搜索文件
- · AutoCAD复制粘贴图纸导致死机
- · 监控软件导致QQ无法登录
- · 提高WindowsXP启动速度的方法
- · Office 2007无法正常卸载怎么办
- · 如何用批处理一次建立或删除多个目录
- · 教你Windows百毒不侵的13个妙招
- · ATI显卡在线看电影时花屏应该如何解决