通过前面的基础准备,我们已经可以开始实现一个简单的弹球游戏了,这一节,我们先制作一个小球下落的动态效果。
那么既然要实现动态效果,本质就是游戏动画的原理,大家可以思考,小球从一个位置变到另一个位置,本质就是原来的位置擦除,在新的位置的重绘即可,是不是这样?
接着这个思路,如果我们反复执行下面四个步骤,会怎样?
绘制一个小球
等待x秒
擦除小球
将原先小球的位置下移
大家细想每一步,然后我们开始准备我们的代码。这一次,我们把小球再弄小一些,我们再绘制小球的时候,圆心的坐标我们不必写死(即固定的数值),而是用x,y变量替代x初始化为200,y初始化为10,从x轴200的位置下落,每次下落20,即fillcircle(x,y,10); 然后利用Sleep函数让小球停留,即可实现动态下落的效果。完整代码如下:
//弹球游戏 //www.dotcpp.com #include <graphics.h> // 引用图形库头文件 #include <conio.h> int main() { int i; int x=200,y=10; //表示小球的圆心坐标 initgraph(640, 480); // 创建绘图窗口,大小为 640x480 像素 for(i=0;i<100;i++) { //绘制小球图案 setfillcolor(GREEN); fillcircle(x,y,10); Sleep(100); //原位置擦除小球图案 setcolor(BLACK); setfillcolor(BLACK); fillcircle(x,y,10); y=y+10; //向下移动小球位置 } getch(); // 按任意键继续 closegraph(); // 关闭绘图窗口 return 0; }
编译运行后效果如下:
请大家自行上机实验理解程序,并尝试将小球向右水平移动。
好,大家完成之后,接下来我们可以尝试将小球从屏幕中心的位置开始,斜着像右下角移动,我们可以首先将圆心的位置x,y设置为屏幕的一半,每次的变化由原来的只更改y轴方向变为x轴和y轴都递增,实现向右下角的移动。代码如下:
//弹球游戏 //www.dotcpp.com #include <graphics.h> // 引用图形库头文件 #include <conio.h> #define WIDTH 640 #define HIGH 480 int main() { int i; int x=WIDTH/2,y=HIGH/2; //表示小球的圆心坐标 initgraph(WIDTH, HIGH); // 创建绘图窗口,大小为 640x480 像素 for(i=0;i<100;i++) { //绘制小球图案 setfillcolor(GREEN); fillcircle(x,y,10); Sleep(50); //原位置擦除小球图案 setcolor(BLACK); setfillcolor(BLACK); fillcircle(x,y,10); x=x+5; y=y+5; } getch(); // 按任意键继续 closegraph(); // 关闭绘图窗口 return 0; }
运行后效果如下:
请大家自行理解并尝试
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程