画面如何移动?翻页动画不知道孩子们有没有玩过翻书。当我们以极快的速度翻一本书时,由于相邻两页的画面是连续的、不同的,所以会产生动画效果。这个例子告诉我们:事实上,动画是
翻页动画
不知道孩子们有没有玩过翻书。当我们以极快的速度翻一本书时,由于相邻两页的画面是连续的、不同的,所以会产生动画效果。这个例子告诉我们:
事实上,动画是由一系列相似但不同的画面快速切换而成的,包括
位置的移动画面的切换
位置的移动一个最简单的动画可以这样制作:
大家在一页纸上画一个吃豆人然后再下一页纸上画同样的吃豆人,只是小球在纸上的位置不同重复第2步,直到画够了
因为每次吃豆人的位置都不一样,所以快速翻转的时候会形成移动的效果。
因为吃豆人的位置是会变的,所以我们用变量来存放它的位置
屏幕切换
在运行的吃豆人中,我们总共只用了两张图。吃豆人嘴巴的效果就是在这两个画面中不断切换形成的。
用C++画上面两个吃豆人有点复杂,所以我们用其他方式画完这两个吃豆人后,保存为图片,然后需要把图片加载到程序中。
循环——重复的艺术
它意味着重复做某事。在做重复性的事情上,计算机比人类优雅得多。
吃豆人跑的时候只做了两件事。整个过程实际上就是这两件事的循环,即1,2,1,2,1,2……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;}