登录 | 注册

首页 | 学习中心 | 下载中心 | 知识大全 | 作文 | 常识 | 加入收藏 | 网站地图

您当前位置:多思学习网知识频道电脑学习软件技巧用BASIC语言实现的动画技术举例

用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 "";

[1] [2]  下一页

,用BASIC语言实现的动画技术举例
《用BASIC语言实现的动画技术举例》相关文章

tag: 技术  动画  软件技巧,软件技巧大全,电脑学习 - 软件技巧

联系我们 | 网站地图 | 幼教大全 | 试题下载 | 电脑学习 | 加入收藏


幼儿园教案_ 教案模板_ 课件模板_ 教学反思_ 教学计划


多思学习网 1 2 3 4 5 6