BestAns

路漫漫其修远兮,吾将上下而求索

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

教程总目录:https://www.codeabc.cn/bestans/post/concise-lesson-contents(里面包括VC下的graphics.h的配置方法)

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

  1. 绘制图像
  2. 延时
  3. 擦掉图像

循环以上即可实现动画。

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

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

int 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();
	return 0;
}

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

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

int 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();
	return 0;
}

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

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

分享到