basic语言 动画制作秘籍Word文档格式.docx

上传人:b****5 文档编号:20470734 上传时间:2023-01-23 格式:DOCX 页数:55 大小:43.15KB
下载 相关 举报
basic语言 动画制作秘籍Word文档格式.docx_第1页
第1页 / 共55页
basic语言 动画制作秘籍Word文档格式.docx_第2页
第2页 / 共55页
basic语言 动画制作秘籍Word文档格式.docx_第3页
第3页 / 共55页
basic语言 动画制作秘籍Word文档格式.docx_第4页
第4页 / 共55页
basic语言 动画制作秘籍Word文档格式.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

basic语言 动画制作秘籍Word文档格式.docx

《basic语言 动画制作秘籍Word文档格式.docx》由会员分享,可在线阅读,更多相关《basic语言 动画制作秘籍Word文档格式.docx(55页珍藏版)》请在冰豆网上搜索。

basic语言 动画制作秘籍Word文档格式.docx

动画环境的设置、动画背景的制作、运动物体的制作和运动过程的设计。

其中最关键的是动画环境的设置和运动过程的设计,它们直接关系到动画的质量与成败。

与其有关的BASIC命令和语句将在下面几节详细介绍。

由于目前BASIC语言版本众多,在以下各节的演示程序中,我们只给咄QUICKBASIC(V4.5)下的示范程序,所采用的计算机为386/DX40,SVGA彩显。

我们尽量使演示程序与机器硬件无关,但是考虑到不同类型的计算机数据的处理速度是不同的,因此希望朋友们所采用的机型也最好不要低于286,否则效果难以保证。

没有QUICKBASIC(V4。

5)的朋友们也可以使用DOS5。

0或者DOS6。

0中附带的QUICKBASIC,它们可以兼容,区别只在于后者没有编译功能。

大部分的演示程序也能够在TURBOBASIC环境下运行,不能执行的将给出具体说明。

三、环境设置——动画的舞台

制作一套计算机动画就好象排演一幕戏剧。

动画环境的设置就好比戏剧将要演出的舞台。

舞台的大小、灯光直接影响到戏剧性的演出效果,同样的道理,动画环境的设置也直接影响到动画本身的效果。

它的作用不仅仅在于要为动画提供一个可以利用的活动空间,而且影响到动画是否可以移植到其它类型的计算机上运行。

计算机的显示器、显示卡、显示模式是多种多样的,比较常见的一般有CGA、EGA、VGADG三种显示器。

通常也用它们代表三种不同的显示模式。

在BASIC语言中有一个SCREEN语句专门用于设置显示器的显示模式。

但是需要注意不同的BASIC版本的SCREEN语句设置出的显示模式可能是不完全相同的。

QUICKBASIC(V4。

5)可以设置的显示状态有以下一步10种:

SCREEN值

1

2

3*

7

8

显示模式

CGA

HERC

EGA

显示颜色

4

16

分辨率

320×

200

640×

200

720×

348

320×

640×

9

10

11

12

13

VGA

256

350

350

480

*此模式需要大力神显示卡。

不同的显示模式所能提供的动画表演空间是不同的。

分辨率较低的画面显得粗糙,却能提供较多的颜色;

分辩率较高的画面细腻,却只能提供较少的颜色。

鱼与熊掌不可兼得的情况下,我们一般选用模式12,即VGA16色、640×

480的显示模式。

下面的动画程序将演示不同的显示模式对动画产生的影响。

REMMODE-SHOW.BAS

CLS:

INPUT”Selectinputscreenmode”;

mode

x=50:

y=50:

c=1

SELECTCASEmode

CASE1

maxx=319:

maxy=199:

maxc=4

CASE2

maxx=640:

maxc=2

CASE7

maxc=16

CASE8

maxx=639:

CASE9

maxy=349:

CASE10

CASE11

maxy=479:

CASE12

CASE13

maxc=256

CASEESECT

PRINT”ERRORMODE”:

END

ENDSELECT

SCREENmode

x0=x:

y0=y:

x1=maxx-x:

y1=maxy-y

WHILEINKEY$=””

LINE(x0,y0)-(maxx-x0,maxy-y0),c

IFy0=yTHENx0=x0+1

IFx0=x1ANDy0=yTHENC=C+1

IFx0=x1THENy0=y0+1

IFy0=y1ANDx0=x1THENC=C+1

IFy0=y1THENx0=x0-1

IFx0=xANDy0=y1THENC=C+1

IFx0=xTHENy0=y0-1

IFy0=yANDx0=xTHENC=C+1

IFc>

maxcTHENc=0

四、动画体的制作——角色的创造

我们已经有了一个舞台,为了上演这幕戏剧我们还需要演员扮演一些角色可以是一个复杂的图形,也可以是一个线段、一个圆、甚至是一个点。

在这方面BASIC语言提供了相当丰富的语句。

我们先来看一个由点的运动完成的动画。

REMSINSHOW。

BAS

SCREEN12:

pi=3.14159

FORi=0TO839

PSET(i,50*SIN(4*pi*i/639)+239),1

PRESET(i-200,50*SIN(4*pi*(i-200)/639)+239)

FORn=0TO1500:

NEXTn

这个程序很简单,它形象地表现了一条线段沿着正弦曲线“爬”过屏幕。

当动画的运动主体比较简单时,需要考虑的因素也会相对减少,只需要给出它们的运动轨迹就可以了。

我们再来看一个复杂一点的例子。

REMCIRCSHOW。

r=10:

p=0:

c=1:

b=0:

pi=3。

14159

x=r*COS(2*pi*p/360)+319:

y=0。

8*r*SIN(2*pi*p/360)+239

LINE(319,239)-(x,y),c:

CIRCLE(x,y),2,c

IFr=240THENb=1

IFb=1THENr=r-1/2

IFb=0THENr=r+1/2

IFr=10THENb=0

IFr=10ORr=240THENc-c+1

15THENc=1

p=p+7

这个程序中的运动相对复杂一些,但是它在屏幕上构成了一个周而复始循环不息的动态图案。

在动画的运动主体相对简单时,动画的质量基本上取决于物体运动轨迹的选择。

一幕优秀的戏剧并不一定要有过于复杂的情节,同样,一个高质量的动画并不一定需要一个复杂的运动轨迹来支持它。

请看下面的实例:

REMLINESHOW.BAS

x1=10;

y1=10:

x2=10:

y2=10

dx1=2:

dy1=2:

dx2=3;

dy2=3:

n=0

LINE(x1,y1)-(x2,y2),c

x1=x1+dx1:

y1=y1+dy1:

x2=x2+dx2:

y2=y2+dy2

IFx1<

0ORx1>

639THENdx1=-dx1

IFy1<

0ORy1>

479THENdy1=-dy1

IFx2<

0ORx2>

639THENdx2=-dx2

IFy2<

0ORy2>

479THENdy2=-dy2

n=n+1

IFn>

400THENc=c+1

400THENn=0

15THENc=0

五、图案的构成——复杂角色的处理

尽管我们已经知道了许多产生计算机动画的方法,并且已经能够制作一些简单的动画,但是离我们所希望有目标还相差很远。

在更多的时候,我们希望产生运动的是一个具体的物体、一个多彩的画面而不是一个单调的线段或者孤零零的点。

只有这些具体的东西才能更生动地表达我们自身的意愿。

那么就让我们来创造一个较为复杂的角色一架航天飞机的背影。

REMPLANE。

Sa$=”f1d20f3r3e3u3h313g3d3f3r20d1148u1r20”

sb$=”e3u3h313g3d3f3r3e3u20e1bm+5,+15u5h3

l1”

sc$=”bm-2,0l1g3d5u2m-19,+11bm+48,0m-19,

-11”

s$=sa$+sb$+sc$

SCREEN12:

CLS:

PSET(319,300)

DRAWs$

在这里我们大体上勾画了一架航天飞机轮廓。

在进行下下一步制作之前,有必要熟悉一下这里我们使用的DRAW语句。

DRAW语句的功能是依据给出的字符串参数在显示器上绘图。

它的使用格式程序中已经给出,我们重点介绍它所需要的字符串中每个参数代表的绘图意义。

事实上,我们可以把上面程序中s$看成一段由特殊命令组成的程序,每个命令的作用都是相对前一个参考点作移动:

un-向上移动dn-向下移动ln-向左移动rn-向右移动

en-右上方对角移动fn-右下方对角移动

gn-左上方对角移动hn-左下方对角移动

mx,y-即可做绝对移动也做相对移动:

如果x前面有加号(+)或减号(-),为相对移动,否则为绝对移动.

每个命令后面的”数值”n表示将要移动的距离.注意!

这里并不真正存在数值,所谓的”数值”实质上是一个数学字符.DRAW语句中不能直接引用数值,下面的语句将被视为非法:

n=3:

DRAW”d”+n

DRAW语句中还提供了两个命令前缀:

b-移动但不画图n-移动后返回原先的位置

今后我们还将遇到的命令还有:

an-设置一个角,n为0时表示0度,1表示90度,2表示180度,3表示270

tan-转动一个角,n的值可在-360到+360之间,n为正则逆时针旋转,n为负则顺时针旋转cn-设置颜色,n为颜色号

sn-设置比例因子.n的范围为1至此255,如n为8,则比例因子为2,用此命令设置的比例因子,乘上u,d,l,r,e,f,g,h以及相对移动的m命令中给定的距离,就可以决定实际移动的距离.n的默认值是4,即比例因子为1

pkcolor,boundary-从现行坐标(x,y)开始,用collr表示的颜色进行填充,遇到用boundary表示的颜色边界就停止.color和boundary都是颜色号

在DRAW语句中en,fn,gn,hn所产生的相对移动距离,并不是n值的长度面是表示移动到点(x+n,y+n).例如:

f5等价于line-step(+5,+5).使用DRAW语句一定要注意给出图形起始点的坐标,这一点相当重要.

DRAW语句的其它功能,以后我们还将逐步介绍.事实上,DRAW语句所拥有的绘图功能,用BASIC语言中的其它语句也能够实现.二者在图形的绘制上没有本质区别,但是它们在实现计算机动画的制作方面所表现的差异我们在下一节就会看到.

(二)

六、动作的产生_整体的移动

现在我们来让航天飞机飞起来.

REMPLANE-BAS

sa$=”f1d20f3r3e3u3h313g3d3f3r20d1148u1r20”

sb$=”e3u3h3l3g3d3f3r3e3u20e1bm+5,+15u5h3l1”

sc$=”bm-2,0l1g3d5u2m-19,+11bm+48,0m-19,-11”

s$=sa$+sb$+sc$:

y=300

CLS

FORi=60TO100

PSET(39,y-i)

NEXTi

与上一节的程序PLANE.BAS相比,程序PLANE-1.BAS实际上仅仅是在不断地改变DRAW语句的起始点坐标.使用DRAW语句的优点就在于我们可以把移动图像的每一个线段,简化为移动一个点.

现在航天飞机是动起来了,但是显示的图像却杂乱无章,其原因是我们没有在屏幕上及时擦除旧的图像.请务必牢记:

必须适时地擦除旧的图像,这是保证复杂图案产生运动的第一个铁的原则.

在屏幕上擦除一个复杂的图像可以用改变图像颜色的方法,也可以使用BASIC语言中的CLS语句.在这里我们提倡尽量避免使用CLS语句,因为更多的时候我们需要的仅仅是更新屏幕上的一小部分.

REMPLANE-2.BAS

sc$=”bm-2,0l1g3d5u2m-19,+l1bm+48,0m-19,-l1”

s$=sa$+sb$+sc$:

y=300:

sl$=”c0”+s$

PSET(319,y-i)

DRAWs1$

现在我们的航天飞机真正地动起来了,但是它运动的似乎太快了而且总是在不停地闪烁。

这里我们遇到了制作动画的第二个铁的原则——延时。

将要运动的图像必须在屏幕上停留一段时间,以使观察者认清它们。

简单的延时处理是在程序中的适当位置加入一个空循环,如我们在开篇中接触到的第一个动画演示程序STARSHOW。

BAS。

但是在不同类型的计算机上完成同样的累加法运算所需要的时间是不同的,运用一个同样的累加延时程序在一台机器上可能效果出众,但在其它不同的机器上则可能快如闪电或者慢如牛车。

为了使我们的动画能够尽可能地在所有的机器上产生同样的效果,我们要使用BASIC语言中的TIMER函数。

TIMER函数的作用是得到以秒为单位计算自午夜零点以来所经过的时间。

在TURBOBASIC中它的精度也能达到小数点后七位,在QUICKBASIC中的精度也能达到小数点后两位,即百分之一秒。

利用它我们就可以尽可能的使我们的动画程序与机器的硬件速度无关了。

事实上,TIMER函数在计算机动画制作上的作用和意义远不止如此,关于这一点在以后的演示程序中我们将会看到。

如果说动画本身是一幕戏剧,那么我们是编剧,而函数TIMER却是导演。

让我们再来看看加入TIMER延时后的程序PLANE-3。

sa$=”f1d20f3r3e3u3h3l3g3d3f3r20d1148u1r20”

sb$=”e3u3h3l3g3d3f3r3e3u20e1bm+5,+15u5h3l1”

sc$=”bm-2,0l1g3d5u2m-19,+l1bm+48,0m-19,-l1”

s$=sa$+sb$+sc$:

s1$=”c0”+s$

bagin=TIMER

DRAWs$

WHILETIMER-bagin<

0.02

PRESET(319,y-i)

七、运动的改进——视觉的效果

用现在,航天飞机起飞了。

但是它的动感并不强烈,看来我们还必须对其加以改进。

从视角上讲,既然我们看到的是航天飞机的背影,那么,飞机起飞后,它的图象应该由大变小,远离我们而去。

实现这一效果所面临的问题就是如何不断地改变飞机画面的比例。

DRAW语句的另外一个字符串命令的格式:

”X=”+VARPTR$(n)来实现这一目的。

这里的X代表以前讲过的命令字符,n则可以是一个数字变量。

现在我们可以改进我们的程序了。

REMPLANE-4。

Sa$=”f1d20f3r3e3u3h3l3g3f3r20d1148u1r20”

Sb$=”e3u3h3l3g3d3f3r3e3u20e1bm+5,+15u5h3l1”

Sc$=”bm-2,0l1g3d5u2m-19,+l1bm+48,0m-19,-11”

S$=sa$+sb$+sc$:

s1$=”c0”+s$:

n=42

Bagin=TIMER

DRAW”s=”+VARPTR$(n)+S$

.02

DRAW”s=”+VARPTR$(n)+s1$

n=n-1

现在,我们已经有了一个舞台并且创造了一个角色.我们还需要制造一个舞台背景来烘托气氛.很自然地,我们想到应该为航天飞机的动画制作一幅星空背景.

REMPLANE-5.BAS

Sa$=”f1d20f3r3e3u3h3l3g3d3f3r20d1148u1r20”

Sb$=”e3u3h3l3g3d3f3r3e3u20e1bm+5,+15u5h3l1”

n=42

FORI=1TO100

PSET(640*RND,200*RND),IMOD16

DRAW”s=”+VARPTR$(n)+S$

八、小结——制作简单动画的要领与技巧

我们现在已经能够制作一个比较简单的动画了。

在进行下一步之前,我们先来总结一下目前已经掌握的几种动画制作要领和相关语句。

1.不同的显示模式产生的动画环境和效果是不同的。

2.简单的动画图案可通过设定一些运动轨迹的数学方程来实现。

3.比较复杂的动画主体可以通过DRAW语句绘制。

4.使用DRAW语句可以使整个动画主体的移动转化为一个点的移动。

5.DRAW语句还是具有改变动画主体大小比例的妙用。

6.动画的主体在运动过程中必须及时擦除旧的画面。

7.TIMER函数可以为动画提供准确的延留时间,使观察者看清画面而与计算机的运算速度(硬件性能)无关。

作为一个练习,希望有兴趣的朋友们自己制作一个动画时钟。

要求时钟的秒针运动完全与真实秒针的运动时间相同,而不是简单的模仿。

并观察十分钟后的误差。

一般来说,动画的制作分为动画运动主体的制作、背景的处理和动画剧本合成。

关于动画中运动主体的制作,并不是仅仅有采用DRAW语句一种方法。

有时这人运动主体可能是一个相当复杂的图案或文字,仅仅依靠DRAW语句很难描绘出来。

这各复杂主体的运动一般使用PUT、GET语句,由于这对语句的用法涉及到不同的显示模式和不同的数组类型,我们将它们的用法在以后的章节中单独介绍。

大多数情况下,动画中运动主体的变化并不大,它的处理也相对简单。

动画画面背景的制作也并不复杂,但是处理技巧却是五花八门。

其中主要的有画面的平移、垂直滚动、画面存储、部分存储、局部放大等等。

大多数的计算机游戏对于动画背景的制作是通过对显示寄存器的处理来实现的,许多地方涉及到汇编语言、BIOS、显示卡类型及I/O端口的处理。

虽然在BASIC语言中也可以实现上述过程,但将涉及到复杂的计算机显示原理及内存地址处理。

其中一些寄存器如果发生误操作,将会造成计算机硬件的永久性损坏。

因此,我们只是采取BASIC语言中现有的语句来模拟这几种技巧的处理。

相对前面两者而言,动画剧本的合成则要复杂得多。

一般情况下,它要包括角色的处理、时序的处理、颜色的处理三个方面。

剧本合成是实现计算机动画的关键。

它不仅是程序自身的框架主体,而且直接关系到动画的质量。

下面我们给出一个全动感的动画示例,请大家按照上面的介绍分析体会这个动画的产生过程,为我们在下一节编写复杂的动画剧本做一点理论准备。

REMPLANE-6.BAS

i=60

DIMx%(300),y%(300)

FORi=1TO200

X%(i)=419*((1-RND)*419/319)

Y%(i)=339((1-RND)*339/239)

Sc$=”bm-2,0l1g3d5u2m-19,+11bm+48,0m-19,-11”

sl$=”c0”+s$:

m=42:

s2$=”c15”+s$

FO

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 哲学历史

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1