画面是怎么动起来的
翻页动画
不知道小朋友们有没有玩过手翻书。当我们用很快的速度翻书时,因为相邻的两页图画是连续且不同的,所以就会产生动画的效果。这个例子告诉我们:
动画其实是由一系列相似但不同的图画快速切换形成的,包括
- 位置的移动
- 画面的切换
位置的移动
一个最简单的动画可以这样制作:
- 大家在一页纸上画一个吃豆人
- 然后再下一页纸上画同样的吃豆人,只是小球在纸上的位置不同
- 重复第2步,直到画够了
因为每次吃豆人的位置不同,所以在快速翻动的时候会形成移动的效果
- 因为吃豆人的位置是会变的,所以我们用变量来存放它的位置
画面的切换
在奔跑的吃豆人中,我们总共只用到了两张图片。吃豆人的嘴巴吧唧吧唧的效果就是通过在这两张图片之间的不断切换形成的
用C++画出上面的两个吃豆人有些复杂,所以在我们用其他方式画好这两个吃豆人之后,将它们保存成图片,接下来我们需要把图片加载到程序里
循环——重复的艺术
循环就是重复地做某些事情,计算机做起重复的事情来要比人类优雅很多
吃豆人在跑起来的时候,只做了两件事情。整个过程其实就是这两件事情的循环往复,也就是1,2,1,2,1,2…………
- 位置在前一次的基础上右移10个单位
- 张嘴或者闭嘴,也就是呈现一张图片
计算机很擅长做重复的事情的,只要你通过正确的语句告诉他怎么做,做多少次
- for循环——重复指定的次数
我们让吃豆人图片每次向右移动10,当第奇数次移动时张嘴,第偶数次移动时闭嘴。做50次。用for循环可以这样写
全部代码
以下就是我们完整的代码,你学会了吗?
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
int main()
{
initgraph(1000, 1000);
int left = 10;
int top = 50;
setbkcolor(WHITE);
cleardevice();
IMAGE img1, img2;
loadimage(&img1, L"C:\Users\ginger\Desktop\ball.png", 200, 200); //载入图片,使用L+"绝对路径"
loadimage(&img2, L"C:\Users\ginger\Desktop\ball2.png", 200, 200);
for (int i = 1; i <= 50; i++) {
if (i % 2 == 0) {
cleardevice();
putimage(left, top, &img1);
}
else if (i % 2 == 1) {
cleardevice();
putimage(left, top, &img2);
}
left += 10;
Sleep(150);
}
_getch();
closegraph();
return 0;
}