VC绘图/游戏简易教程--6:实现简单动画
作者:BestAns

教程总目录:http://www.easyx.cn/skills/View.aspx?id=45 (里面包括VC下的graphics.h的配置方法)

所谓动画,其实是连续显示一系列图形而已。
结合到程序上,我们需要以下几个步骤:

1. 绘制图像
2. 延时
3. 擦掉图像
循环以上即可实现动画。

举一个例子,我们实现一条直线从上往下移动:

#include <graphics.h>
#include <conio.h>

void main()
{
   initgraph(640, 480);

    for(int y=0; y<480; y++)
    {
        // 绘制绿色直线
        setlinecolor(GREEN);
        line(0, y, 639, y);

         // 延时
         Sleep(10);

         // 绘制黑色直线(即擦掉之前画的绿线)
         setlinecolor(BLACK);
         line(0, y, 639, y);
     }

     closegraph();
}

再看一个例子,实现一个圆从左往右跳动:

#include <graphics.h>
#include <conio.h>

void main()
{
	initgraph(640, 480);

	for(int x=100; x<540; x+=20)
	{
		// 绘制黄线、绿色填充的圆
		setlinecolor(YELLOW);
		setfillcolor(GREEN);
		fillcircle(x, 100, 20);

		// 延时
		Sleep(500);

		// 绘制黑线、黑色填充的圆
		setlinecolor(BLACK);
		setfillcolor(BLACK);
		fillcircle(x, 100, 20);
	}

	closegraph();
}

也就是说,移动的间距小、延时短,动画就会越细腻。但当画面较复杂时,会带来画面的闪烁(怎样消除闪烁是以后的话题)。

[作业]
绘制一个沿 45 度移动的球,碰到窗口边界后反弹。

更新时间:2010/4/27